grpc 1.35.0.pre1 → 1.37.1
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 +121 -89
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/impl/codegen/port_platform.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +359 -331
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -4
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +232 -110
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +1 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +34 -50
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +307 -155
- data/src/core/ext/filters/client_channel/server_address.cc +9 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +69 -146
- data/src/core/ext/filters/client_channel/subchannel.h +63 -95
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +500 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +490 -178
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +39 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +2149 -666
- data/src/core/ext/xds/xds_api.h +321 -119
- data/src/core/ext/xds/xds_bootstrap.cc +80 -45
- data/src/core/ext/xds/xds_bootstrap.h +17 -5
- data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
- data/src/core/ext/xds/xds_certificate_provider.h +83 -44
- data/src/core/ext/xds/xds_client.cc +181 -34
- data/src/core/ext/xds/xds_client.h +29 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +425 -24
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +7 -0
- data/src/core/lib/channel/channelz.cc +92 -4
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/handshaker.cc +2 -44
- data/src/core/lib/channel/handshaker.h +1 -18
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli_security_connector.cc +2 -2
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -2
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +11 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.cc +6 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/resource_quota.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.cc +121 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +25 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +5 -8
- data/src/core/lib/iomgr/tcp_uv.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.h +2 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +9 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +32 -14
- data/src/core/lib/security/transport/security_handshaker.cc +33 -5
- data/src/core/lib/security/transport/server_auth_filter.cc +7 -0
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +38 -19
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +43 -36
- data/src/core/lib/surface/server.h +76 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +14 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +18 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +0 -3
- data/src/core/tsi/ssl_transport_security.h +0 -3
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +715 -713
- 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 +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +67 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -99
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +362 -50
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +140 -84
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -24,73 +24,33 @@
|
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
27
|
-
LocalSubchannelPool::
|
28
|
-
|
27
|
+
RefCountedPtr<Subchannel> LocalSubchannelPool::RegisterSubchannel(
|
28
|
+
const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) {
|
29
|
+
auto it = subchannel_map_.find(key);
|
30
|
+
// Because this pool is only accessed under the client channel's work
|
31
|
+
// serializer, and because FindSubchannel is checked before invoking
|
32
|
+
// RegisterSubchannel, no such subchannel should exist in the map.
|
33
|
+
GPR_ASSERT(it == subchannel_map_.end());
|
34
|
+
subchannel_map_[key] = constructed.get();
|
35
|
+
return constructed;
|
36
|
+
}
|
37
|
+
|
38
|
+
void LocalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key,
|
39
|
+
Subchannel* subchannel) {
|
40
|
+
auto it = subchannel_map_.find(key);
|
41
|
+
// Because this subchannel pool is accessed only under the client
|
42
|
+
// channel's work serializer, any subchannel created by RegisterSubchannel
|
43
|
+
// will be deleted from the map in UnregisterSubchannel.
|
44
|
+
GPR_ASSERT(it != subchannel_map_.end());
|
45
|
+
GPR_ASSERT(it->second == subchannel);
|
46
|
+
subchannel_map_.erase(it);
|
47
|
+
}
|
48
|
+
|
49
|
+
RefCountedPtr<Subchannel> LocalSubchannelPool::FindSubchannel(
|
50
|
+
const SubchannelKey& key) {
|
51
|
+
auto it = subchannel_map_.find(key);
|
52
|
+
if (it == subchannel_map_.end()) return nullptr;
|
53
|
+
return it->second->Ref();
|
29
54
|
}
|
30
55
|
|
31
|
-
LocalSubchannelPool::~LocalSubchannelPool() {
|
32
|
-
grpc_avl_unref(subchannel_map_, nullptr);
|
33
|
-
}
|
34
|
-
|
35
|
-
Subchannel* LocalSubchannelPool::RegisterSubchannel(SubchannelKey* key,
|
36
|
-
Subchannel* constructed) {
|
37
|
-
// Check to see if a subchannel already exists.
|
38
|
-
Subchannel* c =
|
39
|
-
static_cast<Subchannel*>(grpc_avl_get(subchannel_map_, key, nullptr));
|
40
|
-
if (c != nullptr) {
|
41
|
-
// The subchannel already exists. Reuse it.
|
42
|
-
c = GRPC_SUBCHANNEL_REF(c, "subchannel_register+reuse");
|
43
|
-
GRPC_SUBCHANNEL_UNREF(constructed, "subchannel_register+found_existing");
|
44
|
-
} else {
|
45
|
-
// There hasn't been such subchannel. Add one.
|
46
|
-
subchannel_map_ = grpc_avl_add(subchannel_map_, new SubchannelKey(*key),
|
47
|
-
constructed, nullptr);
|
48
|
-
c = constructed;
|
49
|
-
}
|
50
|
-
return c;
|
51
|
-
}
|
52
|
-
|
53
|
-
void LocalSubchannelPool::UnregisterSubchannel(SubchannelKey* key) {
|
54
|
-
subchannel_map_ = grpc_avl_remove(subchannel_map_, key, nullptr);
|
55
|
-
}
|
56
|
-
|
57
|
-
Subchannel* LocalSubchannelPool::FindSubchannel(SubchannelKey* key) {
|
58
|
-
Subchannel* c =
|
59
|
-
static_cast<Subchannel*>(grpc_avl_get(subchannel_map_, key, nullptr));
|
60
|
-
return c == nullptr ? c : GRPC_SUBCHANNEL_REF(c, "found_from_pool");
|
61
|
-
}
|
62
|
-
|
63
|
-
namespace {
|
64
|
-
|
65
|
-
void sck_avl_destroy(void* p, void* /*user_data*/) {
|
66
|
-
SubchannelKey* key = static_cast<SubchannelKey*>(p);
|
67
|
-
delete key;
|
68
|
-
}
|
69
|
-
|
70
|
-
void* sck_avl_copy(void* p, void* /*unused*/) {
|
71
|
-
const SubchannelKey* key = static_cast<const SubchannelKey*>(p);
|
72
|
-
auto new_key = new SubchannelKey(*key);
|
73
|
-
return static_cast<void*>(new_key);
|
74
|
-
}
|
75
|
-
|
76
|
-
long sck_avl_compare(void* a, void* b, void* /*unused*/) {
|
77
|
-
const SubchannelKey* key_a = static_cast<const SubchannelKey*>(a);
|
78
|
-
const SubchannelKey* key_b = static_cast<const SubchannelKey*>(b);
|
79
|
-
return key_a->Cmp(*key_b);
|
80
|
-
}
|
81
|
-
|
82
|
-
void scv_avl_destroy(void* /*p*/, void* /*user_data*/) {}
|
83
|
-
|
84
|
-
void* scv_avl_copy(void* p, void* /*unused*/) { return p; }
|
85
|
-
|
86
|
-
} // namespace
|
87
|
-
|
88
|
-
const grpc_avl_vtable LocalSubchannelPool::subchannel_avl_vtable_ = {
|
89
|
-
sck_avl_destroy, // destroy_key
|
90
|
-
sck_avl_copy, // copy_key
|
91
|
-
sck_avl_compare, // compare_keys
|
92
|
-
scv_avl_destroy, // destroy_value
|
93
|
-
scv_avl_copy // copy_value
|
94
|
-
};
|
95
|
-
|
96
56
|
} // namespace grpc_core
|
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
25
|
+
|
24
26
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
25
27
|
|
26
28
|
namespace grpc_core {
|
@@ -34,22 +36,21 @@ namespace grpc_core {
|
|
34
36
|
// Thread-unsafe.
|
35
37
|
class LocalSubchannelPool final : public SubchannelPoolInterface {
|
36
38
|
public:
|
37
|
-
LocalSubchannelPool()
|
38
|
-
~LocalSubchannelPool() override
|
39
|
+
LocalSubchannelPool() {}
|
40
|
+
~LocalSubchannelPool() override {}
|
39
41
|
|
40
42
|
// Implements interface methods.
|
41
43
|
// Thread-unsafe. Intended to be invoked within the client_channel work
|
42
44
|
// serializer.
|
43
|
-
Subchannel
|
44
|
-
|
45
|
-
void UnregisterSubchannel(SubchannelKey
|
46
|
-
|
45
|
+
RefCountedPtr<Subchannel> RegisterSubchannel(
|
46
|
+
const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) override;
|
47
|
+
void UnregisterSubchannel(const SubchannelKey& key,
|
48
|
+
Subchannel* subchannel) override;
|
49
|
+
RefCountedPtr<Subchannel> FindSubchannel(const SubchannelKey& key) override;
|
47
50
|
|
48
51
|
private:
|
49
|
-
// The vtable for subchannel operations in an AVL tree.
|
50
|
-
static const grpc_avl_vtable subchannel_avl_vtable_;
|
51
52
|
// A map from subchannel key to subchannel.
|
52
|
-
|
53
|
+
std::map<SubchannelKey, Subchannel*> subchannel_map_;
|
53
54
|
};
|
54
55
|
|
55
56
|
} // namespace grpc_core
|
@@ -29,13 +29,10 @@ namespace grpc_core {
|
|
29
29
|
// Resolver
|
30
30
|
//
|
31
31
|
|
32
|
-
Resolver::Resolver(
|
33
|
-
std::unique_ptr<ResultHandler> result_handler)
|
32
|
+
Resolver::Resolver()
|
34
33
|
: InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_trace_resolver_refcount)
|
35
34
|
? "Resolver"
|
36
|
-
: nullptr)
|
37
|
-
work_serializer_(std::move(work_serializer)),
|
38
|
-
result_handler_(std::move(result_handler)) {}
|
35
|
+
: nullptr) {}
|
39
36
|
|
40
37
|
//
|
41
38
|
// Resolver::Result
|
@@ -63,6 +60,9 @@ Resolver::Result::Result(Result&& other) noexcept {
|
|
63
60
|
}
|
64
61
|
|
65
62
|
Resolver::Result& Resolver::Result::operator=(const Result& other) {
|
63
|
+
if (&other == this) {
|
64
|
+
return *this;
|
65
|
+
}
|
66
66
|
addresses = other.addresses;
|
67
67
|
service_config = other.service_config;
|
68
68
|
GRPC_ERROR_UNREF(service_config_error);
|
@@ -125,21 +125,10 @@ class Resolver : public InternallyRefCounted<Resolver> {
|
|
125
125
|
}
|
126
126
|
|
127
127
|
protected:
|
128
|
-
Resolver(
|
129
|
-
std::unique_ptr<ResultHandler> result_handler);
|
128
|
+
Resolver();
|
130
129
|
|
131
130
|
/// Shuts down the resolver.
|
132
131
|
virtual void ShutdownLocked() = 0;
|
133
|
-
|
134
|
-
std::shared_ptr<WorkSerializer> work_serializer() const {
|
135
|
-
return work_serializer_;
|
136
|
-
}
|
137
|
-
|
138
|
-
ResultHandler* result_handler() const { return result_handler_.get(); }
|
139
|
-
|
140
|
-
private:
|
141
|
-
std::shared_ptr<WorkSerializer> work_serializer_;
|
142
|
-
std::unique_ptr<ResultHandler> result_handler_;
|
143
132
|
};
|
144
133
|
|
145
134
|
} // namespace grpc_core
|
@@ -91,10 +91,20 @@ class AresDnsResolver : public Resolver {
|
|
91
91
|
std::string name_to_resolve_;
|
92
92
|
/// channel args
|
93
93
|
grpc_channel_args* channel_args_;
|
94
|
-
|
95
|
-
|
94
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
95
|
+
std::unique_ptr<ResultHandler> result_handler_;
|
96
96
|
/// pollset_set to drive the name resolution process
|
97
97
|
grpc_pollset_set* interested_parties_;
|
98
|
+
|
99
|
+
/// whether to request the service config
|
100
|
+
bool request_service_config_;
|
101
|
+
// whether or not to enable SRV DNS queries
|
102
|
+
bool enable_srv_queries_;
|
103
|
+
// timeout in milliseconds for active DNS queries
|
104
|
+
int query_timeout_ms_;
|
105
|
+
/// min interval between DNS requests
|
106
|
+
grpc_millis min_time_between_resolutions_;
|
107
|
+
|
98
108
|
/// closures used by the work_serializer
|
99
109
|
grpc_closure on_next_resolution_;
|
100
110
|
grpc_closure on_resolved_;
|
@@ -105,8 +115,6 @@ class AresDnsResolver : public Resolver {
|
|
105
115
|
/// next resolution timer
|
106
116
|
bool have_next_resolution_timer_ = false;
|
107
117
|
grpc_timer next_resolution_timer_;
|
108
|
-
/// min interval between DNS requests
|
109
|
-
grpc_millis min_time_between_resolutions_;
|
110
118
|
/// timestamp of last DNS request
|
111
119
|
grpc_millis last_resolution_timestamp_ = -1;
|
112
120
|
/// retry backoff state
|
@@ -119,14 +127,25 @@ class AresDnsResolver : public Resolver {
|
|
119
127
|
char* service_config_json_ = nullptr;
|
120
128
|
// has shutdown been initiated
|
121
129
|
bool shutdown_initiated_ = false;
|
122
|
-
// timeout in milliseconds for active DNS queries
|
123
|
-
int query_timeout_ms_;
|
124
|
-
// whether or not to enable SRV DNS queries
|
125
|
-
bool enable_srv_queries_;
|
126
130
|
};
|
127
131
|
|
128
132
|
AresDnsResolver::AresDnsResolver(ResolverArgs args)
|
129
|
-
:
|
133
|
+
: dns_server_(args.uri.authority()),
|
134
|
+
name_to_resolve_(absl::StripPrefix(args.uri.path(), "/")),
|
135
|
+
channel_args_(grpc_channel_args_copy(args.args)),
|
136
|
+
work_serializer_(std::move(args.work_serializer)),
|
137
|
+
result_handler_(std::move(args.result_handler)),
|
138
|
+
interested_parties_(args.pollset_set),
|
139
|
+
request_service_config_(!grpc_channel_args_find_bool(
|
140
|
+
channel_args_, GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, true)),
|
141
|
+
enable_srv_queries_(grpc_channel_args_find_bool(
|
142
|
+
channel_args_, GRPC_ARG_DNS_ENABLE_SRV_QUERIES, false)),
|
143
|
+
query_timeout_ms_(grpc_channel_args_find_integer(
|
144
|
+
channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS,
|
145
|
+
{GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, 0, INT_MAX})),
|
146
|
+
min_time_between_resolutions_(grpc_channel_args_find_integer(
|
147
|
+
channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
|
148
|
+
{1000 * 30, 0, INT_MAX})),
|
130
149
|
backoff_(
|
131
150
|
BackOff::Options()
|
132
151
|
.set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
|
@@ -134,42 +153,14 @@ AresDnsResolver::AresDnsResolver(ResolverArgs args)
|
|
134
153
|
.set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
|
135
154
|
.set_jitter(GRPC_DNS_RECONNECT_JITTER)
|
136
155
|
.set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
|
137
|
-
// Closure
|
156
|
+
// Closure initialization.
|
138
157
|
GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
|
139
158
|
grpc_schedule_on_exec_ctx);
|
140
159
|
GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
|
141
|
-
// Get name to resolve from URI path.
|
142
|
-
name_to_resolve_ = std::string(absl::StripPrefix(args.uri.path(), "/"));
|
143
|
-
// Get DNS server from URI authority.
|
144
|
-
dns_server_ = args.uri.authority();
|
145
|
-
channel_args_ = grpc_channel_args_copy(args.args);
|
146
|
-
// Disable service config option
|
147
|
-
const grpc_arg* arg = grpc_channel_args_find(
|
148
|
-
channel_args_, GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION);
|
149
|
-
request_service_config_ = !grpc_channel_arg_get_bool(arg, true);
|
150
|
-
// Min time b/t resolutions option
|
151
|
-
arg = grpc_channel_args_find(channel_args_,
|
152
|
-
GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
|
153
|
-
min_time_between_resolutions_ =
|
154
|
-
grpc_channel_arg_get_integer(arg, {1000 * 30, 0, INT_MAX});
|
155
|
-
// Enable SRV queries option
|
156
|
-
arg = grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ENABLE_SRV_QUERIES);
|
157
|
-
enable_srv_queries_ = grpc_channel_arg_get_bool(arg, false);
|
158
|
-
interested_parties_ = grpc_pollset_set_create();
|
159
|
-
if (args.pollset_set != nullptr) {
|
160
|
-
grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
|
161
|
-
}
|
162
|
-
|
163
|
-
const grpc_arg* query_timeout_ms_arg =
|
164
|
-
grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS);
|
165
|
-
query_timeout_ms_ = grpc_channel_arg_get_integer(
|
166
|
-
query_timeout_ms_arg,
|
167
|
-
{GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, 0, INT_MAX});
|
168
160
|
}
|
169
161
|
|
170
162
|
AresDnsResolver::~AresDnsResolver() {
|
171
163
|
GRPC_CARES_TRACE_LOG("resolver:%p destroying AresDnsResolver", this);
|
172
|
-
grpc_pollset_set_destroy(interested_parties_);
|
173
164
|
grpc_channel_args_destroy(channel_args_);
|
174
165
|
}
|
175
166
|
|
@@ -205,8 +196,8 @@ void AresDnsResolver::ShutdownLocked() {
|
|
205
196
|
void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
|
206
197
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
207
198
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
208
|
-
r->
|
209
|
-
|
199
|
+
r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
200
|
+
DEBUG_LOCATION);
|
210
201
|
}
|
211
202
|
|
212
203
|
void AresDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
@@ -317,8 +308,8 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
|
|
317
308
|
void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
|
318
309
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
319
310
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
320
|
-
r->
|
321
|
-
|
311
|
+
r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
|
312
|
+
DEBUG_LOCATION);
|
322
313
|
}
|
323
314
|
|
324
315
|
void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
|
@@ -355,7 +346,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
355
346
|
}
|
356
347
|
result.args = grpc_channel_args_copy_and_add(channel_args_, new_args.data(),
|
357
348
|
new_args.size());
|
358
|
-
|
349
|
+
result_handler_->ReturnResult(std::move(result));
|
359
350
|
addresses_.reset();
|
360
351
|
balancer_addresses_.reset();
|
361
352
|
// Reset backoff state so that we start from the beginning when the
|
@@ -366,7 +357,7 @@ void AresDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
366
357
|
grpc_error_string(error));
|
367
358
|
std::string error_message =
|
368
359
|
absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
|
369
|
-
|
360
|
+
result_handler_->ReturnError(grpc_error_set_int(
|
370
361
|
GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(error_message.c_str(),
|
371
362
|
&error, 1),
|
372
363
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
@@ -436,7 +427,7 @@ void AresDnsResolver::StartResolvingLocked() {
|
|
436
427
|
interested_parties_, &on_resolved_, &addresses_,
|
437
428
|
enable_srv_queries_ ? &balancer_addresses_ : nullptr,
|
438
429
|
request_service_config_ ? &service_config_json_ : nullptr,
|
439
|
-
query_timeout_ms_,
|
430
|
+
query_timeout_ms_, work_serializer_);
|
440
431
|
last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
|
441
432
|
GRPC_CARES_TRACE_LOG("resolver:%p Started resolving. pending_request_:%p",
|
442
433
|
this, pending_request_);
|
@@ -54,8 +54,8 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
|
|
54
54
|
/* c-ares library will close the fd inside grpc_fd. This fd may be picked up
|
55
55
|
immediately by another thread, and should not be closed by the following
|
56
56
|
grpc_fd_orphan. */
|
57
|
-
int
|
58
|
-
grpc_fd_orphan(fd_, nullptr, &
|
57
|
+
int phony_release_fd;
|
58
|
+
grpc_fd_orphan(fd_, nullptr, &phony_release_fd, "c-ares query finished");
|
59
59
|
}
|
60
60
|
|
61
61
|
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
@@ -251,7 +251,7 @@ class GrpcPolledFdWindows {
|
|
251
251
|
}
|
252
252
|
}
|
253
253
|
|
254
|
-
bool IsFdStillReadableLocked() { return
|
254
|
+
bool IsFdStillReadableLocked() { return read_buf_has_data_; }
|
255
255
|
|
256
256
|
void ShutdownLocked(grpc_error* error) {
|
257
257
|
grpc_winsocket_shutdown(winsocket_);
|
@@ -362,6 +362,8 @@ class GrpcPolledFdWindows {
|
|
362
362
|
DWORD bytes_sent = 0;
|
363
363
|
int wsa_error_code = 0;
|
364
364
|
if (SendWriteBuf(&bytes_sent, nullptr, &wsa_error_code) != 0) {
|
365
|
+
grpc_slice_unref_internal(write_buf_);
|
366
|
+
write_buf_ = grpc_empty_slice();
|
365
367
|
wsa_error_ctx->SetWSAError(wsa_error_code);
|
366
368
|
char* msg = gpr_format_message(wsa_error_code);
|
367
369
|
GRPC_CARES_TRACE_LOG(
|
@@ -114,8 +114,6 @@ struct grpc_ares_ev_driver {
|
|
114
114
|
std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
|
115
115
|
/** a list of grpc_fd that this event driver is currently using. */
|
116
116
|
fd_node* fds;
|
117
|
-
/** is this event driver currently working? */
|
118
|
-
bool working;
|
119
117
|
/** is this event driver being shut down */
|
120
118
|
bool shutting_down;
|
121
119
|
/** request object that's using this ev driver */
|
@@ -219,9 +217,9 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
|
|
219
217
|
|
220
218
|
void grpc_ares_ev_driver_on_queries_complete_locked(
|
221
219
|
grpc_ares_ev_driver* ev_driver) {
|
222
|
-
// We mark the event driver as being shut down.
|
223
|
-
//
|
224
|
-
// fds
|
220
|
+
// We mark the event driver as being shut down.
|
221
|
+
// grpc_ares_notify_on_event_locked will shut down any remaining
|
222
|
+
// fds.
|
225
223
|
ev_driver->shutting_down = true;
|
226
224
|
grpc_timer_cancel(&ev_driver->query_timeout);
|
227
225
|
grpc_timer_cancel(&ev_driver->ares_backup_poll_alarm);
|
@@ -240,14 +238,14 @@ void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver) {
|
|
240
238
|
// Search fd in the fd_node list head. This is an O(n) search, the max possible
|
241
239
|
// value of n is ARES_GETSOCK_MAXNUM (16). n is typically 1 - 2 in our tests.
|
242
240
|
static fd_node* pop_fd_node_locked(fd_node** head, ares_socket_t as) {
|
243
|
-
fd_node
|
244
|
-
|
245
|
-
fd_node* node = &
|
241
|
+
fd_node phony_head;
|
242
|
+
phony_head.next = *head;
|
243
|
+
fd_node* node = &phony_head;
|
246
244
|
while (node->next != nullptr) {
|
247
245
|
if (node->next->grpc_polled_fd->GetWrappedAresSocketLocked() == as) {
|
248
246
|
fd_node* ret = node->next;
|
249
247
|
node->next = node->next->next;
|
250
|
-
*head =
|
248
|
+
*head = phony_head.next;
|
251
249
|
return ret;
|
252
250
|
}
|
253
251
|
node = node->next;
|
@@ -483,43 +481,34 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
483
481
|
}
|
484
482
|
}
|
485
483
|
ev_driver->fds = new_list;
|
486
|
-
// If the ev driver has no working fd, all the tasks are done.
|
487
|
-
if (new_list == nullptr) {
|
488
|
-
ev_driver->working = false;
|
489
|
-
GRPC_CARES_TRACE_LOG("request:%p ev driver stop working",
|
490
|
-
ev_driver->request);
|
491
|
-
}
|
492
484
|
}
|
493
485
|
|
494
486
|
void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver) {
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
next_ares_backup_poll_alarm,
|
521
|
-
&ev_driver->on_ares_backup_poll_alarm_locked);
|
522
|
-
}
|
487
|
+
grpc_ares_notify_on_event_locked(ev_driver);
|
488
|
+
// Initialize overall DNS resolution timeout alarm
|
489
|
+
grpc_millis timeout =
|
490
|
+
ev_driver->query_timeout_ms == 0
|
491
|
+
? GRPC_MILLIS_INF_FUTURE
|
492
|
+
: ev_driver->query_timeout_ms + grpc_core::ExecCtx::Get()->Now();
|
493
|
+
GRPC_CARES_TRACE_LOG(
|
494
|
+
"request:%p ev_driver=%p grpc_ares_ev_driver_start_locked. timeout in "
|
495
|
+
"%" PRId64 " ms",
|
496
|
+
ev_driver->request, ev_driver, timeout);
|
497
|
+
grpc_ares_ev_driver_ref(ev_driver);
|
498
|
+
GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
|
499
|
+
grpc_schedule_on_exec_ctx);
|
500
|
+
grpc_timer_init(&ev_driver->query_timeout, timeout,
|
501
|
+
&ev_driver->on_timeout_locked);
|
502
|
+
// Initialize the backup poll alarm
|
503
|
+
grpc_millis next_ares_backup_poll_alarm =
|
504
|
+
calculate_next_ares_backup_poll_alarm_ms(ev_driver);
|
505
|
+
grpc_ares_ev_driver_ref(ev_driver);
|
506
|
+
GRPC_CLOSURE_INIT(&ev_driver->on_ares_backup_poll_alarm_locked,
|
507
|
+
on_ares_backup_poll_alarm, ev_driver,
|
508
|
+
grpc_schedule_on_exec_ctx);
|
509
|
+
grpc_timer_init(&ev_driver->ares_backup_poll_alarm,
|
510
|
+
next_ares_backup_poll_alarm,
|
511
|
+
&ev_driver->on_ares_backup_poll_alarm_locked);
|
523
512
|
}
|
524
513
|
|
525
514
|
static void noop_inject_channel_config(ares_channel /*channel*/) {}
|
@@ -551,7 +540,6 @@ grpc_error* grpc_ares_ev_driver_create_locked(
|
|
551
540
|
gpr_ref_init(&(*ev_driver)->refs, 1);
|
552
541
|
(*ev_driver)->pollset_set = pollset_set;
|
553
542
|
(*ev_driver)->fds = nullptr;
|
554
|
-
(*ev_driver)->working = false;
|
555
543
|
(*ev_driver)->shutting_down = false;
|
556
544
|
(*ev_driver)->request = request;
|
557
545
|
(*ev_driver)->polled_fd_factory =
|
@@ -757,7 +745,7 @@ static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
|
757
745
|
r, srv_it->host, htons(srv_it->port), true /* is_balancer */, "A");
|
758
746
|
ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET,
|
759
747
|
on_hostbyname_done_locked, hr);
|
760
|
-
|
748
|
+
grpc_ares_notify_on_event_locked(r->ev_driver);
|
761
749
|
}
|
762
750
|
}
|
763
751
|
if (reply != nullptr) {
|
@@ -983,11 +971,7 @@ static bool target_matches_localhost_inner(const char* name, std::string* host,
|
|
983
971
|
gpr_log(GPR_ERROR, "Unable to split host and port for name: %s", name);
|
984
972
|
return false;
|
985
973
|
}
|
986
|
-
|
987
|
-
return true;
|
988
|
-
} else {
|
989
|
-
return false;
|
990
|
-
}
|
974
|
+
return gpr_stricmp(host->c_str(), "localhost") == 0;
|
991
975
|
}
|
992
976
|
|
993
977
|
static bool target_matches_localhost(const char* name) {
|