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
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2016 gRPC authors.
|
|
4
|
-
//
|
|
5
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
// you may not use this file except in compliance with the License.
|
|
7
|
-
// You may obtain a copy of the License at
|
|
8
|
-
//
|
|
9
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
//
|
|
11
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
// See the License for the specific language governing permissions and
|
|
15
|
-
// limitations under the License.
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
#ifndef GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
|
20
|
-
#define GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
|
21
|
-
|
|
22
|
-
#include <grpc/support/port_platform.h>
|
|
23
|
-
|
|
24
|
-
#include <memory>
|
|
25
|
-
|
|
26
|
-
#include "src/core/lib/iomgr/closure.h"
|
|
27
|
-
#include "src/core/lib/iomgr/error.h"
|
|
28
|
-
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
|
29
|
-
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
|
30
|
-
#include "src/core/util/sync.h"
|
|
31
|
-
#include "absl/base/thread_annotations.h"
|
|
32
|
-
|
|
33
|
-
#if GRPC_ARES == 1
|
|
34
|
-
|
|
35
|
-
#include <ares.h>
|
|
36
|
-
|
|
37
|
-
namespace grpc_core {
|
|
38
|
-
|
|
39
|
-
// A wrapped fd that integrates with the grpc iomgr of the current platform.
|
|
40
|
-
// A GrpcPolledFd knows how to create grpc platform-specific iomgr endpoints
|
|
41
|
-
// from "ares_socket_t" sockets, and then sign up for readability/writeability
|
|
42
|
-
// with that poller, and do shutdown and destruction.
|
|
43
|
-
class GrpcPolledFd {
|
|
44
|
-
public:
|
|
45
|
-
virtual ~GrpcPolledFd() {}
|
|
46
|
-
// Called when c-ares library is interested and there's no pending callback
|
|
47
|
-
virtual void RegisterForOnReadableLocked(grpc_closure* read_closure)
|
|
48
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
49
|
-
// Called when c-ares library is interested and there's no pending callback
|
|
50
|
-
virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure)
|
|
51
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
52
|
-
// Indicates if there is data left even after just being read from
|
|
53
|
-
virtual bool IsFdStillReadableLocked()
|
|
54
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
55
|
-
// Called once and only once. Must cause cancellation of any pending
|
|
56
|
-
// read/write callbacks.
|
|
57
|
-
virtual void ShutdownLocked(grpc_error_handle error)
|
|
58
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
59
|
-
// Get the underlying ares_socket_t that this was created from
|
|
60
|
-
virtual ares_socket_t GetWrappedAresSocketLocked()
|
|
61
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
62
|
-
// A unique name, for logging
|
|
63
|
-
virtual const char* GetName() const = 0;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
// A GrpcPolledFdFactory is 1-to-1 with and owned by the
|
|
67
|
-
// ares event driver. It knows how to create GrpcPolledFd's
|
|
68
|
-
// for the current platform, and the ares driver uses it for all of
|
|
69
|
-
// its fd's.
|
|
70
|
-
class GrpcPolledFdFactory {
|
|
71
|
-
public:
|
|
72
|
-
virtual ~GrpcPolledFdFactory() {}
|
|
73
|
-
// Creates a new wrapped fd for the current platform
|
|
74
|
-
virtual GrpcPolledFd* NewGrpcPolledFdLocked(
|
|
75
|
-
ares_socket_t as, grpc_pollset_set* driver_pollset_set)
|
|
76
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
77
|
-
// Optionally configures the ares channel after creation
|
|
78
|
-
virtual void ConfigureAresChannelLocked(ares_channel channel)
|
|
79
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) = 0;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// Creates a new polled fd factory.
|
|
83
|
-
// Note that even though ownership of mu is not transferred, the mu
|
|
84
|
-
// parameter is guaranteed to be alive for the the whole lifetime of
|
|
85
|
-
// the resulting GrpcPolledFdFactory as well as any GrpcPolledFd
|
|
86
|
-
// returned by the factory.
|
|
87
|
-
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Mutex* mu);
|
|
88
|
-
|
|
89
|
-
} // namespace grpc_core
|
|
90
|
-
|
|
91
|
-
#endif // GRPC_ARES
|
|
92
|
-
|
|
93
|
-
#endif // GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2016 gRPC authors.
|
|
4
|
-
//
|
|
5
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
// you may not use this file except in compliance with the License.
|
|
7
|
-
// You may obtain a copy of the License at
|
|
8
|
-
//
|
|
9
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
//
|
|
11
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
// See the License for the specific language governing permissions and
|
|
15
|
-
// limitations under the License.
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
#include <grpc/support/port_platform.h>
|
|
19
|
-
|
|
20
|
-
#include "src/core/lib/iomgr/port.h"
|
|
21
|
-
|
|
22
|
-
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
|
23
|
-
|
|
24
|
-
// IWYU pragma: no_include <ares_build.h>
|
|
25
|
-
|
|
26
|
-
#include <ares.h>
|
|
27
|
-
#include <sys/ioctl.h>
|
|
28
|
-
#include <sys/socket.h>
|
|
29
|
-
#include <sys/uio.h>
|
|
30
|
-
#include <unistd.h>
|
|
31
|
-
|
|
32
|
-
#include <memory>
|
|
33
|
-
#include <string>
|
|
34
|
-
#include <unordered_set>
|
|
35
|
-
#include <utility>
|
|
36
|
-
|
|
37
|
-
#include "src/core/lib/iomgr/closure.h"
|
|
38
|
-
#include "src/core/lib/iomgr/error.h"
|
|
39
|
-
#include "src/core/lib/iomgr/ev_posix.h"
|
|
40
|
-
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
|
41
|
-
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
|
42
|
-
#include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
|
43
|
-
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
|
44
|
-
#include "src/core/util/grpc_check.h"
|
|
45
|
-
#include "src/core/util/sync.h"
|
|
46
|
-
#include "absl/base/thread_annotations.h"
|
|
47
|
-
#include "absl/strings/str_cat.h"
|
|
48
|
-
|
|
49
|
-
namespace grpc_core {
|
|
50
|
-
|
|
51
|
-
class GrpcPolledFdPosix final : public GrpcPolledFd {
|
|
52
|
-
public:
|
|
53
|
-
GrpcPolledFdPosix(ares_socket_t as, grpc_pollset_set* driver_pollset_set)
|
|
54
|
-
: name_(absl::StrCat("c-ares fd: ", static_cast<int>(as))), as_(as) {
|
|
55
|
-
fd_ = grpc_fd_create(static_cast<int>(as), name_.c_str(), false);
|
|
56
|
-
driver_pollset_set_ = driver_pollset_set;
|
|
57
|
-
grpc_pollset_set_add_fd(driver_pollset_set_, fd_);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
~GrpcPolledFdPosix() override {
|
|
61
|
-
grpc_pollset_set_del_fd(driver_pollset_set_, fd_);
|
|
62
|
-
// c-ares library will close the fd inside grpc_fd. This fd may be picked up
|
|
63
|
-
// immediately by another thread, and should not be closed by the following
|
|
64
|
-
// grpc_fd_orphan.
|
|
65
|
-
int phony_release_fd;
|
|
66
|
-
grpc_fd_orphan(fd_, nullptr, &phony_release_fd, "c-ares query finished");
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
void RegisterForOnReadableLocked(grpc_closure* read_closure)
|
|
70
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) override {
|
|
71
|
-
grpc_fd_notify_on_read(fd_, read_closure);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
void RegisterForOnWriteableLocked(grpc_closure* write_closure)
|
|
75
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) override {
|
|
76
|
-
grpc_fd_notify_on_write(fd_, write_closure);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
bool IsFdStillReadableLocked()
|
|
80
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) override {
|
|
81
|
-
size_t bytes_available = 0;
|
|
82
|
-
return ioctl(grpc_fd_wrapped_fd(fd_), FIONREAD, &bytes_available) == 0 &&
|
|
83
|
-
bytes_available > 0;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
void ShutdownLocked(grpc_error_handle error)
|
|
87
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) override {
|
|
88
|
-
grpc_fd_shutdown(fd_, error);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
ares_socket_t GetWrappedAresSocketLocked()
|
|
92
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&grpc_ares_request::mu) override {
|
|
93
|
-
return as_;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const char* GetName() const override { return name_.c_str(); }
|
|
97
|
-
|
|
98
|
-
private:
|
|
99
|
-
const std::string name_;
|
|
100
|
-
const ares_socket_t as_;
|
|
101
|
-
grpc_fd* fd_ ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
|
102
|
-
grpc_pollset_set* driver_pollset_set_ ABSL_GUARDED_BY(&grpc_ares_request::mu);
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
class GrpcPolledFdFactoryPosix final : public GrpcPolledFdFactory {
|
|
106
|
-
public:
|
|
107
|
-
~GrpcPolledFdFactoryPosix() override {
|
|
108
|
-
for (auto& fd : owned_fds_) {
|
|
109
|
-
close(fd);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
GrpcPolledFd* NewGrpcPolledFdLocked(
|
|
114
|
-
ares_socket_t as, grpc_pollset_set* driver_pollset_set) override {
|
|
115
|
-
auto insert_result = owned_fds_.insert(as);
|
|
116
|
-
GRPC_CHECK(insert_result.second);
|
|
117
|
-
return new GrpcPolledFdPosix(as, driver_pollset_set);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
void ConfigureAresChannelLocked(ares_channel channel) override {
|
|
121
|
-
ares_set_socket_functions(channel, &kSockFuncs, this);
|
|
122
|
-
ares_set_socket_configure_callback(
|
|
123
|
-
channel, &GrpcPolledFdFactoryPosix::ConfigureSocket, nullptr);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
private:
|
|
127
|
-
/// Overridden socket API for c-ares
|
|
128
|
-
static ares_socket_t Socket(int af, int type, int protocol,
|
|
129
|
-
void* /*user_data*/) {
|
|
130
|
-
return socket(af, type, protocol);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/// Overridden connect API for c-ares
|
|
134
|
-
static int Connect(ares_socket_t as, const struct sockaddr* target,
|
|
135
|
-
ares_socklen_t target_len, void* /*user_data*/) {
|
|
136
|
-
return connect(as, target, target_len);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/// Overridden writev API for c-ares
|
|
140
|
-
static ares_ssize_t WriteV(ares_socket_t as, const struct iovec* iov,
|
|
141
|
-
int iovec_count, void* /*user_data*/) {
|
|
142
|
-
return writev(as, iov, iovec_count);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/// Overridden recvfrom API for c-ares
|
|
146
|
-
static ares_ssize_t RecvFrom(ares_socket_t as, void* data, size_t data_len,
|
|
147
|
-
int flags, struct sockaddr* from,
|
|
148
|
-
ares_socklen_t* from_len, void* /*user_data*/) {
|
|
149
|
-
return recvfrom(as, data, data_len, flags, from, from_len);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/// Overridden close API for c-ares
|
|
153
|
-
static int Close(ares_socket_t as, void* user_data) {
|
|
154
|
-
GrpcPolledFdFactoryPosix* self =
|
|
155
|
-
static_cast<GrpcPolledFdFactoryPosix*>(user_data);
|
|
156
|
-
if (self->owned_fds_.find(as) == self->owned_fds_.end()) {
|
|
157
|
-
// c-ares owns this fd, grpc has never seen it
|
|
158
|
-
return close(as);
|
|
159
|
-
}
|
|
160
|
-
return 0;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/// Because we're using socket API overrides, c-ares won't
|
|
164
|
-
/// perform its typical configuration on the socket. See
|
|
165
|
-
/// https://github.com/c-ares/c-ares/blob/bad62225b7f6b278b92e8e85a255600b629ef517/src/lib/ares_process.c#L1018.
|
|
166
|
-
/// So we use the configure socket callback override and copy default
|
|
167
|
-
/// settings that c-ares would normally apply on posix platforms:
|
|
168
|
-
/// - non-blocking
|
|
169
|
-
/// - cloexec flag
|
|
170
|
-
/// - disable nagle */
|
|
171
|
-
static int ConfigureSocket(ares_socket_t fd, int type, void* /*user_data*/) {
|
|
172
|
-
grpc_error_handle err;
|
|
173
|
-
err = grpc_set_socket_nonblocking(fd, true);
|
|
174
|
-
if (!err.ok()) return -1;
|
|
175
|
-
err = grpc_set_socket_cloexec(fd, true);
|
|
176
|
-
if (!err.ok()) return -1;
|
|
177
|
-
if (type == SOCK_STREAM) {
|
|
178
|
-
err = grpc_set_socket_low_latency(fd, true);
|
|
179
|
-
if (!err.ok()) return -1;
|
|
180
|
-
}
|
|
181
|
-
return 0;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const struct ares_socket_functions kSockFuncs = {
|
|
185
|
-
&GrpcPolledFdFactoryPosix::Socket /* socket */,
|
|
186
|
-
&GrpcPolledFdFactoryPosix::Close /* close */,
|
|
187
|
-
&GrpcPolledFdFactoryPosix::Connect /* connect */,
|
|
188
|
-
&GrpcPolledFdFactoryPosix::RecvFrom /* recvfrom */,
|
|
189
|
-
&GrpcPolledFdFactoryPosix::WriteV /* writev */,
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
// fds that are used/owned by grpc - we (grpc) will close them rather than
|
|
193
|
-
// c-ares
|
|
194
|
-
std::unordered_set<ares_socket_t> owned_fds_;
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Mutex* /* mu */) {
|
|
198
|
-
return std::make_unique<GrpcPolledFdFactoryPosix>();
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
} // namespace grpc_core
|
|
202
|
-
|
|
203
|
-
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|