grpc 1.83.1 → 1.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +21 -17
- data/include/grpc/credentials.h +10 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +9 -0
- data/src/core/call/call_filters.h +4 -2
- data/src/core/call/client_call.cc +20 -8
- data/src/core/call/client_call.h +4 -0
- data/src/core/call/interception_chain.cc +2 -0
- data/src/core/call/interception_chain.h +14 -1
- data/src/core/call/metadata.cc +1 -3
- data/src/core/call/metadata_batch.h +13 -5
- data/src/core/call/server_call.cc +31 -14
- data/src/core/call/server_call.h +4 -0
- data/src/core/channelz/text_encode.cc +9 -4
- data/src/core/channelz/v2tov1/convert.cc +2 -2
- data/src/core/client_channel/backup_poller.cc +1 -2
- data/src/core/client_channel/client_channel.cc +6 -33
- data/src/core/client_channel/client_channel_filter.cc +22 -55
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_service_config.cc +3 -19
- data/src/core/client_channel/direct_channel.cc +7 -1
- data/src/core/client_channel/direct_channel.h +2 -2
- data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
- data/src/core/client_channel/subchannel.cc +310 -1058
- data/src/core/client_channel/subchannel.h +44 -329
- data/src/core/client_channel/subchannel_metrics.cc +48 -0
- data/src/core/client_channel/subchannel_metrics.h +60 -0
- data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
- data/src/core/credentials/call/json_util.h +1 -0
- data/src/core/credentials/call/jwt/json_token.cc +10 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
- data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
- data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
- data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
- data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
- data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
- data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
- data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
- data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
- data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
- data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
- data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +32 -67
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
- data/src/core/filter/auth/server_auth_filter.cc +2 -3
- data/src/core/filter/composite/composite_filter.cc +45 -33
- data/src/core/filter/composite/composite_filter.h +5 -4
- data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
- data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
- data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
- data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
- data/src/core/filter/filter_args.h +13 -2
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
- data/src/core/handshaker/security/security_handshaker.cc +9 -6
- data/src/core/lib/channel/channel_stack.cc +3 -0
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
- data/src/core/lib/channel/promise_based_filter.cc +132 -20
- data/src/core/lib/channel/promise_based_filter.h +42 -12
- data/src/core/lib/compression/compression_internal.cc +4 -5
- data/src/core/lib/debug/trace_flags.cc +8 -0
- data/src/core/lib/debug/trace_flags.h +3 -0
- data/src/core/lib/event_engine/ares_resolver.cc +54 -50
- data/src/core/lib/event_engine/ares_resolver.h +3 -2
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
- data/src/core/lib/experiments/experiments.cc +60 -96
- data/src/core/lib/experiments/experiments.h +34 -50
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
- data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/systemd_utils.cc +0 -1
- data/src/core/lib/iomgr/tcp_client.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +23 -15
- data/src/core/lib/iomgr/tcp_server.h +1 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.cc +5 -10
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/vsock.h +3 -1
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
- data/src/core/lib/security/authorization/rbac_policy.h +21 -3
- data/src/core/lib/surface/call.cc +3 -9
- data/src/core/lib/surface/call_utils.h +113 -0
- data/src/core/lib/surface/channel_create.cc +1 -1
- data/src/core/lib/surface/channel_create.h +0 -2
- data/src/core/lib/surface/channel_init.cc +77 -38
- data/src/core/lib/surface/channel_init.h +30 -16
- data/src/core/lib/surface/filter_stack_call.cc +5 -10
- data/src/core/lib/surface/init.cc +13 -27
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -27
- data/src/core/lib/transport/error_utils.h +0 -16
- data/src/core/lib/transport/transport.h +7 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
- data/src/core/load_balancing/rls/rls.cc +28 -11
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
- data/src/core/load_balancing/xds/cds.cc +3 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
- data/src/core/mitigation_engine/mitigation.h +14 -5
- data/src/core/mitigation_engine/mitigation_engine.h +7 -3
- data/src/core/mitigation_engine/mitigation_provider.h +2 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
- data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
- data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +35 -9
- data/src/core/server/server.cc +2 -6
- data/src/core/server/server_config_selector.h +18 -3
- data/src/core/server/server_config_selector_filter.cc +178 -91
- data/src/core/server/server_config_selector_filter.h +58 -3
- data/src/core/server/xds_server_config_fetcher.cc +196 -129
- data/src/core/server/xds_server_config_fetcher.h +49 -0
- data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
- data/src/core/telemetry/histogram.h +94 -14
- data/src/core/telemetry/instrument.cc +179 -74
- data/src/core/telemetry/instrument.h +78 -30
- data/src/core/telemetry/metrics.h +5 -0
- data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
- data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
- data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
- data/src/core/tsi/ssl_telemetry_utils.h +12 -2
- data/src/core/tsi/ssl_transport_security.cc +238 -80
- data/src/core/tsi/ssl_transport_security.h +63 -33
- data/src/core/tsi/tls_telemetry.cc +31 -0
- data/src/core/tsi/tls_telemetry.h +47 -0
- data/src/core/tsi/transport_security.cc +2 -2
- data/src/core/tsi/transport_security.h +1 -1
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
- data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
- data/src/core/util/http_client/httpcli.cc +16 -53
- data/src/core/util/http_client/httpcli.h +0 -7
- data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +3 -9
- data/src/core/util/load_file.h +3 -4
- data/src/core/util/matchers.h +8 -0
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/status_helper.cc +0 -20
- data/src/core/util/status_helper.h +3 -14
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
- data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
- data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
- data/src/core/xds/grpc/xds_client_grpc.h +0 -4
- data/src/core/xds/grpc/xds_cluster.h +1 -0
- data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
- data/src/core/xds/grpc/xds_common_types.cc +0 -91
- data/src/core/xds/grpc/xds_common_types.h +1 -47
- data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
- data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
- data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
- data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
- data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
- data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
- data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
- data/src/core/xds/grpc/xds_http_filter.cc +2 -1
- data/src/core/xds/grpc/xds_http_filter.h +6 -5
- data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
- data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
- data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
- data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
- data/src/core/xds/grpc/xds_listener.cc +2 -0
- data/src/core/xds/grpc/xds_listener.h +5 -0
- data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
- data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
- data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
- data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
- data/src/core/xds/grpc/xds_route_config.cc +2 -0
- data/src/core/xds/grpc/xds_route_config.h +3 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
- data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
- data/src/core/xds/grpc/xds_routing.cc +116 -69
- data/src/core/xds/grpc/xds_routing.h +19 -8
- data/src/core/xds/grpc/xds_tls_context.cc +117 -0
- data/src/core/xds/grpc/xds_tls_context.h +76 -0
- data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
- data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
- data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_call.c +26 -15
- data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +5 -4
- data/src/ruby/spec/call_spec.rb +14 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
- metadata +50 -35
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
- data/src/core/lib/iomgr/resolve_address.cc +0 -59
- data/src/core/lib/iomgr/resolve_address.h +0 -125
- data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
- data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
- data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
- data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
- data/src/core/util/json/json_util.cc +0 -101
- data/src/core/util/json/json_util.h +0 -163
|
@@ -538,6 +538,11 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
|
|
538
538
|
LOG(ERROR) << "Could not create rsa key.";
|
|
539
539
|
goto end;
|
|
540
540
|
}
|
|
541
|
+
#else
|
|
542
|
+
if (bld == nullptr) {
|
|
543
|
+
LOG(ERROR) << "Could not create OSSL_PARAM_BLD.";
|
|
544
|
+
goto end;
|
|
545
|
+
}
|
|
541
546
|
#endif
|
|
542
547
|
it = json.object().find("n");
|
|
543
548
|
if (it == json.object().end()) {
|
|
@@ -562,7 +567,16 @@ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
|
|
562
567
|
tmp_n = nullptr;
|
|
563
568
|
tmp_e = nullptr;
|
|
564
569
|
result = EVP_PKEY_new();
|
|
565
|
-
|
|
570
|
+
if (result == nullptr) {
|
|
571
|
+
LOG(ERROR) << "Could not create EVP_PKEY.";
|
|
572
|
+
goto end;
|
|
573
|
+
}
|
|
574
|
+
if (EVP_PKEY_set1_RSA(result, rsa) == 0) {
|
|
575
|
+
LOG(ERROR) << "Cannot set RSA key from inputs.";
|
|
576
|
+
EVP_PKEY_free(result);
|
|
577
|
+
result = nullptr;
|
|
578
|
+
goto end;
|
|
579
|
+
}
|
|
566
580
|
#else
|
|
567
581
|
|
|
568
582
|
if (!OSSL_PARAM_BLD_push_BN(bld, "n", tmp_n) ||
|
|
@@ -44,7 +44,7 @@ class JwtTokenFileCallCredentials::FileReader final
|
|
|
44
44
|
|
|
45
45
|
private:
|
|
46
46
|
void ReadFile() {
|
|
47
|
-
auto contents = LoadFile(creds_->path_
|
|
47
|
+
auto contents = LoadFile(creds_->path_);
|
|
48
48
|
if (!contents.ok()) {
|
|
49
49
|
on_done_(absl::UnavailableError(contents.status().message()));
|
|
50
50
|
return;
|
|
@@ -220,33 +220,20 @@ UniqueTypeName Oauth2TokenFetcherCredentials::type() const {
|
|
|
220
220
|
return kFactory.Create();
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
|
|
224
|
-
Oauth2TokenFetcherCredentials::
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
// Parse oauth2 token.
|
|
238
|
-
std::optional<Slice> access_token_value;
|
|
239
|
-
Duration token_lifetime;
|
|
240
|
-
grpc_credentials_status status =
|
|
241
|
-
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
242
|
-
&(*response), &access_token_value, &token_lifetime);
|
|
243
|
-
if (status != GRPC_CREDENTIALS_OK) {
|
|
244
|
-
on_done(absl::UnavailableError("error parsing oauth2 token"));
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
on_done(MakeRefCounted<Token>(std::move(*access_token_value),
|
|
248
|
-
Timestamp::Now() + token_lifetime));
|
|
249
|
-
});
|
|
223
|
+
absl::StatusOr<RefCountedPtr<TokenFetcherCredentials::Token>>
|
|
224
|
+
Oauth2TokenFetcherCredentials::ExtractToken(
|
|
225
|
+
const grpc_http_response& response) {
|
|
226
|
+
// Parse oauth2 token.
|
|
227
|
+
std::optional<Slice> access_token_value;
|
|
228
|
+
Duration token_lifetime;
|
|
229
|
+
grpc_credentials_status status =
|
|
230
|
+
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
231
|
+
&response, &access_token_value, &token_lifetime);
|
|
232
|
+
if (status != GRPC_CREDENTIALS_OK) {
|
|
233
|
+
return absl::UnavailableError("error parsing oauth2 token");
|
|
234
|
+
}
|
|
235
|
+
return MakeRefCounted<Token>(std::move(*access_token_value),
|
|
236
|
+
Timestamp::Now() + token_lifetime);
|
|
250
237
|
}
|
|
251
238
|
|
|
252
239
|
} // namespace grpc_core
|
|
@@ -298,6 +285,7 @@ class grpc_compute_engine_token_fetcher_credentials
|
|
|
298
285
|
grpc_core::OrphanablePtr<grpc_core::HttpRequest> StartHttpRequest(
|
|
299
286
|
grpc_polling_entity* pollent, grpc_core::Timestamp deadline,
|
|
300
287
|
grpc_http_response* response, grpc_closure* on_complete) override {
|
|
288
|
+
email_fetcher_->StartEmailFetch();
|
|
301
289
|
memset(response, 0, sizeof(*response));
|
|
302
290
|
grpc_http_header header = {const_cast<char*>("Metadata-Flavor"),
|
|
303
291
|
const_cast<char*>("Google")};
|
|
@@ -322,39 +310,25 @@ class grpc_compute_engine_token_fetcher_credentials
|
|
|
322
310
|
return http_request;
|
|
323
311
|
}
|
|
324
312
|
|
|
325
|
-
grpc_core::
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
}
|
|
339
|
-
std::optional<grpc_core::Slice> access_token_value;
|
|
340
|
-
grpc_core::Duration token_lifetime;
|
|
341
|
-
grpc_credentials_status status =
|
|
342
|
-
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
343
|
-
&(*response), &access_token_value, &token_lifetime);
|
|
344
|
-
if (status != GRPC_CREDENTIALS_OK) {
|
|
345
|
-
on_done(absl::UnavailableError("error parsing oauth2 token"));
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
on_done(grpc_core::MakeRefCounted<TokenWithEmail>(
|
|
349
|
-
std::move(*access_token_value),
|
|
350
|
-
grpc_core::Timestamp::Now() + token_lifetime,
|
|
351
|
-
std::move(email_fetcher)));
|
|
352
|
-
});
|
|
313
|
+
absl::StatusOr<grpc_core::RefCountedPtr<Token>> ExtractToken(
|
|
314
|
+
const grpc_http_response& response) final {
|
|
315
|
+
std::optional<grpc_core::Slice> access_token_value;
|
|
316
|
+
grpc_core::Duration token_lifetime;
|
|
317
|
+
grpc_credentials_status status =
|
|
318
|
+
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
|
319
|
+
&response, &access_token_value, &token_lifetime);
|
|
320
|
+
if (status != GRPC_CREDENTIALS_OK) {
|
|
321
|
+
return absl::UnavailableError("error parsing oauth2 token");
|
|
322
|
+
}
|
|
323
|
+
return grpc_core::MakeRefCounted<TokenWithEmail>(
|
|
324
|
+
std::move(*access_token_value),
|
|
325
|
+
grpc_core::Timestamp::Now() + token_lifetime, email_fetcher_);
|
|
353
326
|
}
|
|
354
327
|
|
|
355
328
|
grpc_core::RefCountedPtr<grpc_core::EmailFetcher> email_fetcher_;
|
|
356
329
|
std::vector<grpc_core::URI::QueryParam> query_params_;
|
|
357
330
|
};
|
|
331
|
+
|
|
358
332
|
} // namespace
|
|
359
333
|
|
|
360
334
|
grpc_call_credentials* grpc_google_compute_engine_credentials_create(
|
|
@@ -469,21 +443,20 @@ namespace grpc_core {
|
|
|
469
443
|
|
|
470
444
|
namespace {
|
|
471
445
|
|
|
472
|
-
void MaybeAddToBody(
|
|
446
|
+
void MaybeAddToBody(absl::string_view field_name, absl::string_view field,
|
|
473
447
|
std::vector<std::string>* body) {
|
|
474
|
-
if (field
|
|
448
|
+
if (field.empty()) return;
|
|
475
449
|
body->push_back(absl::StrFormat("&%s=%s", field_name, field));
|
|
476
450
|
}
|
|
477
451
|
|
|
478
|
-
|
|
479
|
-
auto slice = LoadFile(path
|
|
452
|
+
absl::StatusOr<Slice> LoadTokenFile(const char* path) {
|
|
453
|
+
auto slice = LoadFile(path);
|
|
480
454
|
if (!slice.ok()) return slice.status();
|
|
481
455
|
if (slice->empty()) {
|
|
482
456
|
LOG(ERROR) << "Token file " << path << " is empty";
|
|
483
457
|
return GRPC_ERROR_CREATE("Token file is empty.");
|
|
484
458
|
}
|
|
485
|
-
|
|
486
|
-
return absl::OkStatus();
|
|
459
|
+
return slice;
|
|
487
460
|
}
|
|
488
461
|
|
|
489
462
|
class StsTokenFetcherCredentials : public Oauth2TokenFetcherCredentials {
|
|
@@ -543,43 +516,33 @@ class StsTokenFetcherCredentials : public Oauth2TokenFetcherCredentials {
|
|
|
543
516
|
grpc_error_handle FillBody(char** body, size_t* body_length) {
|
|
544
517
|
*body = nullptr;
|
|
545
518
|
std::vector<std::string> body_parts;
|
|
546
|
-
grpc_slice subject_token = grpc_empty_slice();
|
|
547
|
-
grpc_slice actor_token = grpc_empty_slice();
|
|
548
|
-
grpc_error_handle err;
|
|
549
519
|
|
|
550
|
-
auto cleanup = [&body, &body_length, &body_parts
|
|
551
|
-
&actor_token, &err]() {
|
|
520
|
+
auto cleanup = [&body, &body_length, &body_parts](absl::Status err) {
|
|
552
521
|
if (err.ok()) {
|
|
553
522
|
std::string body_str = absl::StrJoin(body_parts, "");
|
|
554
523
|
*body = gpr_strdup(body_str.c_str());
|
|
555
524
|
*body_length = body_str.size();
|
|
556
525
|
}
|
|
557
|
-
CSliceUnref(subject_token);
|
|
558
|
-
CSliceUnref(actor_token);
|
|
559
526
|
return err;
|
|
560
527
|
};
|
|
561
528
|
|
|
562
|
-
|
|
563
|
-
if (!
|
|
529
|
+
auto subject_token = LoadTokenFile(subject_token_path_.get());
|
|
530
|
+
if (!subject_token.ok()) return cleanup(subject_token.status());
|
|
564
531
|
body_parts.push_back(absl::StrFormat(
|
|
565
532
|
GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING,
|
|
566
|
-
|
|
567
|
-
subject_token_type_.get()));
|
|
533
|
+
subject_token->as_string_view(), subject_token_type_.get()));
|
|
568
534
|
MaybeAddToBody("resource", resource_.get(), &body_parts);
|
|
569
535
|
MaybeAddToBody("audience", audience_.get(), &body_parts);
|
|
570
536
|
MaybeAddToBody("scope", scope_.get(), &body_parts);
|
|
571
537
|
MaybeAddToBody("requested_token_type", requested_token_type_.get(),
|
|
572
538
|
&body_parts);
|
|
573
539
|
if ((actor_token_path_ != nullptr) && *actor_token_path_ != '\0') {
|
|
574
|
-
|
|
575
|
-
if (!
|
|
576
|
-
MaybeAddToBody(
|
|
577
|
-
"actor_token",
|
|
578
|
-
reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(actor_token)),
|
|
579
|
-
&body_parts);
|
|
540
|
+
auto actor_token = LoadTokenFile(actor_token_path_.get());
|
|
541
|
+
if (!actor_token.ok()) return cleanup(actor_token.status());
|
|
542
|
+
MaybeAddToBody("actor_token", actor_token->as_string_view(), &body_parts);
|
|
580
543
|
MaybeAddToBody("actor_token_type", actor_token_type_.get(), &body_parts);
|
|
581
544
|
}
|
|
582
|
-
return cleanup();
|
|
545
|
+
return cleanup(absl::OkStatus());
|
|
583
546
|
}
|
|
584
547
|
|
|
585
548
|
URI sts_url_;
|
|
@@ -95,11 +95,8 @@ class Oauth2TokenFetcherCredentials : public HttpTokenFetcherCredentials {
|
|
|
95
95
|
|
|
96
96
|
UniqueTypeName type() const override;
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
absl::AnyInvocable<
|
|
101
|
-
void(absl::StatusOr<RefCountedPtr<TokenFetcherCredentials::Token>>)>
|
|
102
|
-
on_done) final;
|
|
98
|
+
absl::StatusOr<RefCountedPtr<Token>> ExtractToken(
|
|
99
|
+
const grpc_http_response& response) final;
|
|
103
100
|
|
|
104
101
|
private:
|
|
105
102
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include "src/core/lib/debug/trace.h"
|
|
22
22
|
#include "src/core/lib/event_engine/default_event_engine.h"
|
|
23
23
|
#include "src/core/lib/iomgr/pollset_set.h"
|
|
24
|
+
#include "src/core/lib/promise/cancel_callback.h"
|
|
24
25
|
#include "src/core/lib/promise/context.h"
|
|
25
26
|
#include "src/core/lib/promise/poll.h"
|
|
26
27
|
#include "src/core/lib/promise/promise.h"
|
|
@@ -192,9 +193,6 @@ void TokenFetcherCredentials::FetchState::ResumeQueuedCalls(
|
|
|
192
193
|
queued_call->result = token;
|
|
193
194
|
queued_call->done.store(true, std::memory_order_release);
|
|
194
195
|
queued_call->waker.Wakeup();
|
|
195
|
-
grpc_polling_entity_del_from_pollset_set(
|
|
196
|
-
queued_call->pollent,
|
|
197
|
-
grpc_polling_entity_pollset_set(&creds_->pollent_));
|
|
198
196
|
}
|
|
199
197
|
queued_calls_.clear();
|
|
200
198
|
}
|
|
@@ -204,9 +202,6 @@ TokenFetcherCredentials::FetchState::QueueCall(
|
|
|
204
202
|
ClientMetadataHandle initial_metadata) {
|
|
205
203
|
auto queued_call = MakeRefCounted<QueuedCall>();
|
|
206
204
|
queued_call->waker = GetContext<Activity>()->MakeNonOwningWaker();
|
|
207
|
-
queued_call->pollent = GetContext<grpc_polling_entity>();
|
|
208
|
-
grpc_polling_entity_add_to_pollset_set(
|
|
209
|
-
queued_call->pollent, grpc_polling_entity_pollset_set(&creds_->pollent_));
|
|
210
205
|
queued_call->md = std::move(initial_metadata);
|
|
211
206
|
queued_calls_.insert(queued_call);
|
|
212
207
|
// If backoff has expired since the last attempt, trigger a new one.
|
|
@@ -281,25 +276,39 @@ TokenFetcherCredentials::GetRequestMetadata(
|
|
|
281
276
|
<< " no cached token; queuing call";
|
|
282
277
|
queued_call = fetch_state_->QueueCall(std::move(initial_metadata));
|
|
283
278
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
279
|
+
grpc_polling_entity_add_to_pollset_set(
|
|
280
|
+
GetContext<grpc_polling_entity>(),
|
|
281
|
+
grpc_polling_entity_pollset_set(&pollent_));
|
|
282
|
+
return OnCancel(
|
|
283
|
+
[self = WeakRefAsSubclass<TokenFetcherCredentials>(),
|
|
284
|
+
queued_call = std::move(
|
|
285
|
+
queued_call)]() -> Poll<absl::StatusOr<ClientMetadataHandle>> {
|
|
286
|
+
if (!queued_call->done.load(std::memory_order_acquire)) {
|
|
287
|
+
return Pending{};
|
|
288
|
+
}
|
|
289
|
+
grpc_polling_entity_del_from_pollset_set(
|
|
290
|
+
GetContext<grpc_polling_entity>(),
|
|
291
|
+
grpc_polling_entity_pollset_set(&self->pollent_));
|
|
292
|
+
if (!queued_call->result.ok()) {
|
|
293
|
+
GRPC_TRACE_LOG(token_fetcher_credentials, INFO)
|
|
294
|
+
<< "[TokenFetcherCredentials " << self.get()
|
|
295
|
+
<< "]: " << GetContext<Activity>()->DebugTag()
|
|
296
|
+
<< " token fetch failed; failing call";
|
|
297
|
+
return queued_call->result.status();
|
|
298
|
+
}
|
|
299
|
+
GRPC_TRACE_LOG(token_fetcher_credentials, INFO)
|
|
300
|
+
<< "[TokenFetcherCredentials " << self.get()
|
|
301
|
+
<< "]: " << GetContext<Activity>()->DebugTag()
|
|
302
|
+
<< " token fetch complete; resuming call";
|
|
303
|
+
(*queued_call->result)
|
|
304
|
+
->AddTokenToClientInitialMetadata(*queued_call->md);
|
|
305
|
+
return std::move(queued_call->md);
|
|
306
|
+
},
|
|
307
|
+
[self = WeakRefAsSubclass<TokenFetcherCredentials>(),
|
|
308
|
+
pollent = GetContext<grpc_polling_entity>()]() {
|
|
309
|
+
grpc_polling_entity_del_from_pollset_set(
|
|
310
|
+
pollent, grpc_polling_entity_pollset_set(&self->pollent_));
|
|
311
|
+
});
|
|
303
312
|
}
|
|
304
313
|
|
|
305
314
|
//
|
|
@@ -307,13 +316,13 @@ TokenFetcherCredentials::GetRequestMetadata(
|
|
|
307
316
|
//
|
|
308
317
|
|
|
309
318
|
HttpTokenFetcherCredentials::HttpFetchRequest::HttpFetchRequest(
|
|
310
|
-
HttpTokenFetcherCredentials
|
|
311
|
-
absl::AnyInvocable<void(absl::StatusOr<
|
|
312
|
-
: on_done_(std::move(on_done)) {
|
|
319
|
+
WeakRefCountedPtr<HttpTokenFetcherCredentials> creds, Timestamp deadline,
|
|
320
|
+
absl::AnyInvocable<void(absl::StatusOr<RefCountedPtr<Token>>)> on_done)
|
|
321
|
+
: creds_(std::move(creds)), on_done_(std::move(on_done)) {
|
|
313
322
|
GRPC_CLOSURE_INIT(&on_http_response_, OnHttpResponse, this, nullptr);
|
|
314
323
|
Ref().release(); // Ref held by HTTP request callback.
|
|
315
|
-
http_request_ =
|
|
316
|
-
|
|
324
|
+
http_request_ = creds_->StartHttpRequest(creds_->pollent(), deadline,
|
|
325
|
+
&response_, &on_http_response_);
|
|
317
326
|
}
|
|
318
327
|
|
|
319
328
|
void HttpTokenFetcherCredentials::HttpFetchRequest::Orphan() {
|
|
@@ -332,6 +341,7 @@ void HttpTokenFetcherCredentials::HttpFetchRequest::OnHttpResponse(
|
|
|
332
341
|
self->on_done_(absl::UnavailableError(StatusToString(error)));
|
|
333
342
|
return;
|
|
334
343
|
}
|
|
344
|
+
// Check HTTP status code.
|
|
335
345
|
if (self->response_.status != 200) {
|
|
336
346
|
grpc_status_code status_code =
|
|
337
347
|
grpc_http2_status_to_grpc_status(self->response_.status);
|
|
@@ -344,7 +354,18 @@ void HttpTokenFetcherCredentials::HttpFetchRequest::OnHttpResponse(
|
|
|
344
354
|
self->response_.status)));
|
|
345
355
|
return;
|
|
346
356
|
}
|
|
347
|
-
|
|
357
|
+
// Extract token and return result.
|
|
358
|
+
auto token = self->creds_->ExtractToken(self->response_);
|
|
359
|
+
self->on_done_(std::move(token));
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
OrphanablePtr<TokenFetcherCredentials::FetchRequest>
|
|
363
|
+
HttpTokenFetcherCredentials::FetchToken(
|
|
364
|
+
Timestamp deadline,
|
|
365
|
+
absl::AnyInvocable<void(absl::StatusOr<RefCountedPtr<Token>>)> on_done) {
|
|
366
|
+
return MakeOrphanable<HttpFetchRequest>(
|
|
367
|
+
WeakRefAsSubclass<HttpTokenFetcherCredentials>(), deadline,
|
|
368
|
+
std::move(on_done));
|
|
348
369
|
}
|
|
349
370
|
|
|
350
371
|
} // namespace grpc_core
|
|
@@ -102,7 +102,6 @@ class TokenFetcherCredentials : public grpc_call_credentials {
|
|
|
102
102
|
struct QueuedCall : public RefCounted<QueuedCall> {
|
|
103
103
|
std::atomic<bool> done{false};
|
|
104
104
|
Waker waker;
|
|
105
|
-
grpc_polling_entity* pollent;
|
|
106
105
|
ClientMetadataHandle md;
|
|
107
106
|
absl::StatusOr<RefCountedPtr<Token>> result;
|
|
108
107
|
};
|
|
@@ -183,32 +182,46 @@ class TokenFetcherCredentials : public grpc_call_credentials {
|
|
|
183
182
|
};
|
|
184
183
|
|
|
185
184
|
// A base class for fetching tokens via an HTTP request.
|
|
185
|
+
// Subclasses must implement StartHttpRequest() and ExtractToken().
|
|
186
186
|
class HttpTokenFetcherCredentials : public TokenFetcherCredentials {
|
|
187
187
|
public:
|
|
188
|
+
// Starts an HTTP request.
|
|
188
189
|
virtual OrphanablePtr<HttpRequest> StartHttpRequest(
|
|
189
190
|
grpc_polling_entity* pollent, Timestamp deadline,
|
|
190
191
|
grpc_http_response* response, grpc_closure* on_complete) = 0;
|
|
191
192
|
|
|
192
|
-
|
|
193
|
+
// Extracts a token from the HTTP response.
|
|
194
|
+
// This will be called only if the HTTP status code was 200 (OK).
|
|
195
|
+
virtual absl::StatusOr<RefCountedPtr<Token>> ExtractToken(
|
|
196
|
+
const grpc_http_response& response) = 0;
|
|
197
|
+
|
|
198
|
+
private:
|
|
193
199
|
// State held for a pending HTTP request.
|
|
194
200
|
class HttpFetchRequest : public TokenFetcherCredentials::FetchRequest {
|
|
195
201
|
public:
|
|
196
|
-
// The given callback should assume the http response status has already
|
|
197
|
-
// been checked and handle the token parsing.
|
|
198
202
|
HttpFetchRequest(
|
|
199
|
-
HttpTokenFetcherCredentials
|
|
200
|
-
|
|
203
|
+
WeakRefCountedPtr<HttpTokenFetcherCredentials> creds,
|
|
204
|
+
Timestamp deadline,
|
|
205
|
+
absl::AnyInvocable<void(absl::StatusOr<RefCountedPtr<Token>>)> on_done);
|
|
206
|
+
|
|
201
207
|
~HttpFetchRequest() override { grpc_http_response_destroy(&response_); }
|
|
202
208
|
|
|
203
209
|
void Orphan() override;
|
|
204
210
|
|
|
205
211
|
private:
|
|
206
212
|
static void OnHttpResponse(void* arg, grpc_error_handle error);
|
|
207
|
-
|
|
213
|
+
|
|
214
|
+
WeakRefCountedPtr<HttpTokenFetcherCredentials> creds_;
|
|
215
|
+
absl::AnyInvocable<void(absl::StatusOr<RefCountedPtr<Token>>)> on_done_;
|
|
208
216
|
grpc_closure on_http_response_;
|
|
217
|
+
OrphanablePtr<HttpRequest> http_request_;
|
|
209
218
|
grpc_http_response response_;
|
|
210
|
-
absl::AnyInvocable<void(absl::StatusOr<grpc_http_response>)> on_done_;
|
|
211
219
|
};
|
|
220
|
+
|
|
221
|
+
OrphanablePtr<FetchRequest> FetchToken(
|
|
222
|
+
Timestamp deadline,
|
|
223
|
+
absl::AnyInvocable<void(absl::StatusOr<RefCountedPtr<Token>>)> on_done)
|
|
224
|
+
final;
|
|
212
225
|
};
|
|
213
226
|
|
|
214
227
|
} // namespace grpc_core
|
|
@@ -266,14 +266,13 @@ static grpc_error_handle create_default_creds_from_path(
|
|
|
266
266
|
if (creds_path.empty()) {
|
|
267
267
|
return GRPC_ERROR_CREATE("creds_path unset");
|
|
268
268
|
}
|
|
269
|
-
auto creds_data =
|
|
270
|
-
grpc_core::LoadFile(creds_path, /*add_null_terminator=*/false);
|
|
269
|
+
auto creds_data = grpc_core::LoadFile(creds_path);
|
|
271
270
|
if (!creds_data.ok()) {
|
|
272
|
-
return
|
|
271
|
+
return creds_data.status();
|
|
273
272
|
}
|
|
274
273
|
auto json = grpc_core::JsonParse(creds_data->as_string_view());
|
|
275
274
|
if (!json.ok()) {
|
|
276
|
-
return
|
|
275
|
+
return json.status();
|
|
277
276
|
}
|
|
278
277
|
if (json->type() != Json::Type::kObject) {
|
|
279
278
|
return GRPC_ERROR_CREATE(absl::StrCat("Failed to parse JSON \"",
|