grpc 1.31.1 → 1.32.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +595 -15723
- data/include/grpc/grpc_security.h +31 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/port_platform.h +6 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +64 -20
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +20 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +20 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +54 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +363 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +5 -4
- data/src/core/ext/filters/client_channel/server_address.cc +40 -7
- data/src/core/ext/filters/client_channel/server_address.h +42 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
- data/src/core/ext/filters/client_channel/subchannel.h +16 -4
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +239 -277
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +1 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.cc +1045 -767
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +114 -99
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +85 -417
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +3 -3
- data/src/core/lib/channel/channelz.cc +14 -15
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/channelz_registry.cc +3 -1
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/iomgr.cc +0 -10
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
- data/src/core/lib/iomgr/tcp_custom.cc +32 -16
- data/src/core/lib/iomgr/tcp_posix.cc +31 -13
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -2
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/surface/call.cc +12 -12
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +28 -20
- data/src/core/lib/surface/channel.h +12 -2
- data/src/core/lib/surface/completion_queue.cc +10 -272
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/server.cc +1066 -1244
- data/src/core/lib/surface/server.h +363 -87
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +18 -6
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/transport.h +7 -0
- data/src/core/lib/uri/uri_parser.cc +23 -21
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +3 -9
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/boringssl-with-bazel/err_data.c +263 -257
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +39 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +11 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/encode.c +2 -2
- data/third_party/upb/upb/msg.h +2 -2
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/upb.c +16 -14
- data/third_party/upb/upb/upb.h +26 -0
- data/third_party/upb/upb/upb.hpp +2 -0
- metadata +257 -155
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
@@ -229,7 +229,8 @@ class ConnectivityWatcher : public AsyncConnectivityStateWatcherInterface {
|
|
229
229
|
}
|
230
230
|
|
231
231
|
private:
|
232
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
232
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
233
|
+
const absl::Status& /* status */) override {
|
233
234
|
if (new_state != GRPC_CHANNEL_SHUTDOWN) return;
|
234
235
|
{
|
235
236
|
MutexLock lock(&chand_->max_age_timer_mu);
|
@@ -129,6 +129,15 @@ void Chttp2Connector::StartHandshakeLocked() {
|
|
129
129
|
endpoint_ = nullptr; // Endpoint handed off to handshake manager.
|
130
130
|
}
|
131
131
|
|
132
|
+
namespace {
|
133
|
+
void NullThenSchedClosure(const DebugLocation& location, grpc_closure** closure,
|
134
|
+
grpc_error* error) {
|
135
|
+
grpc_closure* c = *closure;
|
136
|
+
*closure = nullptr;
|
137
|
+
ExecCtx::Run(location, c, error);
|
138
|
+
}
|
139
|
+
} // namespace
|
140
|
+
|
132
141
|
void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error* error) {
|
133
142
|
auto* args = static_cast<HandshakerArgs*>(arg);
|
134
143
|
Chttp2Connector* self = static_cast<Chttp2Connector*>(args->user_data);
|
@@ -154,53 +163,100 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error* error) {
|
|
154
163
|
error = GRPC_ERROR_REF(error);
|
155
164
|
}
|
156
165
|
self->result_->Reset();
|
166
|
+
NullThenSchedClosure(DEBUG_LOCATION, &self->notify_, error);
|
157
167
|
} else if (args->endpoint != nullptr) {
|
158
|
-
grpc_endpoint_delete_from_pollset_set(args->endpoint,
|
159
|
-
self->args_.interested_parties);
|
160
168
|
self->result_->transport =
|
161
169
|
grpc_create_chttp2_transport(args->args, args->endpoint, true);
|
162
170
|
self->result_->socket_node =
|
163
171
|
grpc_chttp2_transport_get_socket_node(self->result_->transport);
|
172
|
+
self->result_->channel_args = args->args;
|
164
173
|
GPR_ASSERT(self->result_->transport != nullptr);
|
165
|
-
|
166
|
-
//
|
167
|
-
|
168
|
-
|
169
|
-
//
|
170
|
-
// We could pass a notify_on_receive_settings callback to
|
171
|
-
// grpc_chttp2_transport_start_reading() to let us know when
|
172
|
-
// settings are received, but we would need to figure out how to use
|
173
|
-
// that information here.
|
174
|
-
//
|
175
|
-
// Unfortunately, we don't currently have a way to split apart the two
|
176
|
-
// effects of scheduling c->notify: we start sending RPCs immediately
|
177
|
-
// (which we want to do) and we consider the connection attempt successful
|
178
|
-
// (which we don't want to do until we get the notify_on_receive_settings
|
179
|
-
// callback from the transport). If we could split those things
|
180
|
-
// apart, then we could start sending RPCs but then wait for our
|
181
|
-
// timeout before deciding if the connection attempt is successful.
|
182
|
-
// If the attempt is not successful, then we would tear down the
|
183
|
-
// transport and feed the failure back into the backoff code.
|
184
|
-
//
|
185
|
-
// In addition, even if we did that, we would probably not want to do
|
186
|
-
// so until after transparent retries is implemented. Otherwise, any
|
187
|
-
// RPC that we attempt to send on the connection before the timeout
|
188
|
-
// would fail instead of being retried on a subsequent attempt.
|
174
|
+
self->endpoint_ = args->endpoint;
|
175
|
+
self->Ref().release(); // Ref held by OnReceiveSettings()
|
176
|
+
GRPC_CLOSURE_INIT(&self->on_receive_settings_, OnReceiveSettings, self,
|
177
|
+
grpc_schedule_on_exec_ctx);
|
178
|
+
self->Ref().release(); // Ref held by OnTimeout()
|
189
179
|
grpc_chttp2_transport_start_reading(self->result_->transport,
|
190
|
-
args->read_buffer,
|
191
|
-
|
180
|
+
args->read_buffer,
|
181
|
+
&self->on_receive_settings_);
|
182
|
+
GRPC_CLOSURE_INIT(&self->on_timeout_, OnTimeout, self,
|
183
|
+
grpc_schedule_on_exec_ctx);
|
184
|
+
grpc_timer_init(&self->timer_, self->args_.deadline, &self->on_timeout_);
|
192
185
|
} else {
|
193
186
|
// If the handshaking succeeded but there is no endpoint, then the
|
194
187
|
// handshaker may have handed off the connection to some external
|
195
188
|
// code. Just verify that exit_early flag is set.
|
196
189
|
GPR_DEBUG_ASSERT(args->exit_early);
|
190
|
+
NullThenSchedClosure(DEBUG_LOCATION, &self->notify_, error);
|
197
191
|
}
|
198
|
-
grpc_closure* notify = self->notify_;
|
199
|
-
self->notify_ = nullptr;
|
200
|
-
ExecCtx::Run(DEBUG_LOCATION, notify, error);
|
201
192
|
self->handshake_mgr_.reset();
|
202
193
|
}
|
203
194
|
self->Unref();
|
204
195
|
}
|
205
196
|
|
197
|
+
void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error* error) {
|
198
|
+
Chttp2Connector* self = static_cast<Chttp2Connector*>(arg);
|
199
|
+
{
|
200
|
+
MutexLock lock(&self->mu_);
|
201
|
+
if (!self->notify_error_.has_value()) {
|
202
|
+
grpc_endpoint_delete_from_pollset_set(self->endpoint_,
|
203
|
+
self->args_.interested_parties);
|
204
|
+
if (error != GRPC_ERROR_NONE) {
|
205
|
+
// Transport got an error while waiting on SETTINGS frame.
|
206
|
+
// TODO(yashykt): The following two lines should be moved to
|
207
|
+
// SubchannelConnector::Result::Reset()
|
208
|
+
grpc_transport_destroy(self->result_->transport);
|
209
|
+
grpc_channel_args_destroy(self->result_->channel_args);
|
210
|
+
self->result_->Reset();
|
211
|
+
}
|
212
|
+
self->MaybeNotify(GRPC_ERROR_REF(error));
|
213
|
+
grpc_timer_cancel(&self->timer_);
|
214
|
+
} else {
|
215
|
+
// OnTimeout() was already invoked. Call Notify() again so that notify_
|
216
|
+
// can be invoked.
|
217
|
+
self->MaybeNotify(GRPC_ERROR_NONE);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
self->Unref();
|
221
|
+
}
|
222
|
+
|
223
|
+
void Chttp2Connector::OnTimeout(void* arg, grpc_error* error) {
|
224
|
+
Chttp2Connector* self = static_cast<Chttp2Connector*>(arg);
|
225
|
+
{
|
226
|
+
MutexLock lock(&self->mu_);
|
227
|
+
if (!self->notify_error_.has_value()) {
|
228
|
+
// The transport did not receive the settings frame in time. Destroy the
|
229
|
+
// transport.
|
230
|
+
grpc_endpoint_delete_from_pollset_set(self->endpoint_,
|
231
|
+
self->args_.interested_parties);
|
232
|
+
// TODO(yashykt): The following two lines should be moved to
|
233
|
+
// SubchannelConnector::Result::Reset()
|
234
|
+
grpc_transport_destroy(self->result_->transport);
|
235
|
+
grpc_channel_args_destroy(self->result_->channel_args);
|
236
|
+
self->result_->Reset();
|
237
|
+
self->MaybeNotify(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
238
|
+
"connection attempt timed out before receiving SETTINGS frame"));
|
239
|
+
} else {
|
240
|
+
// OnReceiveSettings() was already invoked. Call Notify() again so that
|
241
|
+
// notify_ can be invoked.
|
242
|
+
self->MaybeNotify(GRPC_ERROR_NONE);
|
243
|
+
}
|
244
|
+
}
|
245
|
+
self->Unref();
|
246
|
+
}
|
247
|
+
|
248
|
+
void Chttp2Connector::MaybeNotify(grpc_error* error) {
|
249
|
+
if (notify_error_.has_value()) {
|
250
|
+
GRPC_ERROR_UNREF(error);
|
251
|
+
NullThenSchedClosure(DEBUG_LOCATION, ¬ify_, notify_error_.value());
|
252
|
+
// Clear state for a new Connect().
|
253
|
+
// Clear out the endpoint_, since it is the responsibility of
|
254
|
+
// the transport to shut it down.
|
255
|
+
endpoint_ = nullptr;
|
256
|
+
notify_error_.reset();
|
257
|
+
} else {
|
258
|
+
notify_error_ = error;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
|
206
262
|
} // namespace grpc_core
|
@@ -39,6 +39,19 @@ class Chttp2Connector : public SubchannelConnector {
|
|
39
39
|
static void Connected(void* arg, grpc_error* error);
|
40
40
|
void StartHandshakeLocked();
|
41
41
|
static void OnHandshakeDone(void* arg, grpc_error* error);
|
42
|
+
static void OnReceiveSettings(void* arg, grpc_error* error);
|
43
|
+
static void OnTimeout(void* arg, grpc_error* error);
|
44
|
+
|
45
|
+
// We cannot invoke notify_ until both OnTimeout() and OnReceiveSettings()
|
46
|
+
// have been called since that is an indicator to the upper layer that we are
|
47
|
+
// done with the connection attempt. So, the notification process is broken
|
48
|
+
// into two steps. 1) Either OnTimeout() or OnReceiveSettings() gets invoked
|
49
|
+
// first. Whichever gets invoked, calls MaybeNotify() to set the result and
|
50
|
+
// triggers the other callback to be invoked. 2) When the other callback is
|
51
|
+
// invoked, we call MaybeNotify() again to actually invoke the notify_
|
52
|
+
// callback. Note that this only happens if the handshake is done and the
|
53
|
+
// connector is waiting on the SETTINGS frame.
|
54
|
+
void MaybeNotify(grpc_error* error);
|
42
55
|
|
43
56
|
Mutex mu_;
|
44
57
|
Args args_;
|
@@ -47,9 +60,13 @@ class Chttp2Connector : public SubchannelConnector {
|
|
47
60
|
bool shutdown_ = false;
|
48
61
|
bool connecting_ = false;
|
49
62
|
// Holds the endpoint when first created before being handed off to
|
50
|
-
// the handshake manager.
|
63
|
+
// the handshake manager, and then again after handshake is done.
|
51
64
|
grpc_endpoint* endpoint_ = nullptr;
|
52
65
|
grpc_closure connected_;
|
66
|
+
grpc_closure on_receive_settings_;
|
67
|
+
grpc_timer timer_;
|
68
|
+
grpc_closure on_timeout_;
|
69
|
+
absl::optional<grpc_error*> notify_error_;
|
53
70
|
RefCountedPtr<HandshakeManager> handshake_mgr_;
|
54
71
|
};
|
55
72
|
|
@@ -33,11 +33,10 @@
|
|
33
33
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
34
34
|
#include "src/core/lib/security/credentials/credentials.h"
|
35
35
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
36
|
-
#include "src/core/lib/security/transport/target_authority_table.h"
|
37
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
38
36
|
#include "src/core/lib/slice/slice_internal.h"
|
39
37
|
#include "src/core/lib/surface/api_trace.h"
|
40
38
|
#include "src/core/lib/surface/channel.h"
|
39
|
+
#include "src/core/lib/transport/authority_override.h"
|
41
40
|
#include "src/core/lib/uri/uri_parser.h"
|
42
41
|
|
43
42
|
namespace grpc_core {
|
@@ -75,39 +74,16 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
75
74
|
"channel args.");
|
76
75
|
return nullptr;
|
77
76
|
}
|
78
|
-
//
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
grpc_uri_parse(server_uri_str, true /* suppress errors */);
|
85
|
-
GPR_ASSERT(server_uri != nullptr);
|
86
|
-
const TargetAuthorityTable* target_authority_table =
|
87
|
-
FindTargetAuthorityTableInArgs(args);
|
88
|
-
grpc_core::UniquePtr<char> authority;
|
89
|
-
if (target_authority_table != nullptr) {
|
90
|
-
// Find the authority for the target.
|
91
|
-
const char* target_uri_str =
|
92
|
-
Subchannel::GetUriFromSubchannelAddressArg(args);
|
93
|
-
grpc_uri* target_uri =
|
94
|
-
grpc_uri_parse(target_uri_str, false /* suppress errors */);
|
95
|
-
GPR_ASSERT(target_uri != nullptr);
|
96
|
-
if (target_uri->path[0] != '\0') { // "path" may be empty
|
97
|
-
const grpc_slice key = grpc_slice_from_static_string(
|
98
|
-
target_uri->path[0] == '/' ? target_uri->path + 1
|
99
|
-
: target_uri->path);
|
100
|
-
const grpc_core::UniquePtr<char>* value =
|
101
|
-
target_authority_table->Get(key);
|
102
|
-
if (value != nullptr) authority.reset(gpr_strdup(value->get()));
|
103
|
-
grpc_slice_unref_internal(key);
|
104
|
-
}
|
105
|
-
grpc_uri_destroy(target_uri);
|
106
|
-
}
|
107
|
-
// If the authority hasn't already been set (either because no target
|
108
|
-
// authority table was present or because the target was not present
|
109
|
-
// in the table), fall back to using the original server URI.
|
77
|
+
// Find the authority to use in the security connector.
|
78
|
+
// First, check the authority override channel arg.
|
79
|
+
// Otherwise, get it from the server name used to construct the
|
80
|
+
// channel.
|
81
|
+
grpc_core::UniquePtr<char> authority(
|
82
|
+
gpr_strdup(FindAuthorityOverrideInArgs(args)));
|
110
83
|
if (authority == nullptr) {
|
84
|
+
const char* server_uri_str =
|
85
|
+
grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
|
86
|
+
GPR_ASSERT(server_uri_str != nullptr);
|
111
87
|
authority = ResolverRegistry::GetDefaultAuthority(server_uri_str);
|
112
88
|
}
|
113
89
|
grpc_arg args_to_add[2];
|
@@ -120,7 +96,6 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
120
96
|
}
|
121
97
|
grpc_channel_args* args_with_authority =
|
122
98
|
grpc_channel_args_copy_and_add(args, args_to_add, num_args_to_add);
|
123
|
-
grpc_uri_destroy(server_uri);
|
124
99
|
// Create the security connector using the credentials and target name.
|
125
100
|
grpc_channel_args* new_args_from_connector = nullptr;
|
126
101
|
RefCountedPtr<grpc_channel_security_connector>
|
@@ -53,19 +53,19 @@
|
|
53
53
|
namespace grpc_core {
|
54
54
|
namespace {
|
55
55
|
|
56
|
-
class Chttp2ServerListener : public
|
56
|
+
class Chttp2ServerListener : public Server::ListenerInterface {
|
57
57
|
public:
|
58
|
-
static grpc_error* Create(
|
58
|
+
static grpc_error* Create(Server* server, const char* addr,
|
59
59
|
grpc_channel_args* args, int* port_num);
|
60
60
|
|
61
|
-
static grpc_error* CreateWithAcceptor(
|
61
|
+
static grpc_error* CreateWithAcceptor(Server* server, const char* name,
|
62
62
|
grpc_channel_args* args);
|
63
63
|
|
64
64
|
// Do not instantiate directly. Use one of the factory methods above.
|
65
|
-
Chttp2ServerListener(
|
65
|
+
Chttp2ServerListener(Server* server, grpc_channel_args* args);
|
66
66
|
~Chttp2ServerListener();
|
67
67
|
|
68
|
-
void Start(
|
68
|
+
void Start(Server* server,
|
69
69
|
const std::vector<grpc_pollset*>* pollsets) override;
|
70
70
|
|
71
71
|
channelz::ListenSocketNode* channelz_listen_socket_node() const override {
|
@@ -113,10 +113,10 @@ class Chttp2ServerListener : public ServerListenerInterface {
|
|
113
113
|
|
114
114
|
static void TcpServerShutdownComplete(void* arg, grpc_error* error);
|
115
115
|
|
116
|
-
static void DestroyListener(
|
116
|
+
static void DestroyListener(Server* /*server*/, void* arg,
|
117
117
|
grpc_closure* destroy_done);
|
118
118
|
|
119
|
-
|
119
|
+
Server* const server_;
|
120
120
|
grpc_channel_args* const args_;
|
121
121
|
grpc_tcp_server* tcp_server_;
|
122
122
|
Mutex mu_;
|
@@ -194,12 +194,10 @@ void Chttp2ServerListener::ConnectionState::OnHandshakeDone(void* arg,
|
|
194
194
|
{
|
195
195
|
MutexLock lock(&self->listener_->mu_);
|
196
196
|
grpc_resource_user* resource_user =
|
197
|
-
|
197
|
+
self->listener_->server_->default_resource_user();
|
198
198
|
if (error != GRPC_ERROR_NONE || self->listener_->shutdown_) {
|
199
199
|
const char* error_str = grpc_error_string(error);
|
200
200
|
gpr_log(GPR_DEBUG, "Handshaking failed: %s", error_str);
|
201
|
-
grpc_resource_user* resource_user =
|
202
|
-
grpc_server_get_default_resource_user(self->listener_->server_);
|
203
201
|
if (resource_user != nullptr) {
|
204
202
|
grpc_resource_user_free(resource_user,
|
205
203
|
GRPC_RESOURCE_QUOTA_CHANNEL_SIZE);
|
@@ -224,10 +222,9 @@ void Chttp2ServerListener::ConnectionState::OnHandshakeDone(void* arg,
|
|
224
222
|
if (args->endpoint != nullptr) {
|
225
223
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
226
224
|
args->args, args->endpoint, false, resource_user);
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
resource_user);
|
225
|
+
self->listener_->server_->SetupTransport(
|
226
|
+
transport, self->accepting_pollset_, args->args,
|
227
|
+
grpc_chttp2_transport_get_socket_node(transport), resource_user);
|
231
228
|
// Use notify_on_receive_settings callback to enforce the
|
232
229
|
// handshake deadline.
|
233
230
|
// Note: The reinterpret_cast<>s here are safe, because
|
@@ -270,7 +267,7 @@ void Chttp2ServerListener::ConnectionState::OnHandshakeDone(void* arg,
|
|
270
267
|
// Chttp2ServerListener
|
271
268
|
//
|
272
269
|
|
273
|
-
grpc_error* Chttp2ServerListener::Create(
|
270
|
+
grpc_error* Chttp2ServerListener::Create(Server* server, const char* addr,
|
274
271
|
grpc_channel_args* args,
|
275
272
|
int* port_num) {
|
276
273
|
std::vector<grpc_error*> error_list;
|
@@ -327,8 +324,7 @@ grpc_error* Chttp2ServerListener::Create(grpc_server* server, const char* addr,
|
|
327
324
|
addr, absl::StrFormat("chttp2 listener %s", addr));
|
328
325
|
}
|
329
326
|
/* Register with the server only upon success */
|
330
|
-
|
331
|
-
OrphanablePtr<ServerListenerInterface>(listener));
|
327
|
+
server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
|
332
328
|
return GRPC_ERROR_NONE;
|
333
329
|
}();
|
334
330
|
if (resolved != nullptr) {
|
@@ -352,7 +348,7 @@ grpc_error* Chttp2ServerListener::Create(grpc_server* server, const char* addr,
|
|
352
348
|
return error;
|
353
349
|
}
|
354
350
|
|
355
|
-
grpc_error* Chttp2ServerListener::CreateWithAcceptor(
|
351
|
+
grpc_error* Chttp2ServerListener::CreateWithAcceptor(Server* server,
|
356
352
|
const char* name,
|
357
353
|
grpc_channel_args* args) {
|
358
354
|
Chttp2ServerListener* listener = new Chttp2ServerListener(server, args);
|
@@ -366,12 +362,11 @@ grpc_error* Chttp2ServerListener::CreateWithAcceptor(grpc_server* server,
|
|
366
362
|
TcpServerFdHandler** arg_val =
|
367
363
|
grpc_channel_args_find_pointer<TcpServerFdHandler*>(args, name);
|
368
364
|
*arg_val = grpc_tcp_server_create_fd_handler(listener->tcp_server_);
|
369
|
-
|
370
|
-
OrphanablePtr<ServerListenerInterface>(listener));
|
365
|
+
server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
|
371
366
|
return GRPC_ERROR_NONE;
|
372
367
|
}
|
373
368
|
|
374
|
-
Chttp2ServerListener::Chttp2ServerListener(
|
369
|
+
Chttp2ServerListener::Chttp2ServerListener(Server* server,
|
375
370
|
grpc_channel_args* args)
|
376
371
|
: server_(server), args_(args) {
|
377
372
|
GRPC_CLOSURE_INIT(&tcp_server_shutdown_complete_, TcpServerShutdownComplete,
|
@@ -383,7 +378,7 @@ Chttp2ServerListener::~Chttp2ServerListener() {
|
|
383
378
|
}
|
384
379
|
|
385
380
|
/* Server callback: start listening on our ports */
|
386
|
-
void Chttp2ServerListener::Start(
|
381
|
+
void Chttp2ServerListener::Start(Server* /*server*/,
|
387
382
|
const std::vector<grpc_pollset*>* pollsets) {
|
388
383
|
{
|
389
384
|
MutexLock lock(&mu_);
|
@@ -400,8 +395,7 @@ void Chttp2ServerListener::SetOnDestroyDone(grpc_closure* on_destroy_done) {
|
|
400
395
|
RefCountedPtr<HandshakeManager> Chttp2ServerListener::CreateHandshakeManager() {
|
401
396
|
MutexLock lock(&mu_);
|
402
397
|
if (shutdown_) return nullptr;
|
403
|
-
grpc_resource_user* resource_user =
|
404
|
-
grpc_server_get_default_resource_user(server_);
|
398
|
+
grpc_resource_user* resource_user = server_->default_resource_user();
|
405
399
|
if (resource_user != nullptr &&
|
406
400
|
!grpc_resource_user_safe_alloc(resource_user,
|
407
401
|
GRPC_RESOURCE_QUOTA_CHANNEL_SIZE)) {
|
@@ -475,7 +469,7 @@ void Chttp2ServerListener::Orphan() {
|
|
475
469
|
// Chttp2ServerAddPort()
|
476
470
|
//
|
477
471
|
|
478
|
-
grpc_error* Chttp2ServerAddPort(
|
472
|
+
grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
|
479
473
|
grpc_channel_args* args, int* port_num) {
|
480
474
|
if (strncmp(addr, "external:", 9) == 0) {
|
481
475
|
return grpc_core::Chttp2ServerListener::CreateWithAcceptor(server, addr,
|
@@ -24,12 +24,13 @@
|
|
24
24
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
|
26
26
|
#include "src/core/lib/iomgr/error.h"
|
27
|
+
#include "src/core/lib/surface/server.h"
|
27
28
|
|
28
29
|
namespace grpc_core {
|
29
30
|
|
30
31
|
/// Adds a port to \a server. Sets \a port_num to the port number.
|
31
32
|
/// Takes ownership of \a args.
|
32
|
-
grpc_error* Chttp2ServerAddPort(
|
33
|
+
grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
|
33
34
|
grpc_channel_args* args, int* port_num);
|
34
35
|
|
35
36
|
} // namespace grpc_core
|
@@ -33,8 +33,8 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
|
|
33
33
|
GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
|
34
34
|
(server, addr));
|
35
35
|
grpc_error* err = grpc_core::Chttp2ServerAddPort(
|
36
|
-
server, addr,
|
37
|
-
grpc_channel_args_copy(
|
36
|
+
server->core_server.get(), addr,
|
37
|
+
grpc_channel_args_copy(server->core_server->channel_args()), &port_num);
|
38
38
|
if (err != GRPC_ERROR_NONE) {
|
39
39
|
const char* msg = grpc_error_string(err);
|
40
40
|
gpr_log(GPR_ERROR, "%s", msg);
|
@@ -41,21 +41,21 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
41
41
|
GPR_ASSERT(reserved == nullptr);
|
42
42
|
|
43
43
|
grpc_core::ExecCtx exec_ctx;
|
44
|
+
grpc_core::Server* core_server = server->core_server.get();
|
44
45
|
|
46
|
+
const grpc_channel_args* server_args = core_server->channel_args();
|
45
47
|
std::string name = absl::StrCat("fd:", fd);
|
46
|
-
grpc_endpoint* server_endpoint =
|
47
|
-
|
48
|
-
grpc_server_get_channel_args(server), name.c_str());
|
48
|
+
grpc_endpoint* server_endpoint = grpc_tcp_create(
|
49
|
+
grpc_fd_create(fd, name.c_str(), true), server_args, name.c_str());
|
49
50
|
|
50
|
-
const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
|
51
51
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
52
52
|
server_args, server_endpoint, false /* is_client */);
|
53
53
|
|
54
|
-
for (grpc_pollset* pollset :
|
54
|
+
for (grpc_pollset* pollset : core_server->pollsets()) {
|
55
55
|
grpc_endpoint_add_to_pollset(server_endpoint, pollset);
|
56
56
|
}
|
57
57
|
|
58
|
-
|
58
|
+
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
|
59
59
|
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
|
60
60
|
}
|
61
61
|
|