grpc 1.31.0.pre1 → 1.33.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 +693 -16022
- data/include/grpc/grpc.h +0 -5
- data/include/grpc/grpc_security.h +47 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +0 -5
- 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 +264 -186
- 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/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +34 -5
- 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 +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +9 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +126 -119
- 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 +21 -15
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +32 -13
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -32
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +207 -129
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +453 -255
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +571 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +727 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- 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 +602 -58
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -39
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +49 -47
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -9
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +48 -21
- data/src/core/ext/filters/client_channel/service_config.cc +16 -13
- data/src/core/ext/filters/client_channel/service_config.h +7 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
- 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/client_channel/subchannel_interface.h +44 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +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 +256 -287
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +10 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -30
- 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 +244 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -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 +458 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -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 +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -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 +310 -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 +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -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/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -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 +176 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -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/core/v3/substitution_format_string.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -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 +128 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -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 +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -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 +900 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -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 +364 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -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 +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -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 +139 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -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 +54 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -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/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -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/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
- 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/udpa/core/v1/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -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/xds/certificate_provider_factory.h +59 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.h +50 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +377 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +102 -0
- data/src/core/ext/xds/xds_api.cc +2596 -0
- data/src/core/ext/xds/xds_api.h +397 -0
- 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_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +541 -785
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +114 -93
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +20 -14
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +36 -8
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channelz.cc +24 -60
- data/src/core/lib/channel/channelz.h +12 -20
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gprpp/dual_ref_counted.h +336 -0
- data/src/core/lib/gprpp/ref_counted.h +51 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +153 -0
- 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 +36 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- 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/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +37 -0
- 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/certificate_provider.h +60 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +321 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +214 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -0
- 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 +37 -51
- data/src/core/lib/surface/channel.h +18 -3
- 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 +27 -12
- 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/bdp_estimator.h +2 -1
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +20 -8
- 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/metadata.cc +11 -1
- 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/plugin_registry/grpc_plugin_registry.cc +35 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -2
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +7 -7
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- 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 +475 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +44 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +221 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +64 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +48 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -43
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- 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_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +4 -8
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- 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 +340 -153
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1142
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- 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/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
- 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
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -39,7 +39,7 @@
|
|
39
39
|
#include "src/core/lib/transport/connectivity_state.h"
|
40
40
|
#include "src/core/lib/transport/metadata.h"
|
41
41
|
|
42
|
-
// Channel arg containing a
|
42
|
+
// Channel arg containing a URI indicating the address to connect to.
|
43
43
|
#define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
|
44
44
|
|
45
45
|
// For debugging refcounting.
|
@@ -182,6 +182,7 @@ class Subchannel {
|
|
182
182
|
public:
|
183
183
|
struct ConnectivityStateChange {
|
184
184
|
grpc_connectivity_state state;
|
185
|
+
absl::Status status;
|
185
186
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
186
187
|
};
|
187
188
|
|
@@ -227,6 +228,11 @@ class Subchannel {
|
|
227
228
|
static Subchannel* Create(OrphanablePtr<SubchannelConnector> connector,
|
228
229
|
const grpc_channel_args* args);
|
229
230
|
|
231
|
+
// Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time
|
232
|
+
// is larger than the subchannel's current keepalive time. The updated value
|
233
|
+
// will have an affect when the subchannel creates a new ConnectedSubchannel.
|
234
|
+
void ThrottleKeepaliveTime(int new_keepalive_time);
|
235
|
+
|
230
236
|
// Strong and weak refcounting.
|
231
237
|
Subchannel* Ref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
232
238
|
void Unref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
@@ -306,7 +312,8 @@ class Subchannel {
|
|
306
312
|
void RemoveWatcherLocked(ConnectivityStateWatcherInterface* watcher);
|
307
313
|
|
308
314
|
// Notifies all watchers in the list about a change to state.
|
309
|
-
void NotifyLocked(Subchannel* subchannel, grpc_connectivity_state state
|
315
|
+
void NotifyLocked(Subchannel* subchannel, grpc_connectivity_state state,
|
316
|
+
const absl::Status& status);
|
310
317
|
|
311
318
|
void Clear() { watchers_.clear(); }
|
312
319
|
|
@@ -339,7 +346,8 @@ class Subchannel {
|
|
339
346
|
ConnectivityStateWatcherInterface* watcher);
|
340
347
|
|
341
348
|
// Notifies the watcher when the subchannel's state changes.
|
342
|
-
void NotifyLocked(grpc_connectivity_state state
|
349
|
+
void NotifyLocked(grpc_connectivity_state state,
|
350
|
+
const absl::Status& status);
|
343
351
|
|
344
352
|
grpc_connectivity_state CheckConnectivityStateLocked(
|
345
353
|
Subchannel* subchannel, const char* health_check_service_name);
|
@@ -357,7 +365,8 @@ class Subchannel {
|
|
357
365
|
class AsyncWatcherNotifierLocked;
|
358
366
|
|
359
367
|
// Sets the subchannel's connectivity state to \a state.
|
360
|
-
void SetConnectivityStateLocked(grpc_connectivity_state state
|
368
|
+
void SetConnectivityStateLocked(grpc_connectivity_state state,
|
369
|
+
const absl::Status& status);
|
361
370
|
|
362
371
|
// Methods for connection.
|
363
372
|
void MaybeStartConnectingLocked();
|
@@ -400,6 +409,7 @@ class Subchannel {
|
|
400
409
|
|
401
410
|
// Connectivity state tracking.
|
402
411
|
grpc_connectivity_state state_ = GRPC_CHANNEL_IDLE;
|
412
|
+
absl::Status status_;
|
403
413
|
// The list of watchers without a health check service name.
|
404
414
|
ConnectivityStateWatcherList watcher_list_;
|
405
415
|
// The map of watchers with health check service names.
|
@@ -417,6 +427,8 @@ class Subchannel {
|
|
417
427
|
bool have_retry_alarm_ = false;
|
418
428
|
// reset_backoff() was called while alarm was pending.
|
419
429
|
bool retry_immediately_ = false;
|
430
|
+
// Keepalive time period (-1 for unset)
|
431
|
+
int keepalive_time_ = -1;
|
420
432
|
|
421
433
|
// Channelz tracking.
|
422
434
|
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "src/core/ext/filters/client_channel/server_address.h"
|
24
25
|
#include "src/core/lib/gprpp/ref_counted.h"
|
25
26
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
26
27
|
|
@@ -87,6 +88,49 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
87
88
|
|
88
89
|
// TODO(roth): Need a better non-grpc-specific abstraction here.
|
89
90
|
virtual const grpc_channel_args* channel_args() = 0;
|
91
|
+
|
92
|
+
// Allows accessing the attributes associated with the address for
|
93
|
+
// this subchannel.
|
94
|
+
virtual const ServerAddress::AttributeInterface* GetAttribute(
|
95
|
+
const char* key) const = 0;
|
96
|
+
};
|
97
|
+
|
98
|
+
// A class that delegates to another subchannel, to be used in cases
|
99
|
+
// where an LB policy needs to wrap a subchannel.
|
100
|
+
class DelegatingSubchannel : public SubchannelInterface {
|
101
|
+
public:
|
102
|
+
explicit DelegatingSubchannel(RefCountedPtr<SubchannelInterface> subchannel)
|
103
|
+
: wrapped_subchannel_(std::move(subchannel)) {}
|
104
|
+
|
105
|
+
RefCountedPtr<SubchannelInterface> wrapped_subchannel() const {
|
106
|
+
return wrapped_subchannel_;
|
107
|
+
}
|
108
|
+
|
109
|
+
grpc_connectivity_state CheckConnectivityState() override {
|
110
|
+
return wrapped_subchannel_->CheckConnectivityState();
|
111
|
+
}
|
112
|
+
void WatchConnectivityState(
|
113
|
+
grpc_connectivity_state initial_state,
|
114
|
+
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override {
|
115
|
+
return wrapped_subchannel_->WatchConnectivityState(initial_state,
|
116
|
+
std::move(watcher));
|
117
|
+
}
|
118
|
+
void CancelConnectivityStateWatch(
|
119
|
+
ConnectivityStateWatcherInterface* watcher) override {
|
120
|
+
return wrapped_subchannel_->CancelConnectivityStateWatch(watcher);
|
121
|
+
}
|
122
|
+
void AttemptToConnect() override { wrapped_subchannel_->AttemptToConnect(); }
|
123
|
+
void ResetBackoff() override { wrapped_subchannel_->ResetBackoff(); }
|
124
|
+
const grpc_channel_args* channel_args() override {
|
125
|
+
return wrapped_subchannel_->channel_args();
|
126
|
+
}
|
127
|
+
const ServerAddress::AttributeInterface* GetAttribute(
|
128
|
+
const char* key) const override {
|
129
|
+
return wrapped_subchannel_->GetAttribute(key);
|
130
|
+
}
|
131
|
+
|
132
|
+
private:
|
133
|
+
RefCountedPtr<SubchannelInterface> wrapped_subchannel_;
|
90
134
|
};
|
91
135
|
|
92
136
|
} // namespace grpc_core
|
@@ -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);
|
@@ -66,7 +66,8 @@ const MessageSizeParsedConfig* MessageSizeParsedConfig::GetFromCallContext(
|
|
66
66
|
//
|
67
67
|
|
68
68
|
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
69
|
-
MessageSizeParser::ParsePerMethodParams(const
|
69
|
+
MessageSizeParser::ParsePerMethodParams(const grpc_channel_args* /*args*/,
|
70
|
+
const Json& json, grpc_error** error) {
|
70
71
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
71
72
|
std::vector<grpc_error*> error_list;
|
72
73
|
// Max request size.
|
@@ -50,7 +50,8 @@ class MessageSizeParsedConfig : public ServiceConfigParser::ParsedConfig {
|
|
50
50
|
class MessageSizeParser : public ServiceConfigParser::Parser {
|
51
51
|
public:
|
52
52
|
std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
|
53
|
-
const Json& json,
|
53
|
+
const grpc_channel_args* /*args*/, const Json& json,
|
54
|
+
grpc_error** error) override;
|
54
55
|
|
55
56
|
static void Register();
|
56
57
|
|
@@ -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,
|