grpc 1.28.0.pre2 → 1.31.0.pre1
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 +8313 -11862
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/grpc_types.h +23 -23
- data/include/grpc/impl/codegen/port_platform.h +6 -34
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
- data/src/core/ext/filters/client_channel/client_channel.cc +618 -482
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +9 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +44 -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 +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +311 -497
- 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 +9 -17
- 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 +117 -41
- 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 +1142 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
- 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 +78 -61
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
- 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 +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
- 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 +46 -45
- 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 +64 -12
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +73 -217
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +45 -27
- 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_channel_arg_filter.cc +142 -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 +55 -25
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1200 -246
- data/src/core/ext/filters/client_channel/xds/xds_api.h +130 -44
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +90 -29
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +9 -4
- 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 +839 -431
- data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -33
- 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 +40 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -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 +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- 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.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- 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 +27 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +54 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- 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 -876
- 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 +429 -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 +198 -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 +388 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
- 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/circuit_breaker.upb.h +42 -34
- 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/filter.upb.h +7 -7
- 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/cluster/outlier_detection.upb.h +79 -61
- 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/address.upb.h +55 -49
- 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 +79 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
- 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/config_source.upb.h +51 -45
- 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 +71 -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/grpc_service.upb.h +107 -100
- 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 +157 -122
- 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/http_uri.upb.h +9 -9
- 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 +173 -73
- 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 +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- 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.upb.h +0 -1
- 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 +53 -38
- 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/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- 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 +95 -63
- 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.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- 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/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- 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.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +68 -46
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- 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 +305 -210
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- 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/discovery/v2/ads.upb.h +1 -2
- 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 +22 -16
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- 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 +48 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +12 -11
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
- 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/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +10 -21
- 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/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +10 -33
- data/src/core/lib/gpr/string.h +4 -18
- 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/global_config_env.cc +8 -6
- 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/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +15 -13
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- 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 +4 -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/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- 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 +25 -29
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- 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 +2 -21
- 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 +42 -57
- 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 +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +38 -37
- data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
- data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
- 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 +102 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +3 -4
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +11 -23
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- 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 +15 -15
- 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 +32 -36
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +25 -26
- 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 +13 -62
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -17
- 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.cc +7 -4
- 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 +73 -54
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -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 +48 -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 +17 -17
- 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.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +2 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
- data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +15 -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 +42 -44
- 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 +304 -47
- data/src/core/lib/surface/completion_queue.h +8 -0
- 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.cc +2 -0
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +971 -837
- data/src/core/lib/surface/server.h +66 -12
- 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 +9 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- 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 +154 -50
- data/src/core/tsi/ssl_transport_security.h +22 -10
- 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 +8 -3
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- 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 +5 -5
- 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_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
- data/src/ruby/spec/support/services.rb +10 -4
- 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 +335 -297
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- 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 +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -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/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -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 +25 -12
- 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 +434 -161
- 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 +18 -25
- 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 +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -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/util.c +3 -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/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- 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 +249 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +57 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +33 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -2
- 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/evp.h +69 -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 +191 -79
- 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 +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
- 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 +23 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
- 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 +34 -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 +44 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
- 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 +129 -48
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
- 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
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +122 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1908
- 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
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -26,6 +26,10 @@
|
|
26
26
|
#include <string.h>
|
27
27
|
#include <sys/types.h>
|
28
28
|
|
29
|
+
#include "absl/container/inlined_vector.h"
|
30
|
+
#include "absl/strings/str_cat.h"
|
31
|
+
#include "absl/strings/str_format.h"
|
32
|
+
|
29
33
|
#include <ares.h>
|
30
34
|
#include <grpc/support/alloc.h>
|
31
35
|
#include <grpc/support/log.h>
|
@@ -33,11 +37,11 @@
|
|
33
37
|
#include <grpc/support/time.h>
|
34
38
|
|
35
39
|
#include <address_sorting/address_sorting.h>
|
40
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
36
41
|
#include "src/core/ext/filters/client_channel/parse_address.h"
|
37
42
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
38
43
|
#include "src/core/lib/gpr/string.h"
|
39
44
|
#include "src/core/lib/gprpp/host_port.h"
|
40
|
-
#include "src/core/lib/iomgr/combiner.h"
|
41
45
|
#include "src/core/lib/iomgr/error.h"
|
42
46
|
#include "src/core/lib/iomgr/executor.h"
|
43
47
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
@@ -60,6 +64,8 @@ struct grpc_ares_request {
|
|
60
64
|
grpc_closure* on_done;
|
61
65
|
/** the pointer to receive the resolved addresses */
|
62
66
|
std::unique_ptr<grpc_core::ServerAddressList>* addresses_out;
|
67
|
+
/** the pointer to receive the resolved balancer addresses */
|
68
|
+
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses_out;
|
63
69
|
/** the pointer to receive the service config in JSON */
|
64
70
|
char** service_config_json_out;
|
65
71
|
/** the evernt driver used by this request */
|
@@ -71,6 +77,8 @@ struct grpc_ares_request {
|
|
71
77
|
grpc_error* error;
|
72
78
|
};
|
73
79
|
|
80
|
+
// TODO(apolcyn): make grpc_ares_hostbyname_request a sub-class
|
81
|
+
// of GrpcAresQuery.
|
74
82
|
typedef struct grpc_ares_hostbyname_request {
|
75
83
|
/** following members are set in create_hostbyname_request_locked
|
76
84
|
*/
|
@@ -82,27 +90,54 @@ typedef struct grpc_ares_hostbyname_request {
|
|
82
90
|
uint16_t port;
|
83
91
|
/** is it a grpclb address */
|
84
92
|
bool is_balancer;
|
93
|
+
/** for logging and errors: the query type ("A" or "AAAA") */
|
94
|
+
const char* qtype;
|
85
95
|
} grpc_ares_hostbyname_request;
|
86
96
|
|
87
|
-
static void
|
97
|
+
static void grpc_ares_request_ref_locked(grpc_ares_request* r);
|
98
|
+
static void grpc_ares_request_unref_locked(grpc_ares_request* r);
|
99
|
+
|
100
|
+
// TODO(apolcyn): as a part of C++-ification, find a way to
|
101
|
+
// organize per-query and per-resolution information in such a way
|
102
|
+
// that doesn't involve allocating a number of different data
|
103
|
+
// structures.
|
104
|
+
class GrpcAresQuery {
|
105
|
+
public:
|
106
|
+
explicit GrpcAresQuery(grpc_ares_request* r, const std::string& name)
|
107
|
+
: r_(r), name_(name) {
|
108
|
+
grpc_ares_request_ref_locked(r_);
|
109
|
+
}
|
110
|
+
|
111
|
+
~GrpcAresQuery() { grpc_ares_request_unref_locked(r_); }
|
112
|
+
|
113
|
+
grpc_ares_request* parent_request() { return r_; }
|
114
|
+
|
115
|
+
const std::string& name() { return name_; }
|
116
|
+
|
117
|
+
private:
|
118
|
+
/* the top level request instance */
|
119
|
+
grpc_ares_request* r_;
|
120
|
+
/** for logging and errors */
|
121
|
+
const std::string name_;
|
122
|
+
};
|
123
|
+
|
124
|
+
static void log_address_sorting_list(const grpc_ares_request* r,
|
125
|
+
const ServerAddressList& addresses,
|
88
126
|
const char* input_output_str) {
|
89
127
|
for (size_t i = 0; i < addresses.size(); i++) {
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
gpr_log(GPR_INFO,
|
97
|
-
"c-ares address sorting: %s[%" PRIuPTR "]=<unprintable>",
|
98
|
-
input_output_str, i);
|
99
|
-
}
|
128
|
+
std::string addr_str =
|
129
|
+
grpc_sockaddr_to_string(&addresses[i].address(), true);
|
130
|
+
gpr_log(GPR_INFO,
|
131
|
+
"(c-ares resolver) request:%p c-ares address sorting: %s[%" PRIuPTR
|
132
|
+
"]=%s",
|
133
|
+
r, input_output_str, i, addr_str.c_str());
|
100
134
|
}
|
101
135
|
}
|
102
136
|
|
103
|
-
void grpc_cares_wrapper_address_sorting_sort(
|
137
|
+
void grpc_cares_wrapper_address_sorting_sort(const grpc_ares_request* r,
|
138
|
+
ServerAddressList* addresses) {
|
104
139
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_cares_address_sorting)) {
|
105
|
-
log_address_sorting_list(*addresses, "input");
|
140
|
+
log_address_sorting_list(r, *addresses, "input");
|
106
141
|
}
|
107
142
|
address_sorting_sortable* sortables = (address_sorting_sortable*)gpr_zalloc(
|
108
143
|
sizeof(address_sorting_sortable) * addresses->size());
|
@@ -121,7 +156,7 @@ void grpc_cares_wrapper_address_sorting_sort(ServerAddressList* addresses) {
|
|
121
156
|
gpr_free(sortables);
|
122
157
|
*addresses = std::move(sorted);
|
123
158
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_cares_address_sorting)) {
|
124
|
-
log_address_sorting_list(*addresses, "output");
|
159
|
+
log_address_sorting_list(r, *addresses, "output");
|
125
160
|
}
|
126
161
|
}
|
127
162
|
|
@@ -142,28 +177,36 @@ void grpc_ares_complete_request_locked(grpc_ares_request* r) {
|
|
142
177
|
r->ev_driver = nullptr;
|
143
178
|
ServerAddressList* addresses = r->addresses_out->get();
|
144
179
|
if (addresses != nullptr) {
|
145
|
-
grpc_cares_wrapper_address_sorting_sort(addresses);
|
180
|
+
grpc_cares_wrapper_address_sorting_sort(r, addresses);
|
146
181
|
GRPC_ERROR_UNREF(r->error);
|
147
182
|
r->error = GRPC_ERROR_NONE;
|
148
183
|
// TODO(apolcyn): allow c-ares to return a service config
|
149
184
|
// with no addresses along side it
|
150
185
|
}
|
186
|
+
if (r->balancer_addresses_out != nullptr) {
|
187
|
+
ServerAddressList* balancer_addresses = r->balancer_addresses_out->get();
|
188
|
+
if (balancer_addresses != nullptr) {
|
189
|
+
grpc_cares_wrapper_address_sorting_sort(r, balancer_addresses);
|
190
|
+
}
|
191
|
+
}
|
151
192
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, r->error);
|
152
193
|
}
|
153
194
|
|
195
|
+
/* Note that the returned object takes a reference to qtype, so
|
196
|
+
* qtype must outlive it. */
|
154
197
|
static grpc_ares_hostbyname_request* create_hostbyname_request_locked(
|
155
|
-
grpc_ares_request* parent_request, char* host, uint16_t port,
|
156
|
-
bool is_balancer) {
|
198
|
+
grpc_ares_request* parent_request, const char* host, uint16_t port,
|
199
|
+
bool is_balancer, const char* qtype) {
|
157
200
|
GRPC_CARES_TRACE_LOG(
|
158
201
|
"request:%p create_hostbyname_request_locked host:%s port:%d "
|
159
|
-
"is_balancer:%d",
|
160
|
-
parent_request, host, port, is_balancer);
|
161
|
-
grpc_ares_hostbyname_request* hr =
|
162
|
-
gpr_zalloc(sizeof(grpc_ares_hostbyname_request)));
|
202
|
+
"is_balancer:%d qtype:%s",
|
203
|
+
parent_request, host, port, is_balancer, qtype);
|
204
|
+
grpc_ares_hostbyname_request* hr = new grpc_ares_hostbyname_request();
|
163
205
|
hr->parent_request = parent_request;
|
164
206
|
hr->host = gpr_strdup(host);
|
165
207
|
hr->port = port;
|
166
208
|
hr->is_balancer = is_balancer;
|
209
|
+
hr->qtype = qtype;
|
167
210
|
grpc_ares_request_ref_locked(parent_request);
|
168
211
|
return hr;
|
169
212
|
}
|
@@ -172,7 +215,7 @@ static void destroy_hostbyname_request_locked(
|
|
172
215
|
grpc_ares_hostbyname_request* hr) {
|
173
216
|
grpc_ares_request_unref_locked(hr->parent_request);
|
174
217
|
gpr_free(hr->host);
|
175
|
-
|
218
|
+
delete hr;
|
176
219
|
}
|
177
220
|
|
178
221
|
static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
@@ -182,19 +225,19 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
182
225
|
grpc_ares_request* r = hr->parent_request;
|
183
226
|
if (status == ARES_SUCCESS) {
|
184
227
|
GRPC_CARES_TRACE_LOG(
|
185
|
-
"request:%p on_hostbyname_done_locked host=%s ARES_SUCCESS", r,
|
186
|
-
hr->host);
|
187
|
-
|
188
|
-
|
228
|
+
"request:%p on_hostbyname_done_locked qtype=%s host=%s ARES_SUCCESS", r,
|
229
|
+
hr->qtype, hr->host);
|
230
|
+
std::unique_ptr<ServerAddressList>* address_list_ptr =
|
231
|
+
hr->is_balancer ? r->balancer_addresses_out : r->addresses_out;
|
232
|
+
if (*address_list_ptr == nullptr) {
|
233
|
+
*address_list_ptr = absl::make_unique<ServerAddressList>();
|
189
234
|
}
|
190
|
-
ServerAddressList& addresses = **
|
235
|
+
ServerAddressList& addresses = **address_list_ptr;
|
191
236
|
for (size_t i = 0; hostent->h_addr_list[i] != nullptr; ++i) {
|
192
|
-
|
237
|
+
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
193
238
|
if (hr->is_balancer) {
|
194
|
-
args_to_add.emplace_back(
|
195
|
-
|
196
|
-
args_to_add.emplace_back(grpc_channel_arg_string_create(
|
197
|
-
const_cast<char*>(GRPC_ARG_ADDRESS_BALANCER_NAME), hr->host));
|
239
|
+
args_to_add.emplace_back(
|
240
|
+
grpc_core::CreateGrpclbBalancerNameArg(hr->host));
|
198
241
|
}
|
199
242
|
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
200
243
|
nullptr, args_to_add.data(), args_to_add.size());
|
@@ -236,13 +279,12 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
236
279
|
}
|
237
280
|
}
|
238
281
|
} else {
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
GRPC_CARES_TRACE_LOG("request:%p on_hostbyname_done_locked
|
243
|
-
|
244
|
-
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
245
|
-
gpr_free(error_msg);
|
282
|
+
std::string error_msg = absl::StrFormat(
|
283
|
+
"C-ares status is not ARES_SUCCESS qtype=%s name=%s is_balancer=%d: %s",
|
284
|
+
hr->qtype, hr->host, hr->is_balancer, ares_strerror(status));
|
285
|
+
GRPC_CARES_TRACE_LOG("request:%p on_hostbyname_done_locked: %s", r,
|
286
|
+
error_msg.c_str());
|
287
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
|
246
288
|
r->error = grpc_error_add_child(error, r->error);
|
247
289
|
}
|
248
290
|
destroy_hostbyname_request_locked(hr);
|
@@ -250,9 +292,12 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
|
250
292
|
|
251
293
|
static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
252
294
|
unsigned char* abuf, int alen) {
|
253
|
-
|
295
|
+
GrpcAresQuery* q = static_cast<GrpcAresQuery*>(arg);
|
296
|
+
grpc_ares_request* r = q->parent_request();
|
254
297
|
if (status == ARES_SUCCESS) {
|
255
|
-
GRPC_CARES_TRACE_LOG(
|
298
|
+
GRPC_CARES_TRACE_LOG(
|
299
|
+
"request:%p on_srv_query_done_locked name=%s ARES_SUCCESS", r,
|
300
|
+
q->name().c_str());
|
256
301
|
struct ares_srv_reply* reply;
|
257
302
|
const int parse_status = ares_parse_srv_reply(abuf, alen, &reply);
|
258
303
|
GRPC_CARES_TRACE_LOG("request:%p ares_parse_srv_reply: %d", r,
|
@@ -264,12 +309,13 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
|
264
309
|
srv_it = srv_it->next) {
|
265
310
|
if (grpc_ares_query_ipv6()) {
|
266
311
|
grpc_ares_hostbyname_request* hr = create_hostbyname_request_locked(
|
267
|
-
r, srv_it->host, htons(srv_it->port), true /* is_balancer
|
312
|
+
r, srv_it->host, htons(srv_it->port), true /* is_balancer */,
|
313
|
+
"AAAA");
|
268
314
|
ares_gethostbyname(*channel, hr->host, AF_INET6,
|
269
315
|
on_hostbyname_done_locked, hr);
|
270
316
|
}
|
271
317
|
grpc_ares_hostbyname_request* hr = create_hostbyname_request_locked(
|
272
|
-
r, srv_it->host, htons(srv_it->port), true /* is_balancer
|
318
|
+
r, srv_it->host, htons(srv_it->port), true /* is_balancer */, "A");
|
273
319
|
ares_gethostbyname(*channel, hr->host, AF_INET,
|
274
320
|
on_hostbyname_done_locked, hr);
|
275
321
|
grpc_ares_ev_driver_start_locked(r->ev_driver);
|
@@ -279,30 +325,31 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
|
279
325
|
ares_free_data(reply);
|
280
326
|
}
|
281
327
|
} else {
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
GRPC_CARES_TRACE_LOG("request:%p on_srv_query_done_locked %s", r,
|
286
|
-
error_msg);
|
287
|
-
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
288
|
-
gpr_free(error_msg);
|
328
|
+
std::string error_msg = absl::StrFormat(
|
329
|
+
"C-ares status is not ARES_SUCCESS qtype=SRV name=%s: %s", q->name(),
|
330
|
+
ares_strerror(status));
|
331
|
+
GRPC_CARES_TRACE_LOG("request:%p on_srv_query_done_locked: %s", r,
|
332
|
+
error_msg.c_str());
|
333
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
|
289
334
|
r->error = grpc_error_add_child(error, r->error);
|
290
335
|
}
|
291
|
-
|
336
|
+
delete q;
|
292
337
|
}
|
293
338
|
|
294
339
|
static const char g_service_config_attribute_prefix[] = "grpc_config=";
|
295
340
|
|
296
341
|
static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
|
297
342
|
unsigned char* buf, int len) {
|
298
|
-
|
299
|
-
|
343
|
+
GrpcAresQuery* q = static_cast<GrpcAresQuery*>(arg);
|
344
|
+
std::unique_ptr<GrpcAresQuery> query_deleter(q);
|
345
|
+
grpc_ares_request* r = q->parent_request();
|
300
346
|
const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1;
|
301
347
|
struct ares_txt_ext* result = nullptr;
|
302
348
|
struct ares_txt_ext* reply = nullptr;
|
303
349
|
grpc_error* error = GRPC_ERROR_NONE;
|
304
350
|
if (status != ARES_SUCCESS) goto fail;
|
305
|
-
GRPC_CARES_TRACE_LOG("request:%p on_txt_done_locked ARES_SUCCESS", r
|
351
|
+
GRPC_CARES_TRACE_LOG("request:%p on_txt_done_locked name=%s ARES_SUCCESS", r,
|
352
|
+
q->name().c_str());
|
306
353
|
status = ares_parse_txt_reply_ext(buf, len, &reply);
|
307
354
|
if (status != ARES_SUCCESS) goto fail;
|
308
355
|
// Find service config in TXT record.
|
@@ -335,45 +382,46 @@ static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
|
|
335
382
|
}
|
336
383
|
// Clean up.
|
337
384
|
ares_free_data(reply);
|
338
|
-
|
385
|
+
return;
|
339
386
|
fail:
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
387
|
+
std::string error_msg =
|
388
|
+
absl::StrFormat("C-ares status is not ARES_SUCCESS qtype=TXT name=%s: %s",
|
389
|
+
q->name(), ares_strerror(status));
|
390
|
+
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg.c_str());
|
391
|
+
GRPC_CARES_TRACE_LOG("request:%p on_txt_done_locked %s", r,
|
392
|
+
error_msg.c_str());
|
345
393
|
r->error = grpc_error_add_child(error, r->error);
|
346
|
-
done:
|
347
|
-
grpc_ares_request_unref_locked(r);
|
348
394
|
}
|
349
395
|
|
350
396
|
void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
351
397
|
grpc_ares_request* r, const char* dns_server, const char* name,
|
352
398
|
const char* default_port, grpc_pollset_set* interested_parties,
|
353
|
-
|
399
|
+
int query_timeout_ms,
|
400
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
|
354
401
|
grpc_error* error = GRPC_ERROR_NONE;
|
355
402
|
grpc_ares_hostbyname_request* hr = nullptr;
|
356
403
|
ares_channel* channel = nullptr;
|
357
404
|
/* parse name, splitting it into host and port parts */
|
358
|
-
|
359
|
-
|
405
|
+
std::string host;
|
406
|
+
std::string port;
|
360
407
|
grpc_core::SplitHostPort(name, &host, &port);
|
361
|
-
if (host
|
408
|
+
if (host.empty()) {
|
362
409
|
error = grpc_error_set_str(
|
363
410
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
|
364
411
|
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
365
412
|
goto error_cleanup;
|
366
|
-
} else if (port
|
413
|
+
} else if (port.empty()) {
|
367
414
|
if (default_port == nullptr) {
|
368
415
|
error = grpc_error_set_str(
|
369
416
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
|
370
417
|
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
371
418
|
goto error_cleanup;
|
372
419
|
}
|
373
|
-
port
|
420
|
+
port = default_port;
|
374
421
|
}
|
375
422
|
error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
|
376
|
-
query_timeout_ms,
|
423
|
+
query_timeout_ms,
|
424
|
+
std::move(work_serializer), r);
|
377
425
|
if (error != GRPC_ERROR_NONE) goto error_cleanup;
|
378
426
|
channel = grpc_ares_ev_driver_get_channel_locked(r->ev_driver);
|
379
427
|
// If dns_server is specified, use it.
|
@@ -404,43 +452,38 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
404
452
|
}
|
405
453
|
int status = ares_set_servers_ports(*channel, &r->dns_server_addr);
|
406
454
|
if (status != ARES_SUCCESS) {
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
gpr_free(error_msg);
|
455
|
+
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
456
|
+
absl::StrCat("C-ares status is not ARES_SUCCESS: ",
|
457
|
+
ares_strerror(status))
|
458
|
+
.c_str());
|
412
459
|
goto error_cleanup;
|
413
460
|
}
|
414
461
|
}
|
415
462
|
r->pending_queries = 1;
|
416
463
|
if (grpc_ares_query_ipv6()) {
|
417
|
-
hr = create_hostbyname_request_locked(r, host.
|
418
|
-
grpc_strhtons(port.
|
419
|
-
/*is_balancer=*/false);
|
464
|
+
hr = create_hostbyname_request_locked(r, host.c_str(),
|
465
|
+
grpc_strhtons(port.c_str()),
|
466
|
+
/*is_balancer=*/false, "AAAA");
|
420
467
|
ares_gethostbyname(*channel, hr->host, AF_INET6, on_hostbyname_done_locked,
|
421
468
|
hr);
|
422
469
|
}
|
423
|
-
hr =
|
424
|
-
|
425
|
-
|
470
|
+
hr = create_hostbyname_request_locked(r, host.c_str(),
|
471
|
+
grpc_strhtons(port.c_str()),
|
472
|
+
/*is_balancer=*/false, "A");
|
426
473
|
ares_gethostbyname(*channel, hr->host, AF_INET, on_hostbyname_done_locked,
|
427
474
|
hr);
|
428
|
-
if (
|
475
|
+
if (r->balancer_addresses_out != nullptr) {
|
429
476
|
/* Query the SRV record */
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
on_srv_query_done_locked, r);
|
435
|
-
gpr_free(service_name);
|
477
|
+
std::string service_name = absl::StrCat("_grpclb._tcp.", host);
|
478
|
+
GrpcAresQuery* srv_query = new GrpcAresQuery(r, service_name);
|
479
|
+
ares_query(*channel, service_name.c_str(), ns_c_in, ns_t_srv,
|
480
|
+
on_srv_query_done_locked, srv_query);
|
436
481
|
}
|
437
482
|
if (r->service_config_json_out != nullptr) {
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
r);
|
443
|
-
gpr_free(config_name);
|
483
|
+
std::string config_name = absl::StrCat("_grpc_config.", host);
|
484
|
+
GrpcAresQuery* txt_query = new GrpcAresQuery(r, config_name);
|
485
|
+
ares_search(*channel, config_name.c_str(), ns_c_in, ns_t_txt,
|
486
|
+
on_txt_done_locked, txt_query);
|
444
487
|
}
|
445
488
|
grpc_ares_ev_driver_start_locked(r->ev_driver);
|
446
489
|
grpc_ares_request_unref_locked(r);
|
@@ -452,18 +495,16 @@ error_cleanup:
|
|
452
495
|
|
453
496
|
static bool inner_resolve_as_ip_literal_locked(
|
454
497
|
const char* name, const char* default_port,
|
455
|
-
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
456
|
-
|
457
|
-
|
458
|
-
grpc_core::SplitHostPort(name, host, port);
|
459
|
-
if (*host == nullptr) {
|
498
|
+
std::unique_ptr<grpc_core::ServerAddressList>* addrs, std::string* host,
|
499
|
+
std::string* port, std::string* hostport) {
|
500
|
+
if (!grpc_core::SplitHostPort(name, host, port)) {
|
460
501
|
gpr_log(GPR_ERROR,
|
461
502
|
"Failed to parse %s to host:port while attempting to resolve as ip "
|
462
503
|
"literal.",
|
463
504
|
name);
|
464
505
|
return false;
|
465
506
|
}
|
466
|
-
if (
|
507
|
+
if (port->empty()) {
|
467
508
|
if (default_port == nullptr) {
|
468
509
|
gpr_log(GPR_ERROR,
|
469
510
|
"No port or default port for %s while attempting to resolve as "
|
@@ -471,13 +512,13 @@ static bool inner_resolve_as_ip_literal_locked(
|
|
471
512
|
name);
|
472
513
|
return false;
|
473
514
|
}
|
474
|
-
port
|
515
|
+
*port = default_port;
|
475
516
|
}
|
476
517
|
grpc_resolved_address addr;
|
477
|
-
|
478
|
-
if (grpc_parse_ipv4_hostport(hostport->
|
518
|
+
*hostport = grpc_core::JoinHostPort(*host, atoi(port->c_str()));
|
519
|
+
if (grpc_parse_ipv4_hostport(hostport->c_str(), &addr,
|
479
520
|
false /* log errors */) ||
|
480
|
-
grpc_parse_ipv6_hostport(hostport->
|
521
|
+
grpc_parse_ipv6_hostport(hostport->c_str(), &addr,
|
481
522
|
false /* log errors */)) {
|
482
523
|
GPR_ASSERT(*addrs == nullptr);
|
483
524
|
*addrs = absl::make_unique<ServerAddressList>();
|
@@ -490,22 +531,21 @@ static bool inner_resolve_as_ip_literal_locked(
|
|
490
531
|
static bool resolve_as_ip_literal_locked(
|
491
532
|
const char* name, const char* default_port,
|
492
533
|
std::unique_ptr<grpc_core::ServerAddressList>* addrs) {
|
493
|
-
|
494
|
-
|
495
|
-
|
534
|
+
std::string host;
|
535
|
+
std::string port;
|
536
|
+
std::string hostport;
|
496
537
|
bool out = inner_resolve_as_ip_literal_locked(name, default_port, addrs,
|
497
538
|
&host, &port, &hostport);
|
498
539
|
return out;
|
499
540
|
}
|
500
541
|
|
501
|
-
static bool target_matches_localhost_inner(const char* name,
|
502
|
-
|
503
|
-
grpc_core::UniquePtr<char>* port) {
|
542
|
+
static bool target_matches_localhost_inner(const char* name, std::string* host,
|
543
|
+
std::string* port) {
|
504
544
|
if (!grpc_core::SplitHostPort(name, host, port)) {
|
505
545
|
gpr_log(GPR_ERROR, "Unable to split host and port for name: %s", name);
|
506
546
|
return false;
|
507
547
|
}
|
508
|
-
if (gpr_stricmp(host->
|
548
|
+
if (gpr_stricmp(host->c_str(), "localhost") == 0) {
|
509
549
|
return true;
|
510
550
|
} else {
|
511
551
|
return false;
|
@@ -513,25 +553,25 @@ static bool target_matches_localhost_inner(const char* name,
|
|
513
553
|
}
|
514
554
|
|
515
555
|
static bool target_matches_localhost(const char* name) {
|
516
|
-
|
517
|
-
|
556
|
+
std::string host;
|
557
|
+
std::string port;
|
518
558
|
return target_matches_localhost_inner(name, &host, &port);
|
519
559
|
}
|
520
560
|
|
521
561
|
#ifdef GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY
|
522
562
|
static bool inner_maybe_resolve_localhost_manually_locked(
|
523
|
-
const char* name, const char* default_port,
|
524
|
-
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
525
|
-
|
563
|
+
const grpc_ares_request* r, const char* name, const char* default_port,
|
564
|
+
std::unique_ptr<grpc_core::ServerAddressList>* addrs, std::string* host,
|
565
|
+
std::string* port) {
|
526
566
|
grpc_core::SplitHostPort(name, host, port);
|
527
|
-
if (
|
567
|
+
if (host->empty()) {
|
528
568
|
gpr_log(GPR_ERROR,
|
529
569
|
"Failed to parse %s into host:port during manual localhost "
|
530
570
|
"resolution check.",
|
531
571
|
name);
|
532
572
|
return false;
|
533
573
|
}
|
534
|
-
if (
|
574
|
+
if (port->empty()) {
|
535
575
|
if (default_port == nullptr) {
|
536
576
|
gpr_log(GPR_ERROR,
|
537
577
|
"No port or default port for %s during manual localhost "
|
@@ -539,12 +579,12 @@ static bool inner_maybe_resolve_localhost_manually_locked(
|
|
539
579
|
name);
|
540
580
|
return false;
|
541
581
|
}
|
542
|
-
port
|
582
|
+
*port = default_port;
|
543
583
|
}
|
544
|
-
if (gpr_stricmp(host->
|
584
|
+
if (gpr_stricmp(host->c_str(), "localhost") == 0) {
|
545
585
|
GPR_ASSERT(*addrs == nullptr);
|
546
586
|
*addrs = absl::make_unique<grpc_core::ServerAddressList>();
|
547
|
-
uint16_t numeric_port = grpc_strhtons(port->
|
587
|
+
uint16_t numeric_port = grpc_strhtons(port->c_str());
|
548
588
|
// Append the ipv6 loopback address.
|
549
589
|
struct sockaddr_in6 ipv6_loopback_addr;
|
550
590
|
memset(&ipv6_loopback_addr, 0, sizeof(ipv6_loopback_addr));
|
@@ -563,23 +603,24 @@ static bool inner_maybe_resolve_localhost_manually_locked(
|
|
563
603
|
(*addrs)->emplace_back(&ipv4_loopback_addr, sizeof(ipv4_loopback_addr),
|
564
604
|
nullptr /* args */);
|
565
605
|
// Let the address sorter figure out which one should be tried first.
|
566
|
-
grpc_cares_wrapper_address_sorting_sort(addrs->get());
|
606
|
+
grpc_cares_wrapper_address_sorting_sort(r, addrs->get());
|
567
607
|
return true;
|
568
608
|
}
|
569
609
|
return false;
|
570
610
|
}
|
571
611
|
|
572
612
|
static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
573
|
-
const char* name, const char* default_port,
|
613
|
+
const grpc_ares_request* r, const char* name, const char* default_port,
|
574
614
|
std::unique_ptr<grpc_core::ServerAddressList>* addrs) {
|
575
|
-
|
576
|
-
|
577
|
-
return inner_maybe_resolve_localhost_manually_locked(name, default_port,
|
615
|
+
std::string host;
|
616
|
+
std::string port;
|
617
|
+
return inner_maybe_resolve_localhost_manually_locked(r, name, default_port,
|
578
618
|
addrs, &host, &port);
|
579
619
|
}
|
580
620
|
#else /* GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY */
|
581
621
|
static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
582
|
-
const
|
622
|
+
const grpc_ares_request* /*r*/, const char* /*name*/,
|
623
|
+
const char* /*default_port*/,
|
583
624
|
std::unique_ptr<grpc_core::ServerAddressList>* /*addrs*/) {
|
584
625
|
return false;
|
585
626
|
}
|
@@ -588,14 +629,16 @@ static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
|
588
629
|
static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
589
630
|
const char* dns_server, const char* name, const char* default_port,
|
590
631
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
591
|
-
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
632
|
+
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
633
|
+
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
|
592
634
|
char** service_config_json, int query_timeout_ms,
|
593
|
-
grpc_core::
|
635
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
|
594
636
|
grpc_ares_request* r =
|
595
637
|
static_cast<grpc_ares_request*>(gpr_zalloc(sizeof(grpc_ares_request)));
|
596
638
|
r->ev_driver = nullptr;
|
597
639
|
r->on_done = on_done;
|
598
640
|
r->addresses_out = addrs;
|
641
|
+
r->balancer_addresses_out = balancer_addrs;
|
599
642
|
r->service_config_json_out = service_config_json;
|
600
643
|
r->error = GRPC_ERROR_NONE;
|
601
644
|
r->pending_queries = 0;
|
@@ -609,7 +652,7 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
|
609
652
|
return r;
|
610
653
|
}
|
611
654
|
// Early out if the target is localhost and we're on Windows.
|
612
|
-
if (grpc_ares_maybe_resolve_localhost_manually_locked(name, default_port,
|
655
|
+
if (grpc_ares_maybe_resolve_localhost_manually_locked(r, name, default_port,
|
613
656
|
addrs)) {
|
614
657
|
grpc_ares_complete_request_locked(r);
|
615
658
|
return r;
|
@@ -618,22 +661,24 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
|
618
661
|
// as to cut down on lookups over the network, especially in tests:
|
619
662
|
// https://github.com/grpc/proposal/pull/79
|
620
663
|
if (target_matches_localhost(name)) {
|
621
|
-
|
664
|
+
r->balancer_addresses_out = nullptr;
|
622
665
|
r->service_config_json_out = nullptr;
|
623
666
|
}
|
624
667
|
// Look up name using c-ares lib.
|
625
668
|
grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
626
|
-
r, dns_server, name, default_port, interested_parties,
|
627
|
-
|
669
|
+
r, dns_server, name, default_port, interested_parties, query_timeout_ms,
|
670
|
+
std::move(work_serializer));
|
628
671
|
return r;
|
629
672
|
}
|
630
673
|
|
631
674
|
grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
632
675
|
const char* dns_server, const char* name, const char* default_port,
|
633
676
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
634
|
-
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
677
|
+
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
|
678
|
+
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
|
635
679
|
char** service_config_json, int query_timeout_ms,
|
636
|
-
grpc_core::
|
680
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) =
|
681
|
+
grpc_dns_lookup_ares_locked_impl;
|
637
682
|
|
638
683
|
static void grpc_cancel_ares_request_locked_impl(grpc_ares_request* r) {
|
639
684
|
GPR_ASSERT(r != nullptr);
|
@@ -652,12 +697,9 @@ void (*grpc_cancel_ares_request_locked)(grpc_ares_request* r) =
|
|
652
697
|
grpc_error* grpc_ares_init(void) {
|
653
698
|
int status = ares_library_init(ARES_LIB_INIT_ALL);
|
654
699
|
if (status != ARES_SUCCESS) {
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
659
|
-
gpr_free(error_msg);
|
660
|
-
return error;
|
700
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
701
|
+
absl::StrCat("ares_library_init failed: ", ares_strerror(status))
|
702
|
+
.c_str());
|
661
703
|
}
|
662
704
|
return GRPC_ERROR_NONE;
|
663
705
|
}
|
@@ -673,8 +715,8 @@ void grpc_ares_cleanup(void) {}
|
|
673
715
|
*/
|
674
716
|
|
675
717
|
typedef struct grpc_resolve_address_ares_request {
|
676
|
-
/*
|
677
|
-
grpc_core::
|
718
|
+
/* work_serializer that queries and related callbacks run under */
|
719
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
|
678
720
|
/** the pointer to receive the resolved addresses */
|
679
721
|
grpc_resolved_addresses** addrs_out;
|
680
722
|
/** currently resolving addresses */
|
@@ -694,9 +736,8 @@ typedef struct grpc_resolve_address_ares_request {
|
|
694
736
|
grpc_ares_request* ares_request = nullptr;
|
695
737
|
} grpc_resolve_address_ares_request;
|
696
738
|
|
697
|
-
static void on_dns_lookup_done_locked(
|
698
|
-
|
699
|
-
static_cast<grpc_resolve_address_ares_request*>(arg);
|
739
|
+
static void on_dns_lookup_done_locked(grpc_resolve_address_ares_request* r,
|
740
|
+
grpc_error* error) {
|
700
741
|
gpr_free(r->ares_request);
|
701
742
|
grpc_resolved_addresses** resolved_addresses = r->addrs_out;
|
702
743
|
if (r->addresses == nullptr || r->addresses->empty()) {
|
@@ -709,36 +750,32 @@ static void on_dns_lookup_done_locked(void* arg, grpc_error* error) {
|
|
709
750
|
static_cast<grpc_resolved_address*>(gpr_zalloc(
|
710
751
|
sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs));
|
711
752
|
for (size_t i = 0; i < (*resolved_addresses)->naddrs; ++i) {
|
712
|
-
GPR_ASSERT(!(*r->addresses)[i].IsBalancer());
|
713
753
|
memcpy(&(*resolved_addresses)->addrs[i], &(*r->addresses)[i].address(),
|
714
754
|
sizeof(grpc_resolved_address));
|
715
755
|
}
|
716
756
|
}
|
717
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_resolve_address_done,
|
718
|
-
GRPC_ERROR_REF(error));
|
719
|
-
GRPC_COMBINER_UNREF(r->combiner, "on_dns_lookup_done_cb");
|
757
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_resolve_address_done, error);
|
720
758
|
delete r;
|
721
759
|
}
|
722
760
|
|
723
761
|
static void on_dns_lookup_done(void* arg, grpc_error* error) {
|
724
762
|
grpc_resolve_address_ares_request* r =
|
725
763
|
static_cast<grpc_resolve_address_ares_request*>(arg);
|
726
|
-
|
727
|
-
|
728
|
-
|
764
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
765
|
+
r->work_serializer->Run([r, error]() { on_dns_lookup_done_locked(r, error); },
|
766
|
+
DEBUG_LOCATION);
|
729
767
|
}
|
730
768
|
|
731
|
-
static void grpc_resolve_address_invoke_dns_lookup_ares_locked(
|
732
|
-
void* arg, grpc_error* /*unused_error*/) {
|
769
|
+
static void grpc_resolve_address_invoke_dns_lookup_ares_locked(void* arg) {
|
733
770
|
grpc_resolve_address_ares_request* r =
|
734
771
|
static_cast<grpc_resolve_address_ares_request*>(arg);
|
735
772
|
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done_locked, on_dns_lookup_done, r,
|
736
773
|
grpc_schedule_on_exec_ctx);
|
737
774
|
r->ares_request = grpc_dns_lookup_ares_locked(
|
738
775
|
nullptr /* dns_server */, r->name, r->default_port, r->interested_parties,
|
739
|
-
&r->on_dns_lookup_done_locked, &r->addresses,
|
740
|
-
nullptr /* service_config_json */,
|
741
|
-
r->
|
776
|
+
&r->on_dns_lookup_done_locked, &r->addresses,
|
777
|
+
nullptr /* balancer_addresses */, nullptr /* service_config_json */,
|
778
|
+
GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, r->work_serializer);
|
742
779
|
}
|
743
780
|
|
744
781
|
static void grpc_resolve_address_ares_impl(const char* name,
|
@@ -748,16 +785,15 @@ static void grpc_resolve_address_ares_impl(const char* name,
|
|
748
785
|
grpc_resolved_addresses** addrs) {
|
749
786
|
grpc_resolve_address_ares_request* r =
|
750
787
|
new grpc_resolve_address_ares_request();
|
751
|
-
r->
|
788
|
+
r->work_serializer = std::make_shared<grpc_core::WorkSerializer>();
|
752
789
|
r->addrs_out = addrs;
|
753
790
|
r->on_resolve_address_done = on_done;
|
754
791
|
r->name = name;
|
755
792
|
r->default_port = default_port;
|
756
793
|
r->interested_parties = interested_parties;
|
757
|
-
r->
|
758
|
-
|
759
|
-
|
760
|
-
GRPC_ERROR_NONE);
|
794
|
+
r->work_serializer->Run(
|
795
|
+
[r]() { grpc_resolve_address_invoke_dns_lookup_ares_locked(r); },
|
796
|
+
DEBUG_LOCATION);
|
761
797
|
}
|
762
798
|
|
763
799
|
void (*grpc_resolve_address_ares)(
|