grpc 1.28.0 → 1.30.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +22 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +111 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -22,8 +22,9 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include "absl/container/inlined_vector.h"
|
26
|
+
|
25
27
|
#include "src/core/lib/gpr/string.h"
|
26
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
27
28
|
|
28
29
|
namespace grpc_core {
|
29
30
|
|
@@ -35,6 +36,8 @@ class RegistryState {
|
|
35
36
|
|
36
37
|
void RegisterLoadBalancingPolicyFactory(
|
37
38
|
std::unique_ptr<LoadBalancingPolicyFactory> factory) {
|
39
|
+
gpr_log(GPR_DEBUG, "registering LB policy factory for \"%s\"",
|
40
|
+
factory->name());
|
38
41
|
for (size_t i = 0; i < factories_.size(); ++i) {
|
39
42
|
GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
|
40
43
|
}
|
@@ -52,7 +55,8 @@ class RegistryState {
|
|
52
55
|
}
|
53
56
|
|
54
57
|
private:
|
55
|
-
InlinedVector<std::unique_ptr<LoadBalancingPolicyFactory>, 10>
|
58
|
+
absl::InlinedVector<std::unique_ptr<LoadBalancingPolicyFactory>, 10>
|
59
|
+
factories_;
|
56
60
|
};
|
57
61
|
|
58
62
|
RegistryState* g_state = nullptr;
|
@@ -38,7 +38,8 @@ class LocalSubchannelPool final : public SubchannelPoolInterface {
|
|
38
38
|
~LocalSubchannelPool() override;
|
39
39
|
|
40
40
|
// Implements interface methods.
|
41
|
-
// Thread-unsafe. Intended to be invoked within the client_channel
|
41
|
+
// Thread-unsafe. Intended to be invoked within the client_channel work
|
42
|
+
// serializer.
|
42
43
|
Subchannel* RegisterSubchannel(SubchannelKey* key,
|
43
44
|
Subchannel* constructed) override;
|
44
45
|
void UnregisterSubchannel(SubchannelKey* key) override;
|
@@ -73,8 +73,8 @@ bool grpc_parse_ipv4_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
73
73
|
bool log_errors) {
|
74
74
|
bool success = false;
|
75
75
|
// Split host and port.
|
76
|
-
|
77
|
-
|
76
|
+
std::string host;
|
77
|
+
std::string port;
|
78
78
|
if (!grpc_core::SplitHostPort(hostport, &host, &port)) {
|
79
79
|
if (log_errors) {
|
80
80
|
gpr_log(GPR_ERROR, "Failed gpr_split_host_port(%s, ...)", hostport);
|
@@ -86,21 +86,21 @@ bool grpc_parse_ipv4_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
86
86
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
|
87
87
|
grpc_sockaddr_in* in = reinterpret_cast<grpc_sockaddr_in*>(addr->addr);
|
88
88
|
in->sin_family = GRPC_AF_INET;
|
89
|
-
if (grpc_inet_pton(GRPC_AF_INET, host.
|
89
|
+
if (grpc_inet_pton(GRPC_AF_INET, host.c_str(), &in->sin_addr) == 0) {
|
90
90
|
if (log_errors) {
|
91
|
-
gpr_log(GPR_ERROR, "invalid ipv4 address: '%s'", host.
|
91
|
+
gpr_log(GPR_ERROR, "invalid ipv4 address: '%s'", host.c_str());
|
92
92
|
}
|
93
93
|
goto done;
|
94
94
|
}
|
95
95
|
// Parse port.
|
96
|
-
if (port
|
96
|
+
if (port.empty()) {
|
97
97
|
if (log_errors) gpr_log(GPR_ERROR, "no port given for ipv4 scheme");
|
98
98
|
goto done;
|
99
99
|
}
|
100
100
|
int port_num;
|
101
|
-
if (sscanf(port.
|
101
|
+
if (sscanf(port.c_str(), "%d", &port_num) != 1 || port_num < 0 ||
|
102
102
|
port_num > 65535) {
|
103
|
-
if (log_errors) gpr_log(GPR_ERROR, "invalid ipv4 port: '%s'", port.
|
103
|
+
if (log_errors) gpr_log(GPR_ERROR, "invalid ipv4 port: '%s'", port.c_str());
|
104
104
|
goto done;
|
105
105
|
}
|
106
106
|
in->sin_port = grpc_htons(static_cast<uint16_t>(port_num));
|
@@ -125,8 +125,8 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
125
125
|
bool log_errors) {
|
126
126
|
bool success = false;
|
127
127
|
// Split host and port.
|
128
|
-
|
129
|
-
|
128
|
+
std::string host;
|
129
|
+
std::string port;
|
130
130
|
if (!grpc_core::SplitHostPort(hostport, &host, &port)) {
|
131
131
|
if (log_errors) {
|
132
132
|
gpr_log(GPR_ERROR, "Failed gpr_split_host_port(%s, ...)", hostport);
|
@@ -140,11 +140,12 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
140
140
|
in6->sin6_family = GRPC_AF_INET6;
|
141
141
|
// Handle the RFC6874 syntax for IPv6 zone identifiers.
|
142
142
|
char* host_end =
|
143
|
-
static_cast<char*>(gpr_memrchr(host.
|
143
|
+
static_cast<char*>(gpr_memrchr(host.c_str(), '%', host.size()));
|
144
144
|
if (host_end != nullptr) {
|
145
|
-
GPR_ASSERT(host_end >= host.
|
145
|
+
GPR_ASSERT(host_end >= host.c_str());
|
146
146
|
char host_without_scope[GRPC_INET6_ADDRSTRLEN + 1];
|
147
|
-
size_t host_without_scope_len =
|
147
|
+
size_t host_without_scope_len =
|
148
|
+
static_cast<size_t>(host_end - host.c_str());
|
148
149
|
uint32_t sin6_scope_id = 0;
|
149
150
|
if (host_without_scope_len > GRPC_INET6_ADDRSTRLEN) {
|
150
151
|
if (log_errors) {
|
@@ -156,7 +157,7 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
156
157
|
}
|
157
158
|
goto done;
|
158
159
|
}
|
159
|
-
strncpy(host_without_scope, host.
|
160
|
+
strncpy(host_without_scope, host.c_str(), host_without_scope_len);
|
160
161
|
host_without_scope[host_without_scope_len] = '\0';
|
161
162
|
if (grpc_inet_pton(GRPC_AF_INET6, host_without_scope, &in6->sin6_addr) ==
|
162
163
|
0) {
|
@@ -165,9 +166,9 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
165
166
|
}
|
166
167
|
goto done;
|
167
168
|
}
|
168
|
-
if (gpr_parse_bytes_to_uint32(
|
169
|
-
|
170
|
-
|
169
|
+
if (gpr_parse_bytes_to_uint32(host_end + 1,
|
170
|
+
host.size() - host_without_scope_len - 1,
|
171
|
+
&sin6_scope_id) == 0) {
|
171
172
|
if ((sin6_scope_id = grpc_if_nametoindex(host_end + 1)) == 0) {
|
172
173
|
gpr_log(GPR_ERROR,
|
173
174
|
"Invalid interface name: '%s'. "
|
@@ -179,22 +180,22 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
|
179
180
|
// Handle "sin6_scope_id" being type "u_long". See grpc issue #10027.
|
180
181
|
in6->sin6_scope_id = sin6_scope_id;
|
181
182
|
} else {
|
182
|
-
if (grpc_inet_pton(GRPC_AF_INET6, host.
|
183
|
+
if (grpc_inet_pton(GRPC_AF_INET6, host.c_str(), &in6->sin6_addr) == 0) {
|
183
184
|
if (log_errors) {
|
184
|
-
gpr_log(GPR_ERROR, "invalid ipv6 address: '%s'", host.
|
185
|
+
gpr_log(GPR_ERROR, "invalid ipv6 address: '%s'", host.c_str());
|
185
186
|
}
|
186
187
|
goto done;
|
187
188
|
}
|
188
189
|
}
|
189
190
|
// Parse port.
|
190
|
-
if (port
|
191
|
+
if (port.empty()) {
|
191
192
|
if (log_errors) gpr_log(GPR_ERROR, "no port given for ipv6 scheme");
|
192
193
|
goto done;
|
193
194
|
}
|
194
195
|
int port_num;
|
195
|
-
if (sscanf(port.
|
196
|
+
if (sscanf(port.c_str(), "%d", &port_num) != 1 || port_num < 0 ||
|
196
197
|
port_num > 65535) {
|
197
|
-
if (log_errors) gpr_log(GPR_ERROR, "invalid ipv6 port: '%s'", port.
|
198
|
+
if (log_errors) gpr_log(GPR_ERROR, "invalid ipv6 port: '%s'", port.c_str());
|
198
199
|
goto done;
|
199
200
|
}
|
200
201
|
in6->sin6_port = grpc_htons(static_cast<uint16_t>(port_num));
|
@@ -19,7 +19,6 @@
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
21
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
22
|
-
#include "src/core/lib/iomgr/combiner.h"
|
23
22
|
|
24
23
|
grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount(false,
|
25
24
|
"resolver_refcount");
|
@@ -30,13 +29,11 @@ namespace grpc_core {
|
|
30
29
|
// Resolver
|
31
30
|
//
|
32
31
|
|
33
|
-
Resolver::Resolver(
|
32
|
+
Resolver::Resolver(std::shared_ptr<WorkSerializer> work_serializer,
|
34
33
|
std::unique_ptr<ResultHandler> result_handler)
|
35
34
|
: InternallyRefCounted(&grpc_trace_resolver_refcount),
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
Resolver::~Resolver() { GRPC_COMBINER_UNREF(combiner_, "resolver"); }
|
35
|
+
work_serializer_(std::move(work_serializer)),
|
36
|
+
result_handler_(std::move(result_handler)) {}
|
40
37
|
|
41
38
|
//
|
42
39
|
// Resolver::Result
|
@@ -54,7 +51,7 @@ Resolver::Result::Result(const Result& other) {
|
|
54
51
|
args = grpc_channel_args_copy(other.args);
|
55
52
|
}
|
56
53
|
|
57
|
-
Resolver::Result::Result(Result&& other) {
|
54
|
+
Resolver::Result::Result(Result&& other) noexcept {
|
58
55
|
addresses = std::move(other.addresses);
|
59
56
|
service_config = std::move(other.service_config);
|
60
57
|
service_config_error = other.service_config_error;
|
@@ -73,7 +70,7 @@ Resolver::Result& Resolver::Result::operator=(const Result& other) {
|
|
73
70
|
return *this;
|
74
71
|
}
|
75
72
|
|
76
|
-
Resolver::Result& Resolver::Result::operator=(Result&& other) {
|
73
|
+
Resolver::Result& Resolver::Result::operator=(Result&& other) noexcept {
|
77
74
|
addresses = std::move(other.addresses);
|
78
75
|
service_config = std::move(other.service_config);
|
79
76
|
GRPC_ERROR_UNREF(service_config_error);
|
@@ -27,8 +27,8 @@
|
|
27
27
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
28
28
|
#include "src/core/lib/gprpp/orphanable.h"
|
29
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
-
#include "src/core/lib/iomgr/combiner.h"
|
31
30
|
#include "src/core/lib/iomgr/iomgr.h"
|
31
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
32
32
|
|
33
33
|
extern grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount;
|
34
34
|
|
@@ -45,7 +45,7 @@ namespace grpc_core {
|
|
45
45
|
/// DNS).
|
46
46
|
///
|
47
47
|
/// Note: All methods with a "Locked" suffix must be called from the
|
48
|
-
///
|
48
|
+
/// work_serializer passed to the constructor.
|
49
49
|
class Resolver : public InternallyRefCounted<Resolver> {
|
50
50
|
public:
|
51
51
|
/// Results returned by the resolver.
|
@@ -60,9 +60,9 @@ class Resolver : public InternallyRefCounted
|
|
60
60
|
Result() = default;
|
61
61
|
~Result();
|
62
62
|
Result(const Result& other);
|
63
|
-
Result(Result&& other);
|
63
|
+
Result(Result&& other) noexcept;
|
64
64
|
Result& operator=(const Result& other);
|
65
|
-
Result& operator=(Result&& other);
|
65
|
+
Result& operator=(Result&& other) noexcept;
|
66
66
|
};
|
67
67
|
|
68
68
|
/// A proxy object used by the resolver to return results to the
|
@@ -87,7 +87,7 @@ class Resolver : public InternallyRefCounted
|
|
87
87
|
// Not copyable nor movable.
|
88
88
|
Resolver(const Resolver&) = delete;
|
89
89
|
Resolver& operator=(const Resolver&) = delete;
|
90
|
-
virtual ~Resolver();
|
90
|
+
virtual ~Resolver() = default;
|
91
91
|
|
92
92
|
/// Starts resolving.
|
93
93
|
virtual void StartLocked() = 0;
|
@@ -115,30 +115,28 @@ class Resolver : public InternallyRefCounted
|
|
115
115
|
/// implementations. At that point, this method can go away.
|
116
116
|
virtual void ResetBackoffLocked() {}
|
117
117
|
|
118
|
-
// Note: This must be invoked while holding the
|
118
|
+
// Note: This must be invoked while holding the work_serializer.
|
119
119
|
void Orphan() override {
|
120
120
|
ShutdownLocked();
|
121
121
|
Unref();
|
122
122
|
}
|
123
123
|
|
124
124
|
protected:
|
125
|
-
|
126
|
-
|
127
|
-
// API should change to take a RefCountedPtr<>, so that we always take
|
128
|
-
// ownership of a new ref.
|
129
|
-
explicit Resolver(Combiner* combiner,
|
130
|
-
std::unique_ptr<ResultHandler> result_handler);
|
125
|
+
Resolver(std::shared_ptr<WorkSerializer> work_serializer,
|
126
|
+
std::unique_ptr<ResultHandler> result_handler);
|
131
127
|
|
132
128
|
/// Shuts down the resolver.
|
133
129
|
virtual void ShutdownLocked() = 0;
|
134
130
|
|
135
|
-
|
131
|
+
std::shared_ptr<WorkSerializer> work_serializer() const {
|
132
|
+
return work_serializer_;
|
133
|
+
}
|
136
134
|
|
137
135
|
ResultHandler* result_handler() const { return result_handler_.get(); }
|
138
136
|
|
139
137
|
private:
|
138
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
140
139
|
std::unique_ptr<ResultHandler> result_handler_;
|
141
|
-
Combiner* combiner_;
|
142
140
|
};
|
143
141
|
|
144
142
|
} // namespace grpc_core
|
@@ -24,12 +24,15 @@
|
|
24
24
|
#include <stdio.h>
|
25
25
|
#include <string.h>
|
26
26
|
|
27
|
+
#include "absl/container/inlined_vector.h"
|
28
|
+
|
27
29
|
#include <grpc/support/alloc.h>
|
28
30
|
#include <grpc/support/string_util.h>
|
29
31
|
|
30
32
|
#include <address_sorting/address_sorting.h>
|
31
33
|
|
32
34
|
#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
|
35
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
33
36
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
34
37
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
35
38
|
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
|
@@ -40,11 +43,11 @@
|
|
40
43
|
#include "src/core/lib/channel/channel_args.h"
|
41
44
|
#include "src/core/lib/gpr/string.h"
|
42
45
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
43
|
-
#include "src/core/lib/iomgr/combiner.h"
|
44
46
|
#include "src/core/lib/iomgr/gethostname.h"
|
45
47
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
46
48
|
#include "src/core/lib/iomgr/resolve_address.h"
|
47
49
|
#include "src/core/lib/iomgr/timer.h"
|
50
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
48
51
|
#include "src/core/lib/json/json.h"
|
49
52
|
|
50
53
|
#define GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
@@ -78,8 +81,8 @@ class AresDnsResolver : public Resolver {
|
|
78
81
|
|
79
82
|
static void OnNextResolution(void* arg, grpc_error* error);
|
80
83
|
static void OnResolved(void* arg, grpc_error* error);
|
81
|
-
|
82
|
-
|
84
|
+
void OnNextResolutionLocked(grpc_error* error);
|
85
|
+
void OnResolvedLocked(grpc_error* error);
|
83
86
|
|
84
87
|
/// DNS server to use (if not system default)
|
85
88
|
char* dns_server_;
|
@@ -91,7 +94,7 @@ class AresDnsResolver : public Resolver {
|
|
91
94
|
bool request_service_config_;
|
92
95
|
/// pollset_set to drive the name resolution process
|
93
96
|
grpc_pollset_set* interested_parties_;
|
94
|
-
/// closures used by the
|
97
|
+
/// closures used by the work_serializer
|
95
98
|
grpc_closure on_next_resolution_;
|
96
99
|
grpc_closure on_resolved_;
|
97
100
|
/// are we currently resolving?
|
@@ -107,8 +110,10 @@ class AresDnsResolver : public Resolver {
|
|
107
110
|
grpc_millis last_resolution_timestamp_ = -1;
|
108
111
|
/// retry backoff state
|
109
112
|
BackOff backoff_;
|
110
|
-
/// currently resolving addresses
|
113
|
+
/// currently resolving backend addresses
|
111
114
|
std::unique_ptr<ServerAddressList> addresses_;
|
115
|
+
/// currently resolving balancer addresses
|
116
|
+
std::unique_ptr<ServerAddressList> balancer_addresses_;
|
112
117
|
/// currently resolving service config
|
113
118
|
char* service_config_json_ = nullptr;
|
114
119
|
// has shutdown been initiated
|
@@ -120,7 +125,7 @@ class AresDnsResolver : public Resolver {
|
|
120
125
|
};
|
121
126
|
|
122
127
|
AresDnsResolver::AresDnsResolver(ResolverArgs args)
|
123
|
-
: Resolver(args.
|
128
|
+
: Resolver(std::move(args.work_serializer), std::move(args.result_handler)),
|
124
129
|
backoff_(
|
125
130
|
BackOff::Options()
|
126
131
|
.set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
|
@@ -128,6 +133,10 @@ AresDnsResolver::AresDnsResolver(ResolverArgs args)
|
|
128
133
|
.set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
|
129
134
|
.set_jitter(GRPC_DNS_RECONNECT_JITTER)
|
130
135
|
.set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
|
136
|
+
// Closure Initialization
|
137
|
+
GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
|
138
|
+
grpc_schedule_on_exec_ctx);
|
139
|
+
GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
|
131
140
|
// Get name to resolve from URI path.
|
132
141
|
const char* path = args.uri->path;
|
133
142
|
if (path[0] == '/') ++path;
|
@@ -201,26 +210,26 @@ void AresDnsResolver::ShutdownLocked() {
|
|
201
210
|
|
202
211
|
void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
|
203
212
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
204
|
-
|
205
|
-
|
206
|
-
|
213
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
214
|
+
r->work_serializer()->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
215
|
+
DEBUG_LOCATION);
|
207
216
|
}
|
208
217
|
|
209
|
-
void AresDnsResolver::OnNextResolutionLocked(
|
210
|
-
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
218
|
+
void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
211
219
|
GRPC_CARES_TRACE_LOG(
|
212
220
|
"resolver:%p re-resolution timer fired. error: %s. shutdown_initiated_: "
|
213
221
|
"%d",
|
214
|
-
|
215
|
-
|
216
|
-
if (error == GRPC_ERROR_NONE && !
|
217
|
-
if (!
|
222
|
+
this, grpc_error_string(error), shutdown_initiated_);
|
223
|
+
have_next_resolution_timer_ = false;
|
224
|
+
if (error == GRPC_ERROR_NONE && !shutdown_initiated_) {
|
225
|
+
if (!resolving_) {
|
218
226
|
GRPC_CARES_TRACE_LOG(
|
219
|
-
"resolver:%p start resolving due to re-resolution timer",
|
220
|
-
|
227
|
+
"resolver:%p start resolving due to re-resolution timer", this);
|
228
|
+
StartResolvingLocked();
|
221
229
|
}
|
222
230
|
}
|
223
|
-
|
231
|
+
Unref(DEBUG_LOCATION, "next_resolution_timer");
|
232
|
+
GRPC_ERROR_UNREF(error);
|
224
233
|
}
|
225
234
|
|
226
235
|
bool ValueInJsonArray(const Json::Array& array, const char* value) {
|
@@ -242,7 +251,7 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
|
|
242
251
|
return "";
|
243
252
|
}
|
244
253
|
const Json* service_config = nullptr;
|
245
|
-
InlinedVector<grpc_error*, 4> error_list;
|
254
|
+
absl::InlinedVector<grpc_error*, 4> error_list;
|
246
255
|
for (const Json& choice : json.array_value()) {
|
247
256
|
if (choice.type() != Json::Type::OBJECT) {
|
248
257
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -313,72 +322,79 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
|
|
313
322
|
|
314
323
|
void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
|
315
324
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
316
|
-
|
317
|
-
|
318
|
-
|
325
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
326
|
+
r->work_serializer()->Run([r, error]() { r->OnResolvedLocked(error); },
|
327
|
+
DEBUG_LOCATION);
|
319
328
|
}
|
320
329
|
|
321
|
-
void AresDnsResolver::OnResolvedLocked(
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
330
|
+
void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
|
331
|
+
GPR_ASSERT(resolving_);
|
332
|
+
resolving_ = false;
|
333
|
+
gpr_free(pending_request_);
|
334
|
+
pending_request_ = nullptr;
|
335
|
+
if (shutdown_initiated_) {
|
336
|
+
Unref(DEBUG_LOCATION, "OnResolvedLocked() shutdown");
|
337
|
+
GRPC_ERROR_UNREF(error);
|
329
338
|
return;
|
330
339
|
}
|
331
|
-
if (
|
340
|
+
if (addresses_ != nullptr || balancer_addresses_ != nullptr) {
|
332
341
|
Result result;
|
333
|
-
|
334
|
-
|
342
|
+
if (addresses_ != nullptr) {
|
343
|
+
result.addresses = std::move(*addresses_);
|
344
|
+
}
|
345
|
+
if (service_config_json_ != nullptr) {
|
335
346
|
std::string service_config_string = ChooseServiceConfig(
|
336
|
-
|
337
|
-
gpr_free(
|
347
|
+
service_config_json_, &result.service_config_error);
|
348
|
+
gpr_free(service_config_json_);
|
338
349
|
if (result.service_config_error == GRPC_ERROR_NONE &&
|
339
350
|
!service_config_string.empty()) {
|
340
351
|
GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
|
341
|
-
|
352
|
+
this, service_config_string.c_str());
|
342
353
|
result.service_config = ServiceConfig::Create(
|
343
354
|
service_config_string, &result.service_config_error);
|
344
355
|
}
|
345
356
|
}
|
346
|
-
|
347
|
-
|
348
|
-
|
357
|
+
absl::InlinedVector<grpc_arg, 1> new_args;
|
358
|
+
if (balancer_addresses_ != nullptr) {
|
359
|
+
new_args.push_back(
|
360
|
+
CreateGrpclbBalancerAddressesArg(balancer_addresses_.get()));
|
361
|
+
}
|
362
|
+
result.args = grpc_channel_args_copy_and_add(channel_args_, new_args.data(),
|
363
|
+
new_args.size());
|
364
|
+
result_handler()->ReturnResult(std::move(result));
|
365
|
+
addresses_.reset();
|
366
|
+
balancer_addresses_.reset();
|
349
367
|
// Reset backoff state so that we start from the beginning when the
|
350
368
|
// next request gets triggered.
|
351
|
-
|
369
|
+
backoff_.Reset();
|
352
370
|
} else {
|
353
|
-
GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s",
|
371
|
+
GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s", this,
|
354
372
|
grpc_error_string(error));
|
355
|
-
|
373
|
+
result_handler()->ReturnError(grpc_error_set_int(
|
356
374
|
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
357
375
|
"DNS resolution failed", &error, 1),
|
358
376
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
359
377
|
// Set retry timer.
|
360
|
-
grpc_millis next_try =
|
378
|
+
grpc_millis next_try = backoff_.NextAttemptTime();
|
361
379
|
grpc_millis timeout = next_try - ExecCtx::Get()->Now();
|
362
380
|
GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed (will retry): %s",
|
363
|
-
|
364
|
-
GPR_ASSERT(!
|
365
|
-
|
381
|
+
this, grpc_error_string(error));
|
382
|
+
GPR_ASSERT(!have_next_resolution_timer_);
|
383
|
+
have_next_resolution_timer_ = true;
|
366
384
|
// TODO(roth): We currently deal with this ref manually. Once the
|
367
385
|
// new closure API is done, find a way to track this ref with the timer
|
368
386
|
// callback as part of the type system.
|
369
|
-
|
387
|
+
Ref(DEBUG_LOCATION, "retry-timer").release();
|
370
388
|
if (timeout > 0) {
|
371
389
|
GRPC_CARES_TRACE_LOG("resolver:%p retrying in %" PRId64 " milliseconds",
|
372
|
-
|
390
|
+
this, timeout);
|
373
391
|
} else {
|
374
|
-
GRPC_CARES_TRACE_LOG("resolver:%p retrying immediately",
|
392
|
+
GRPC_CARES_TRACE_LOG("resolver:%p retrying immediately", this);
|
375
393
|
}
|
376
|
-
|
377
|
-
grpc_schedule_on_exec_ctx);
|
378
|
-
grpc_timer_init(&r->next_resolution_timer_, next_try,
|
379
|
-
&r->on_next_resolution_);
|
394
|
+
grpc_timer_init(&next_resolution_timer_, next_try, &on_next_resolution_);
|
380
395
|
}
|
381
|
-
|
396
|
+
Unref(DEBUG_LOCATION, "dns-resolving");
|
397
|
+
GRPC_ERROR_UNREF(error);
|
382
398
|
}
|
383
399
|
|
384
400
|
void AresDnsResolver::MaybeStartResolvingLocked() {
|
@@ -402,8 +418,6 @@ void AresDnsResolver::MaybeStartResolvingLocked() {
|
|
402
418
|
// new closure API is done, find a way to track this ref with the timer
|
403
419
|
// callback as part of the type system.
|
404
420
|
Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
|
405
|
-
GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
|
406
|
-
grpc_schedule_on_exec_ctx);
|
407
421
|
grpc_timer_init(&next_resolution_timer_,
|
408
422
|
ExecCtx::Get()->Now() + ms_until_next_resolution,
|
409
423
|
&on_next_resolution_);
|
@@ -421,12 +435,12 @@ void AresDnsResolver::StartResolvingLocked() {
|
|
421
435
|
GPR_ASSERT(!resolving_);
|
422
436
|
resolving_ = true;
|
423
437
|
service_config_json_ = nullptr;
|
424
|
-
GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
|
425
438
|
pending_request_ = grpc_dns_lookup_ares_locked(
|
426
439
|
dns_server_, name_to_resolve_, kDefaultPort, interested_parties_,
|
427
|
-
&on_resolved_, &addresses_,
|
440
|
+
&on_resolved_, &addresses_,
|
441
|
+
enable_srv_queries_ ? &balancer_addresses_ : nullptr,
|
428
442
|
request_service_config_ ? &service_config_json_ : nullptr,
|
429
|
-
query_timeout_ms_,
|
443
|
+
query_timeout_ms_, work_serializer());
|
430
444
|
last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
|
431
445
|
GRPC_CARES_TRACE_LOG("resolver:%p Started resolving. pending_request_:%p",
|
432
446
|
this, pending_request_);
|