grpc 1.35.0 → 1.36.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +60 -57
- data/include/grpc/grpc_security.h +16 -11
- data/src/core/ext/filters/client_channel/client_channel.cc +32 -26
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- 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/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 +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +231 -109
- data/src/core/ext/filters/client_channel/resolver.cc +2 -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_wrapper.cc +29 -41
- 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 +362 -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 +22 -74
- data/src/core/ext/filters/client_channel/server_address.cc +6 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -2
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +47 -22
- 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/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- 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/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/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 +42 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +106 -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/network/http_connection_manager/v3/http_connection_manager.upb.c +13 -16
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +51 -42
- 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/type/matcher/v3/string.upb.c +0 -1
- 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/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/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- 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/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/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +747 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -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/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +369 -376
- 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/type/matcher/v3/string.upbdefs.c +30 -33
- 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 +738 -567
- data/src/core/ext/xds/xds_api.h +46 -84
- data/src/core/ext/xds/xds_bootstrap.cc +59 -40
- data/src/core/ext/xds/xds_bootstrap.h +12 -4
- 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 +13 -11
- data/src/core/ext/xds/xds_client.h +3 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +147 -11
- data/src/core/lib/channel/handshaker.cc +2 -5
- data/src/core/lib/channel/handshaker.h +1 -1
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/sync.h +129 -40
- 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/ev_apple.cc +10 -7
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- 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/sockaddr_utils.cc +1 -1
- 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 +4 -4
- data/src/core/lib/security/authorization/matchers.cc +339 -0
- data/src/core/lib/security/authorization/matchers.h +158 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +1 -1
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +9 -7
- 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 +3 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +26 -14
- data/src/core/lib/security/transport/security_handshaker.cc +1 -3
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/server.cc +3 -3
- data/src/core/lib/surface/server.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +17 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/fake_transport_security.cc +1 -1
- 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/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +725 -723
- 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/{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/{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 +128 -38
- 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 -1
- 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_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 -6
- 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 +15 -0
- 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 +42 -24
- 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 -98
- 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 +329 -31
- 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
- metadata +77 -65
- 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
@@ -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
|
@@ -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_);
|
@@ -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);
|
@@ -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) {
|
@@ -77,6 +77,8 @@ class NativeDnsResolver : public Resolver {
|
|
77
77
|
std::string name_to_resolve_;
|
78
78
|
/// channel args
|
79
79
|
grpc_channel_args* channel_args_ = nullptr;
|
80
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
81
|
+
std::unique_ptr<ResultHandler> result_handler_;
|
80
82
|
/// pollset_set to drive the name resolution process
|
81
83
|
grpc_pollset_set* interested_parties_ = nullptr;
|
82
84
|
/// are we shutting down?
|
@@ -99,7 +101,14 @@ class NativeDnsResolver : public Resolver {
|
|
99
101
|
};
|
100
102
|
|
101
103
|
NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
|
102
|
-
:
|
104
|
+
: name_to_resolve_(absl::StripPrefix(args.uri.path(), "/")),
|
105
|
+
channel_args_(grpc_channel_args_copy(args.args)),
|
106
|
+
work_serializer_(std::move(args.work_serializer)),
|
107
|
+
result_handler_(std::move(args.result_handler)),
|
108
|
+
interested_parties_(grpc_pollset_set_create()),
|
109
|
+
min_time_between_resolutions_(grpc_channel_args_find_integer(
|
110
|
+
channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
|
111
|
+
{1000 * 30, 0, INT_MAX})),
|
103
112
|
backoff_(
|
104
113
|
BackOff::Options()
|
105
114
|
.set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS *
|
@@ -107,13 +116,6 @@ NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
|
|
107
116
|
.set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
|
108
117
|
.set_jitter(GRPC_DNS_RECONNECT_JITTER)
|
109
118
|
.set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
|
110
|
-
name_to_resolve_ = std::string(absl::StripPrefix(args.uri.path(), "/"));
|
111
|
-
channel_args_ = grpc_channel_args_copy(args.args);
|
112
|
-
const grpc_arg* arg = grpc_channel_args_find(
|
113
|
-
args.args, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
|
114
|
-
min_time_between_resolutions_ =
|
115
|
-
grpc_channel_arg_get_integer(arg, {1000 * 30, 0, INT_MAX});
|
116
|
-
interested_parties_ = grpc_pollset_set_create();
|
117
119
|
if (args.pollset_set != nullptr) {
|
118
120
|
grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
|
119
121
|
}
|
@@ -149,8 +151,8 @@ void NativeDnsResolver::ShutdownLocked() {
|
|
149
151
|
void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
|
150
152
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
151
153
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
152
|
-
r->
|
153
|
-
|
154
|
+
r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
155
|
+
DEBUG_LOCATION);
|
154
156
|
}
|
155
157
|
|
156
158
|
void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
@@ -165,8 +167,8 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
|
165
167
|
void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) {
|
166
168
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
167
169
|
GRPC_ERROR_REF(error); // owned by lambda
|
168
|
-
r->
|
169
|
-
|
170
|
+
r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
|
171
|
+
DEBUG_LOCATION);
|
170
172
|
}
|
171
173
|
|
172
174
|
void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
@@ -186,7 +188,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
186
188
|
}
|
187
189
|
grpc_resolved_addresses_destroy(addresses_);
|
188
190
|
result.args = grpc_channel_args_copy(channel_args_);
|
189
|
-
|
191
|
+
result_handler_->ReturnResult(std::move(result));
|
190
192
|
// Reset backoff state so that we start from the beginning when the
|
191
193
|
// next request gets triggered.
|
192
194
|
backoff_.Reset();
|
@@ -196,7 +198,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
196
198
|
// Return transient error.
|
197
199
|
std::string error_message =
|
198
200
|
absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
|
199
|
-
|
201
|
+
result_handler_->ReturnError(grpc_error_set_int(
|
200
202
|
GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(error_message.c_str(),
|
201
203
|
&error, 1),
|
202
204
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
@@ -69,6 +69,8 @@ class FakeResolver : public Resolver {
|
|
69
69
|
|
70
70
|
// passed-in parameters
|
71
71
|
grpc_channel_args* channel_args_ = nullptr;
|
72
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
73
|
+
std::unique_ptr<ResultHandler> result_handler_;
|
72
74
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
73
75
|
// If has_next_result_ is true, next_result_ is the next resolution result
|
74
76
|
// to be returned.
|
@@ -89,7 +91,8 @@ class FakeResolver : public Resolver {
|
|
89
91
|
};
|
90
92
|
|
91
93
|
FakeResolver::FakeResolver(ResolverArgs args)
|
92
|
-
:
|
94
|
+
: work_serializer_(std::move(args.work_serializer)),
|
95
|
+
result_handler_(std::move(args.result_handler)),
|
93
96
|
response_generator_(
|
94
97
|
FakeResolverResponseGenerator::GetFromArgs(args.args)) {
|
95
98
|
// Channels sharing the same subchannels may have different resolver response
|
@@ -121,8 +124,8 @@ void FakeResolver::RequestReresolutionLocked() {
|
|
121
124
|
if (!reresolution_closure_pending_) {
|
122
125
|
reresolution_closure_pending_ = true;
|
123
126
|
Ref().release(); // ref held by closure
|
124
|
-
|
125
|
-
|
127
|
+
work_serializer_->Run([this]() { ReturnReresolutionResult(); },
|
128
|
+
DEBUG_LOCATION);
|
126
129
|
}
|
127
130
|
}
|
128
131
|
}
|
@@ -140,7 +143,7 @@ void FakeResolver::MaybeSendResultLocked() {
|
|
140
143
|
if (return_failure_) {
|
141
144
|
// TODO(roth): Change resolver result generator to be able to inject
|
142
145
|
// the error to be returned.
|
143
|
-
|
146
|
+
result_handler_->ReturnError(grpc_error_set_int(
|
144
147
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver transient failure"),
|
145
148
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
146
149
|
return_failure_ = false;
|
@@ -155,7 +158,7 @@ void FakeResolver::MaybeSendResultLocked() {
|
|
155
158
|
// name, only the one in next_results_ will be kept since next_results_ is
|
156
159
|
// before channel_args_.
|
157
160
|
result.args = grpc_channel_args_union(next_result_.args, channel_args_);
|
158
|
-
|
161
|
+
result_handler_->ReturnResult(std::move(result));
|
159
162
|
has_next_result_ = false;
|
160
163
|
}
|
161
164
|
}
|
@@ -236,8 +239,8 @@ void FakeResolverResponseGenerator::SetResponse(Resolver::Result result) {
|
|
236
239
|
}
|
237
240
|
FakeResolverResponseSetter* arg =
|
238
241
|
new FakeResolverResponseSetter(resolver, std::move(result));
|
239
|
-
resolver->
|
240
|
-
|
242
|
+
resolver->work_serializer_->Run([arg]() { arg->SetResponseLocked(); },
|
243
|
+
DEBUG_LOCATION);
|
241
244
|
}
|
242
245
|
|
243
246
|
void FakeResolverResponseGenerator::SetReresolutionResponse(
|
@@ -250,7 +253,7 @@ void FakeResolverResponseGenerator::SetReresolutionResponse(
|
|
250
253
|
}
|
251
254
|
FakeResolverResponseSetter* arg = new FakeResolverResponseSetter(
|
252
255
|
resolver, std::move(result), true /* has_result */);
|
253
|
-
resolver->
|
256
|
+
resolver->work_serializer_->Run(
|
254
257
|
[arg]() { arg->SetReresolutionResponseLocked(); }, DEBUG_LOCATION);
|
255
258
|
}
|
256
259
|
|
@@ -263,7 +266,7 @@ void FakeResolverResponseGenerator::UnsetReresolutionResponse() {
|
|
263
266
|
}
|
264
267
|
FakeResolverResponseSetter* arg =
|
265
268
|
new FakeResolverResponseSetter(resolver, Resolver::Result());
|
266
|
-
resolver->
|
269
|
+
resolver->work_serializer_->Run(
|
267
270
|
[arg]() { arg->SetReresolutionResponseLocked(); }, DEBUG_LOCATION);
|
268
271
|
}
|
269
272
|
|
@@ -276,8 +279,8 @@ void FakeResolverResponseGenerator::SetFailure() {
|
|
276
279
|
}
|
277
280
|
FakeResolverResponseSetter* arg =
|
278
281
|
new FakeResolverResponseSetter(resolver, Resolver::Result());
|
279
|
-
resolver->
|
280
|
-
|
282
|
+
resolver->work_serializer_->Run([arg]() { arg->SetFailureLocked(); },
|
283
|
+
DEBUG_LOCATION);
|
281
284
|
}
|
282
285
|
|
283
286
|
void FakeResolverResponseGenerator::SetFailureOnReresolution() {
|
@@ -290,8 +293,8 @@ void FakeResolverResponseGenerator::SetFailureOnReresolution() {
|
|
290
293
|
FakeResolverResponseSetter* arg = new FakeResolverResponseSetter(
|
291
294
|
resolver, Resolver::Result(), false /* has_result */,
|
292
295
|
false /* immediate */);
|
293
|
-
resolver->
|
294
|
-
|
296
|
+
resolver->work_serializer_->Run([arg]() { arg->SetFailureLocked(); },
|
297
|
+
DEBUG_LOCATION);
|
295
298
|
}
|
296
299
|
|
297
300
|
void FakeResolverResponseGenerator::SetFakeResolver(
|
@@ -302,8 +305,8 @@ void FakeResolverResponseGenerator::SetFakeResolver(
|
|
302
305
|
if (has_result_) {
|
303
306
|
FakeResolverResponseSetter* arg =
|
304
307
|
new FakeResolverResponseSetter(resolver_, std::move(result_));
|
305
|
-
resolver_->
|
306
|
-
|
308
|
+
resolver_->work_serializer_->Run([arg]() { arg->SetResponseLocked(); },
|
309
|
+
DEBUG_LOCATION);
|
307
310
|
has_result_ = false;
|
308
311
|
}
|
309
312
|
}
|