grpc 1.31.1 → 1.35.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 +719 -17819
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +15 -7
- data/include/grpc/grpc_security.h +254 -186
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +10 -8
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +28 -56
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +2831 -1540
- data/src/core/ext/filters/client_channel/client_channel.h +1 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +40 -8
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +7 -9
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +8 -7
- 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 +10 -7
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +210 -192
- 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/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -17
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +79 -30
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -9
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -34
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +350 -130
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +812 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +9 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +457 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- 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/dns/native/dns_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +35 -28
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +664 -63
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +29 -74
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +12 -11
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +44 -21
- data/src/core/ext/filters/client_channel/service_config.cc +18 -13
- data/src/core/ext/filters/client_channel/service_config.h +8 -5
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- 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 +115 -87
- data/src/core/ext/filters/client_channel/subchannel.h +30 -24
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +3 -2
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +34 -47
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +200 -100
- 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 +16 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +267 -319
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +13 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -31
- data/src/core/ext/transport/chttp2/transport/writing.cc +8 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +52 -18
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- 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 +865 -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 +253 -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 +1818 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +349 -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 +428 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -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 +991 -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 +388 -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 +78 -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 +149 -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 +839 -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 +752 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -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 +730 -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 +65 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -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 +92 -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 +243 -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 +305 -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 +367 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -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 +512 -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 +591 -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 +107 -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 +662 -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 +220 -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 +3640 -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 +159 -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 +122 -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 +1475 -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 +35 -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 +426 -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 +236 -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 +621 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -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 +487 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -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 +151 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -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 +128 -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 +84 -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 +78 -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 +166 -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 +146 -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 +207 -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 +301 -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 +283 -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} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -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 +830 -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 +842 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +103 -103
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +23 -4
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -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 +60 -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 +143 -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 +84 -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 +94 -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 +173 -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 +92 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +68 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -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.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +2308 -0
- data/src/core/ext/xds/xds_api.h +469 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +208 -19
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +299 -0
- data/src/core/ext/xds/xds_certificate_provider.h +112 -0
- 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 +656 -865
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +126 -99
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +38 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +9 -8
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +37 -74
- data/src/core/lib/channel/channelz.h +14 -23
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +19 -3
- data/src/core/lib/gpr/log_posix.cc +15 -1
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +23 -22
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +8 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
- data/src/core/lib/iomgr/error.cc +17 -12
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +25 -17
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +16 -12
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/iomgr.cc +1 -11
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +128 -44
- data/src/core/lib/iomgr/parse_address.h +77 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +4 -4
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +12 -11
- data/src/core/lib/iomgr/sockaddr_utils.h +3 -2
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +53 -32
- data/src/core/lib/iomgr/tcp_posix.cc +43 -21
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +32 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +12 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- 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 +148 -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 +44 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -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 +57 -0
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +7 -7
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +74 -50
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +6 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +39 -46
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -150
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +57 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +175 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/security_connector.cc +4 -3
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +19 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +342 -279
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
- data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
- data/src/core/lib/security/transport/security_handshaker.cc +3 -3
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +6 -7
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +53 -44
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +53 -61
- data/src/core/lib/surface/channel.h +21 -5
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +38 -294
- data/src/core/lib/surface/completion_queue.h +16 -24
- data/src/core/lib/surface/init.cc +32 -16
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +1107 -1239
- data/src/core/lib/surface/server.h +394 -86
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +40 -0
- data/src/core/lib/transport/authority_override.h +37 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +26 -12
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +7 -1
- data/src/core/lib/transport/metadata.cc +11 -1
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +296 -277
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -3
- data/src/core/lib/transport/transport.h +15 -8
- data/src/core/lib/uri/uri_parser.cc +131 -247
- data/src/core/lib/uri/uri_parser.h +58 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +41 -20
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +49 -26
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +6 -3
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +81 -67
- data/src/core/tsi/ssl_transport_security.h +9 -6
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +74 -44
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- 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/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -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/invoke.h +4 -4
- 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/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -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 +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -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 +50 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -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 +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -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 +1945 -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 +196 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -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 +93 -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 +149 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -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 +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -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/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -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 +996 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- 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 +249 -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 +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -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/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- 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/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +479 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- 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/cipher/e_aes.c +173 -35
- 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 +56 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- 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 +118 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- 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 +6 -4
- 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/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- 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_prn.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/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -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 +6 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- 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/des.h +6 -0
- 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/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +103 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- 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 +49 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- 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 +77 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +57 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +140 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +275 -145
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +2178 -0
- data/third_party/upb/upb/def.h +315 -0
- data/third_party/upb/upb/def.hpp +439 -0
- data/third_party/upb/upb/encode.c +229 -171
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +175 -35
- data/third_party/upb/upb/port_def.inc +75 -62
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +408 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +34 -208
- data/third_party/upb/upb/table.int.h +14 -14
- data/third_party/upb/upb/text_encode.c +421 -0
- data/third_party/upb/upb/text_encode.h +38 -0
- data/third_party/upb/upb/upb.c +33 -54
- data/third_party/upb/upb/upb.h +56 -1
- data/third_party/upb/upb/upb.hpp +6 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +508 -172
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
- 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 -1143
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -353
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -142
- 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.c +0 -35
- 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.c +0 -55
- 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.c +0 -35
- 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.c +0 -36
- 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.c +0 -33
- 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.c +0 -39
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
- 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/lib/gprpp/map.h +0 -53
- 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/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- 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
- data/third_party/upb/upb/port.c +0 -26
@@ -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,22 +41,29 @@ 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
|
-
|
55
|
-
|
54
|
+
grpc_error* error =
|
55
|
+
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
|
56
|
+
if (error == GRPC_ERROR_NONE) {
|
57
|
+
for (grpc_pollset* pollset : core_server->pollsets()) {
|
58
|
+
grpc_endpoint_add_to_pollset(server_endpoint, pollset);
|
59
|
+
}
|
60
|
+
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
|
61
|
+
} else {
|
62
|
+
gpr_log(GPR_ERROR, "Failed to create channel: %s",
|
63
|
+
grpc_error_string(error));
|
64
|
+
GRPC_ERROR_UNREF(error);
|
65
|
+
grpc_transport_destroy(transport);
|
56
66
|
}
|
57
|
-
|
58
|
-
grpc_server_setup_transport(server, transport, nullptr, server_args, nullptr);
|
59
|
-
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
|
60
67
|
}
|
61
68
|
|
62
69
|
#else // !GPR_SUPPORT_CHANNELS_FROM_FD
|
@@ -68,10 +68,11 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
|
68
68
|
args_to_add[0] = grpc_server_credentials_to_arg(creds);
|
69
69
|
args_to_add[1] = grpc_security_connector_to_arg(sc.get());
|
70
70
|
args =
|
71
|
-
grpc_channel_args_copy_and_add(
|
71
|
+
grpc_channel_args_copy_and_add(server->core_server->channel_args(),
|
72
72
|
args_to_add, GPR_ARRAY_SIZE(args_to_add));
|
73
73
|
// Add server port.
|
74
|
-
err = grpc_core::Chttp2ServerAddPort(server, addr, args,
|
74
|
+
err = grpc_core::Chttp2ServerAddPort(server->core_server.get(), addr, args,
|
75
|
+
&port_num);
|
75
76
|
done:
|
76
77
|
sc.reset(DEBUG_LOCATION, "server");
|
77
78
|
|
@@ -66,16 +66,16 @@ static bool input_is_valid(const uint8_t* input_ptr, size_t length) {
|
|
66
66
|
return true;
|
67
67
|
}
|
68
68
|
|
69
|
-
#define COMPOSE_OUTPUT_BYTE_0(input_ptr)
|
70
|
-
(uint8_t)((decode_table[input_ptr[0]] << 2) | \
|
71
|
-
(decode_table[input_ptr[1]] >> 4))
|
69
|
+
#define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
|
70
|
+
(uint8_t)((decode_table[(input_ptr)[0]] << 2) | \
|
71
|
+
(decode_table[(input_ptr)[1]] >> 4))
|
72
72
|
|
73
|
-
#define COMPOSE_OUTPUT_BYTE_1(input_ptr)
|
74
|
-
(uint8_t)((decode_table[input_ptr[1]] << 4) | \
|
75
|
-
(decode_table[input_ptr[2]] >> 2))
|
73
|
+
#define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
|
74
|
+
(uint8_t)((decode_table[(input_ptr)[1]] << 4) | \
|
75
|
+
(decode_table[(input_ptr)[2]] >> 2))
|
76
76
|
|
77
77
|
#define COMPOSE_OUTPUT_BYTE_2(input_ptr) \
|
78
|
-
(uint8_t)((decode_table[input_ptr[2]] << 6) | decode_table[input_ptr[3]])
|
78
|
+
(uint8_t)((decode_table[(input_ptr)[2]] << 6) | decode_table[(input_ptr)[3]])
|
79
79
|
|
80
80
|
// By RFC 4648, if the length of the encoded string without padding is 4n+r,
|
81
81
|
// the length of decoded string is: 1) 3n if r = 0, 2) 3n + 1 if r = 2, 3, or
|
@@ -1,25 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
21
19
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
22
20
|
|
21
|
+
#include "absl/strings/str_format.h"
|
22
|
+
|
23
23
|
#include <grpc/slice_buffer.h>
|
24
24
|
#include <grpc/support/alloc.h>
|
25
25
|
#include <grpc/support/log.h>
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <stdio.h>
|
32
32
|
#include <string.h>
|
33
33
|
|
34
|
-
#include "absl/strings/str_format.h"
|
35
34
|
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
36
35
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
37
36
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
@@ -70,7 +69,6 @@
|
|
70
69
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
71
70
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
72
71
|
|
73
|
-
#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
74
72
|
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
75
73
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
76
74
|
#define DEFAULT_MAX_PING_STRIKES 2
|
@@ -90,8 +88,6 @@ static bool g_default_client_keepalive_permit_without_calls =
|
|
90
88
|
static bool g_default_server_keepalive_permit_without_calls =
|
91
89
|
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
|
92
90
|
|
93
|
-
static int g_default_min_sent_ping_interval_without_data_ms =
|
94
|
-
DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
|
95
91
|
static int g_default_min_recv_ping_interval_without_data_ms =
|
96
92
|
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
|
97
93
|
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
@@ -103,7 +99,7 @@ grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
|
103
99
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
104
100
|
"chttp2_refcount");
|
105
101
|
|
106
|
-
|
102
|
+
// forward declarations of various callbacks that we'll build closures around
|
107
103
|
static void write_action_begin_locked(void* t, grpc_error* error);
|
108
104
|
static void write_action(void* t, grpc_error* error);
|
109
105
|
static void write_action_end(void* t, grpc_error* error);
|
@@ -115,24 +111,25 @@ static void continue_read_action_locked(grpc_chttp2_transport* t);
|
|
115
111
|
|
116
112
|
static void complete_fetch(void* gs, grpc_error* error);
|
117
113
|
static void complete_fetch_locked(void* gs, grpc_error* error);
|
118
|
-
|
114
|
+
// Set a transport level setting, and push it to our peer
|
119
115
|
static void queue_setting_update(grpc_chttp2_transport* t,
|
120
116
|
grpc_chttp2_setting_id id, uint32_t value);
|
121
117
|
|
122
118
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
123
119
|
grpc_error* error);
|
124
120
|
|
125
|
-
|
121
|
+
// Start new streams that have been created if we can
|
126
122
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
127
123
|
|
128
124
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
129
125
|
grpc_connectivity_state state,
|
126
|
+
const absl::Status& status,
|
130
127
|
const char* reason);
|
131
128
|
|
132
|
-
static void benign_reclaimer(void*
|
133
|
-
static void destructive_reclaimer(void*
|
134
|
-
static void benign_reclaimer_locked(void*
|
135
|
-
static void destructive_reclaimer_locked(void*
|
129
|
+
static void benign_reclaimer(void* arg, grpc_error* error);
|
130
|
+
static void destructive_reclaimer(void* arg, grpc_error* error);
|
131
|
+
static void benign_reclaimer_locked(void* arg, grpc_error* error);
|
132
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error* error);
|
136
133
|
|
137
134
|
static void post_benign_reclaimer(grpc_chttp2_transport* t);
|
138
135
|
static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
@@ -140,7 +137,6 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
|
140
137
|
static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
|
141
138
|
static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
|
142
139
|
|
143
|
-
static void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
|
144
140
|
static void start_bdp_ping(void* tp, grpc_error* error);
|
145
141
|
static void finish_bdp_ping(void* tp, grpc_error* error);
|
146
142
|
static void start_bdp_ping_locked(void* tp, grpc_error* error);
|
@@ -150,11 +146,10 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
|
|
150
146
|
|
151
147
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
|
152
148
|
static void send_ping_locked(grpc_chttp2_transport* t,
|
153
|
-
grpc_closure* on_initiate,
|
154
|
-
grpc_closure* on_complete);
|
149
|
+
grpc_closure* on_initiate, grpc_closure* on_ack);
|
155
150
|
static void retry_initiate_ping_locked(void* tp, grpc_error* error);
|
156
151
|
|
157
|
-
|
152
|
+
// keepalive-relevant functions
|
158
153
|
static void init_keepalive_ping(void* arg, grpc_error* error);
|
159
154
|
static void init_keepalive_ping_locked(void* arg, grpc_error* error);
|
160
155
|
static void start_keepalive_ping(void* arg, grpc_error* error);
|
@@ -170,9 +165,9 @@ static void reset_byte_stream(void* arg, grpc_error* error);
|
|
170
165
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
171
166
|
bool g_flow_control_enabled = true;
|
172
167
|
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
//
|
169
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
170
|
+
//
|
176
171
|
|
177
172
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
173
|
size_t i;
|
@@ -226,12 +221,11 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
221
|
|
227
222
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
223
|
gpr_free(ping_acks);
|
229
|
-
gpr_free(peer_string);
|
230
224
|
}
|
231
225
|
|
232
226
|
static const grpc_transport_vtable* get_vtable(void);
|
233
227
|
|
234
|
-
|
228
|
+
// Returns whether bdp is enabled
|
235
229
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
230
|
const grpc_channel_args* channel_args,
|
237
231
|
bool is_client) {
|
@@ -273,15 +267,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
267
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
268
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
269
|
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
|
276
|
-
} else if (0 ==
|
277
|
-
strcmp(channel_args->args[i].key,
|
278
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
279
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
280
|
-
grpc_channel_arg_get_integer(
|
281
|
-
&channel_args->args[i],
|
282
|
-
grpc_integer_options{
|
283
|
-
g_default_min_sent_ping_interval_without_data_ms, 0,
|
284
|
-
INT_MAX});
|
285
270
|
} else if (0 ==
|
286
271
|
strcmp(channel_args->args[i].key,
|
287
272
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
@@ -378,11 +363,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
363
|
}
|
379
364
|
}
|
380
365
|
if (channelz_enabled) {
|
381
|
-
// TODO(ncteisen): add an API to endpoint to query for local addr, and pass
|
382
|
-
// it in here, so SocketNode knows its own address.
|
383
366
|
t->channelz_socket =
|
384
367
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
368
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
386
369
|
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
|
387
370
|
}
|
388
371
|
return enable_bdp;
|
@@ -412,8 +395,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
395
|
|
413
396
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
397
|
t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
|
415
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
416
|
-
g_default_min_sent_ping_interval_without_data_ms;
|
417
398
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
399
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
400
|
g_default_min_recv_ping_interval_without_data_ms;
|
@@ -429,8 +410,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
410
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
411
|
&t->init_keepalive_ping_locked);
|
431
412
|
} else {
|
432
|
-
|
433
|
-
|
413
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
414
|
+
// inflight keeaplive timers
|
434
415
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
416
|
}
|
436
417
|
}
|
@@ -438,7 +419,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
438
419
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
420
|
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
|
440
421
|
grpc_resource_user* resource_user)
|
441
|
-
: refs(1,
|
422
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
423
|
+
? "chttp2_refcount"
|
424
|
+
: nullptr),
|
442
425
|
ep(ep),
|
443
426
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
427
|
resource_user(resource_user),
|
@@ -451,11 +434,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
434
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
435
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
436
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
437
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
438
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
439
|
+
// large enough that the exponential growth should happen nicely when it's
|
440
|
+
// needed.
|
441
|
+
// TODO(ctiller): tune this
|
459
442
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
443
|
|
461
444
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -466,7 +449,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
466
449
|
}
|
467
450
|
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
451
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
452
|
+
// copy in initial settings to all setting sets
|
470
453
|
size_t i;
|
471
454
|
int j;
|
472
455
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -477,7 +460,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
477
460
|
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
461
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
462
|
|
480
|
-
|
463
|
+
// configure http2 the way we like it
|
481
464
|
if (is_client) {
|
482
465
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
466
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -503,7 +486,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
486
|
enable_bdp = false;
|
504
487
|
}
|
505
488
|
|
506
|
-
|
489
|
+
// No pings allowed before receiving a header or data frame.
|
507
490
|
ping_state.pings_before_data_required = 0;
|
508
491
|
ping_state.is_delayed_ping_timer_set = false;
|
509
492
|
ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
|
@@ -514,8 +497,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
514
497
|
init_keepalive_pings_if_enabled(this);
|
515
498
|
|
516
499
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
500
|
+
bdp_ping_blocked = true;
|
519
501
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
502
|
nullptr);
|
521
503
|
}
|
@@ -562,7 +544,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
544
|
}
|
563
545
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
546
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
547
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
548
|
+
"close_transport");
|
566
549
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
550
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
551
|
}
|
@@ -579,11 +562,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
562
|
break;
|
580
563
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
564
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
565
|
+
// keepalive timers are not set in these two states
|
583
566
|
break;
|
584
567
|
}
|
585
568
|
|
586
|
-
|
569
|
+
// flush writable stream list to avoid dangling references
|
587
570
|
grpc_chttp2_stream* s;
|
588
571
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
572
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,7 +576,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
576
|
}
|
594
577
|
if (t->notify_on_receive_settings != nullptr) {
|
595
578
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
579
|
+
GRPC_ERROR_REF(error));
|
597
580
|
t->notify_on_receive_settings = nullptr;
|
598
581
|
}
|
599
582
|
GRPC_ERROR_UNREF(error);
|
@@ -616,9 +599,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
599
|
#endif
|
617
600
|
|
618
601
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
602
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
603
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
604
|
+
// actively reading
|
622
605
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
606
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
607
|
}
|
@@ -633,7 +616,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
633
616
|
metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
|
634
617
|
grpc_chttp2_incoming_metadata_buffer(arena)} {
|
635
618
|
if (server_data) {
|
636
|
-
id = static_cast<uint32_t>((
|
619
|
+
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
637
620
|
*t->accepting_stream = this;
|
638
621
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
639
622
|
post_destructive_reclaimer(t);
|
@@ -677,9 +660,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
677
660
|
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
661
|
}
|
679
662
|
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
|
-
|
683
663
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
664
|
if (GPR_UNLIKELY(included[i])) {
|
685
665
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
@@ -769,14 +749,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
769
749
|
GPR_ASSERT(t->accepting_stream == nullptr);
|
770
750
|
t->accepting_stream = &accepting;
|
771
751
|
t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
|
772
|
-
|
752
|
+
reinterpret_cast<void*>(id));
|
773
753
|
t->accepting_stream = nullptr;
|
774
754
|
return accepting;
|
775
755
|
}
|
776
756
|
|
777
|
-
|
778
|
-
|
779
|
-
|
757
|
+
//
|
758
|
+
// OUTPUT PROCESSING
|
759
|
+
//
|
780
760
|
|
781
761
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
762
|
switch (st) {
|
@@ -794,15 +774,15 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
774
|
grpc_chttp2_write_state st, const char* reason) {
|
795
775
|
GRPC_CHTTP2_IF_TRACING(
|
796
776
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
777
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
778
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
779
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
780
|
+
// If the state is being reset back to idle, it means a write was just
|
781
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
782
|
+
//
|
783
|
+
// This is also our chance to close the transport if the transport was marked
|
784
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
785
|
+
// from peer while we had some pending writes)
|
806
786
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
787
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
808
788
|
if (t->close_transport_on_writes_finished != nullptr) {
|
@@ -864,6 +844,9 @@ static void inc_initiate_write_reason(
|
|
864
844
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
845
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
846
|
break;
|
847
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
848
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
849
|
+
break;
|
867
850
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
851
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
852
|
break;
|
@@ -889,22 +872,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
872
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
873
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
874
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
875
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
876
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
877
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
878
|
+
// closures (some of which are potentially initiating more writes on the
|
879
|
+
// transport) are executed on the t->combiner.
|
880
|
+
//
|
881
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
882
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
883
|
+
// that gathers all the relevant bytes (which are at various places in the
|
884
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
885
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
886
|
+
// multiple write operations.
|
887
|
+
//
|
888
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
889
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
890
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
891
|
t->combiner->FinallyRun(
|
909
892
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
893
|
write_action_begin_locked, t, nullptr),
|
@@ -956,9 +939,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
939
|
write_action(t, GRPC_ERROR_NONE);
|
957
940
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
941
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
942
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
943
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
944
|
+
// been able to flush qbuf, we can resume reading.
|
962
945
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
946
|
GPR_INFO,
|
964
947
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -993,8 +976,8 @@ static void write_action_end(void* tp, grpc_error* error) {
|
|
993
976
|
GRPC_ERROR_REF(error));
|
994
977
|
}
|
995
978
|
|
996
|
-
|
997
|
-
|
979
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
980
|
+
// sendmsg
|
998
981
|
static void write_action_end_locked(void* tp, grpc_error* error) {
|
999
982
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
983
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
@@ -1057,7 +1040,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1057
1040
|
}
|
1058
1041
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1042
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1043
|
+
t->dirtied_local_settings = true;
|
1061
1044
|
}
|
1062
1045
|
}
|
1063
1046
|
|
@@ -1080,16 +1063,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1063
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1064
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1065
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1066
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1067
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1068
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1069
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1087
1070
|
goaway_error, grpc_error_string(t->goaway_error));
|
1088
1071
|
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1072
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1073
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1074
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1075
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1076
|
+
// for new connections on that channel.
|
1093
1077
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1078
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
1079
|
grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
|
@@ -1104,15 +1088,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1104
1088
|
? GRPC_MILLIS_INF_FUTURE
|
1105
1089
|
: static_cast<grpc_millis>(current_keepalive_time_ms *
|
1106
1090
|
KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1091
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1092
|
+
absl::Cord(std::to_string(t->keepalive_time)));
|
1107
1093
|
}
|
1108
|
-
|
1109
|
-
|
1110
|
-
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1094
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1095
|
+
// received.
|
1096
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1097
|
+
"got_goaway");
|
1111
1098
|
}
|
1112
1099
|
|
1113
1100
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1114
1101
|
grpc_chttp2_stream* s;
|
1115
|
-
|
1102
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1116
1103
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1117
1104
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1118
1105
|
grpc_chttp2_cancel_stream(
|
@@ -1123,14 +1110,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1123
1110
|
}
|
1124
1111
|
return;
|
1125
1112
|
}
|
1126
|
-
|
1127
|
-
|
1113
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1114
|
+
// * concurrency
|
1128
1115
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1129
1116
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1130
1117
|
t->settings[GRPC_PEER_SETTINGS]
|
1131
1118
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1132
1119
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1133
|
-
|
1120
|
+
// safe since we can't (legally) be parsing this stream yet
|
1134
1121
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1135
1122
|
GPR_INFO,
|
1136
1123
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1142,6 +1129,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1142
1129
|
|
1143
1130
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1144
1131
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1132
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1133
|
+
"Transport Stream IDs exhausted"),
|
1145
1134
|
"no_more_stream_ids");
|
1146
1135
|
}
|
1147
1136
|
|
@@ -1150,7 +1139,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1150
1139
|
grpc_chttp2_mark_stream_writable(t, s);
|
1151
1140
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1152
1141
|
}
|
1153
|
-
|
1142
|
+
// cancel out streams that will never be started
|
1154
1143
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1155
1144
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1156
1145
|
grpc_chttp2_cancel_stream(
|
@@ -1162,12 +1151,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1162
1151
|
}
|
1163
1152
|
}
|
1164
1153
|
|
1165
|
-
|
1166
|
-
we should not complete this closure until we can prove that the write got
|
1167
|
-
scheduled
|
1154
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1155
|
+
// we should not complete this closure until we can prove that the write got
|
1156
|
+
// scheduled
|
1168
1157
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1169
|
-
|
1170
|
-
bits being used for flags defined above)
|
1158
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1159
|
+
// bits being used for flags defined above)
|
1171
1160
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1172
1161
|
|
1173
1162
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1211,7 +1200,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1211
1200
|
"Error in HTTP transport completing operation");
|
1212
1201
|
closure->error_data.error = grpc_error_set_str(
|
1213
1202
|
closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1214
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1203
|
+
grpc_slice_from_copied_string(t->peer_string.c_str()));
|
1215
1204
|
}
|
1216
1205
|
closure->error_data.error =
|
1217
1206
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1259,7 +1248,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1259
1248
|
grpc_chttp2_stream* s) {
|
1260
1249
|
for (;;) {
|
1261
1250
|
if (s->fetching_send_message == nullptr) {
|
1262
|
-
|
1251
|
+
// Stream was cancelled before message fetch completed
|
1263
1252
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1264
1253
|
return; /* early out */
|
1265
1254
|
}
|
@@ -1389,7 +1378,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1389
1378
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1390
1379
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1391
1380
|
|
1392
|
-
|
1381
|
+
// Identify stream compression
|
1393
1382
|
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1394
1383
|
.content_encoding == nullptr ||
|
1395
1384
|
grpc_stream_compression_method_parse(
|
@@ -1408,68 +1397,48 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1408
1397
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1409
1398
|
s->send_initial_metadata =
|
1410
1399
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1411
|
-
const size_t metadata_size =
|
1412
|
-
grpc_metadata_batch_size(s->send_initial_metadata);
|
1413
|
-
const size_t metadata_peer_limit =
|
1414
|
-
t->settings[GRPC_PEER_SETTINGS]
|
1415
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
1416
1400
|
if (t->is_client) {
|
1417
1401
|
s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
|
1418
1402
|
}
|
1419
|
-
if (
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
static_cast<intptr_t>(metadata_size)),
|
1429
|
-
GRPC_ERROR_INT_LIMIT,
|
1430
|
-
static_cast<intptr_t>(metadata_peer_limit)),
|
1431
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
1432
|
-
} else {
|
1433
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1434
|
-
s->seen_error = true;
|
1435
|
-
}
|
1436
|
-
if (!s->write_closed) {
|
1437
|
-
if (t->is_client) {
|
1438
|
-
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1439
|
-
GPR_ASSERT(s->id == 0);
|
1440
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1441
|
-
maybe_start_some_streams(t);
|
1442
|
-
} else {
|
1443
|
-
grpc_chttp2_cancel_stream(
|
1444
|
-
t, s,
|
1445
|
-
grpc_error_set_int(
|
1446
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1447
|
-
"Transport closed", &t->closed_with_error, 1),
|
1448
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1449
|
-
}
|
1403
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1404
|
+
s->seen_error = true;
|
1405
|
+
}
|
1406
|
+
if (!s->write_closed) {
|
1407
|
+
if (t->is_client) {
|
1408
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1409
|
+
GPR_ASSERT(s->id == 0);
|
1410
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1411
|
+
maybe_start_some_streams(t);
|
1450
1412
|
} else {
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1458
|
-
}
|
1413
|
+
grpc_chttp2_cancel_stream(
|
1414
|
+
t, s,
|
1415
|
+
grpc_error_set_int(
|
1416
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1417
|
+
"Transport closed", &t->closed_with_error, 1),
|
1418
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1459
1419
|
}
|
1460
1420
|
} else {
|
1461
|
-
s->
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1421
|
+
GPR_ASSERT(s->id != 0);
|
1422
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1423
|
+
if (!(op->send_message &&
|
1424
|
+
(op->payload->send_message.send_message->flags() &
|
1425
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1426
|
+
grpc_chttp2_initiate_write(
|
1427
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1428
|
+
}
|
1468
1429
|
}
|
1430
|
+
} else {
|
1431
|
+
s->send_initial_metadata = nullptr;
|
1432
|
+
grpc_chttp2_complete_closure_step(
|
1433
|
+
t, s, &s->send_initial_metadata_finished,
|
1434
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1435
|
+
"Attempt to send initial metadata after stream was closed",
|
1436
|
+
&s->write_closed_error, 1),
|
1437
|
+
"send_initial_metadata_finished");
|
1469
1438
|
}
|
1470
1439
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1471
1440
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1472
|
-
(gpr_atm)t->peer_string);
|
1441
|
+
(gpr_atm)t->peer_string.c_str());
|
1473
1442
|
}
|
1474
1443
|
}
|
1475
1444
|
|
@@ -1527,47 +1496,27 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1527
1496
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1528
1497
|
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1498
|
s->write_buffering = false;
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
t, s,
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
}
|
1552
|
-
if (s->write_closed) {
|
1553
|
-
s->send_trailing_metadata = nullptr;
|
1554
|
-
s->sent_trailing_metadata_op = nullptr;
|
1555
|
-
grpc_chttp2_complete_closure_step(
|
1556
|
-
t, s, &s->send_trailing_metadata_finished,
|
1557
|
-
grpc_metadata_batch_is_empty(
|
1558
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1559
|
-
? GRPC_ERROR_NONE
|
1560
|
-
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1561
|
-
"Attempt to send trailing metadata after "
|
1562
|
-
"stream was closed"),
|
1563
|
-
"send_trailing_metadata_finished");
|
1564
|
-
} else if (s->id != 0) {
|
1565
|
-
/* TODO(ctiller): check if there's flow control for any outstanding
|
1566
|
-
bytes before going writable */
|
1567
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1568
|
-
grpc_chttp2_initiate_write(
|
1569
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
|
-
}
|
1499
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1500
|
+
s->seen_error = true;
|
1501
|
+
}
|
1502
|
+
if (s->write_closed) {
|
1503
|
+
s->send_trailing_metadata = nullptr;
|
1504
|
+
s->sent_trailing_metadata_op = nullptr;
|
1505
|
+
grpc_chttp2_complete_closure_step(
|
1506
|
+
t, s, &s->send_trailing_metadata_finished,
|
1507
|
+
grpc_metadata_batch_is_empty(
|
1508
|
+
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1509
|
+
? GRPC_ERROR_NONE
|
1510
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1511
|
+
"Attempt to send trailing metadata after "
|
1512
|
+
"stream was closed"),
|
1513
|
+
"send_trailing_metadata_finished");
|
1514
|
+
} else if (s->id != 0) {
|
1515
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1516
|
+
// bytes before going writable
|
1517
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1518
|
+
grpc_chttp2_initiate_write(
|
1519
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1571
1520
|
}
|
1572
1521
|
}
|
1573
1522
|
|
@@ -1582,7 +1531,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1582
1531
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1583
1532
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1584
1533
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1585
|
-
(gpr_atm)t->peer_string);
|
1534
|
+
(gpr_atm)t->peer_string.c_str());
|
1586
1535
|
}
|
1587
1536
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1588
1537
|
}
|
@@ -1665,8 +1614,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1665
1614
|
}
|
1666
1615
|
|
1667
1616
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
|
1668
|
-
|
1669
|
-
|
1617
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1618
|
+
// and maybe they hold resources that need to be freed
|
1670
1619
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1671
1620
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1672
1621
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1692,11 +1641,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1692
1641
|
GRPC_ERROR_NONE);
|
1693
1642
|
}
|
1694
1643
|
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1699
|
-
*/
|
1644
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1645
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1646
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1700
1647
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1701
1648
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1702
1649
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1710,7 +1657,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1710
1657
|
}
|
1711
1658
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1712
1659
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1713
|
-
|
1660
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1714
1661
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1715
1662
|
start_keepalive_ping_locked, t, nullptr),
|
1716
1663
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1752,9 +1699,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1752
1699
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1753
1700
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1754
1701
|
if (pq->inflight_id != id) {
|
1755
|
-
|
1756
|
-
|
1757
|
-
gpr_free(from);
|
1702
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1703
|
+
t->peer_string.c_str(), id);
|
1758
1704
|
return;
|
1759
1705
|
}
|
1760
1706
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1765,8 +1711,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1765
1711
|
}
|
1766
1712
|
|
1767
1713
|
static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
|
1768
|
-
|
1769
|
-
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string,
|
1714
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1715
|
+
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1770
1716
|
grpc_error_string(error));
|
1771
1717
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1772
1718
|
grpc_http2_error_code http_error;
|
@@ -1787,7 +1733,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1787
1733
|
grpc_error_set_int(
|
1788
1734
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1789
1735
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1790
|
-
|
1736
|
+
// The transport will be closed after the write is done
|
1791
1737
|
close_transport_locked(
|
1792
1738
|
t, grpc_error_set_int(
|
1793
1739
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1862,9 +1808,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1862
1808
|
GRPC_ERROR_NONE);
|
1863
1809
|
}
|
1864
1810
|
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1811
|
+
//
|
1812
|
+
// INPUT PROCESSING - GENERAL
|
1813
|
+
//
|
1868
1814
|
|
1869
1815
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1870
1816
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1984,8 +1930,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1984
1930
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1985
1931
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1986
1932
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1987
|
-
|
1988
|
-
|
1933
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1934
|
+
// maybe decompress the next 5 bytes in the stream.
|
1989
1935
|
if (s->stream_decompression_method ==
|
1990
1936
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1991
1937
|
grpc_slice_buffer_move_first(
|
@@ -2069,6 +2015,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2069
2015
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2070
2016
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2071
2017
|
}
|
2018
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2019
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2072
2020
|
|
2073
2021
|
GRPC_ERROR_UNREF(error);
|
2074
2022
|
|
@@ -2107,12 +2055,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2107
2055
|
if (status != GRPC_STATUS_OK) {
|
2108
2056
|
s->seen_error = true;
|
2109
2057
|
}
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2058
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2059
|
+
// last chance replacement: we've received trailing metadata,
|
2060
|
+
// but something more important has become available to signal
|
2061
|
+
// to the upper layers - drop what we've got, and then publish
|
2062
|
+
// what we want - which is safe because we haven't told anyone
|
2063
|
+
// about the metadata yet
|
2116
2064
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2117
2065
|
s->recv_trailing_metadata_finished != nullptr) {
|
2118
2066
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
@@ -2204,7 +2152,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2204
2152
|
grpc_chttp2_stream* s, int close_reads,
|
2205
2153
|
int close_writes, grpc_error* error) {
|
2206
2154
|
if (s->read_closed && s->write_closed) {
|
2207
|
-
|
2155
|
+
// already closed, but we should still fake the status if needed.
|
2208
2156
|
grpc_error* overall_error = removal_error(error, s, "Stream removed");
|
2209
2157
|
if (overall_error != GRPC_ERROR_NONE) {
|
2210
2158
|
grpc_chttp2_fake_status(t, s, overall_error);
|
@@ -2231,7 +2179,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2231
2179
|
if (s->id != 0) {
|
2232
2180
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2233
2181
|
} else {
|
2234
|
-
|
2182
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2235
2183
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2236
2184
|
}
|
2237
2185
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2270,12 +2218,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2270
2218
|
|
2271
2219
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2272
2220
|
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2221
|
+
// Hand roll a header block.
|
2222
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2223
|
+
// elegant solution.
|
2224
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2225
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2226
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2279
2227
|
if (!s->sent_initial_metadata) {
|
2280
2228
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2281
2229
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2436,9 +2384,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2436
2384
|
GRPC_ERROR_UNREF(error);
|
2437
2385
|
}
|
2438
2386
|
|
2439
|
-
|
2440
|
-
|
2441
|
-
|
2387
|
+
//
|
2388
|
+
// INPUT PROCESSING - PARSING
|
2389
|
+
//
|
2442
2390
|
|
2443
2391
|
template <class F>
|
2444
2392
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2535,11 +2483,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2535
2483
|
grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2536
2484
|
GRPC_ERROR_NONE};
|
2537
2485
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2538
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
|
2539
|
-
if (bdp_est) {
|
2540
|
-
bdp_est->AddIncomingBytes(
|
2541
|
-
static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
|
2542
|
-
}
|
2543
2486
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2544
2487
|
}
|
2545
2488
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2573,8 +2516,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2573
2516
|
"Transport closed", &t->closed_with_error, 1);
|
2574
2517
|
}
|
2575
2518
|
if (error != GRPC_ERROR_NONE) {
|
2576
|
-
|
2577
|
-
|
2519
|
+
// If a goaway frame was received, this might be the reason why the read
|
2520
|
+
// failed. Add this info to the error
|
2578
2521
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2579
2522
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2580
2523
|
}
|
@@ -2583,7 +2526,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2583
2526
|
t->endpoint_reading = 0;
|
2584
2527
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2585
2528
|
keep_reading = true;
|
2586
|
-
|
2529
|
+
// Since we have read a byte, reset the keepalive timer
|
2587
2530
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2588
2531
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2589
2532
|
}
|
@@ -2618,7 +2561,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2618
2561
|
|
2619
2562
|
// t is reffed prior to calling the first time, and once the callback chain
|
2620
2563
|
// that kicks off finishes, it's unreffed
|
2621
|
-
|
2564
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2622
2565
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2623
2566
|
send_ping_locked(
|
2624
2567
|
t,
|
@@ -2626,6 +2569,9 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2626
2569
|
grpc_schedule_on_exec_ctx),
|
2627
2570
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2628
2571
|
grpc_schedule_on_exec_ctx));
|
2572
|
+
// TODO(yashykt): Enabling this causes internal b/168345569. Re-enable once
|
2573
|
+
// fixed.
|
2574
|
+
// grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2629
2575
|
}
|
2630
2576
|
|
2631
2577
|
static void start_bdp_ping(void* tp, grpc_error* error) {
|
@@ -2638,13 +2584,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
|
|
2638
2584
|
static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
2639
2585
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2640
2586
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2641
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2587
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2642
2588
|
grpc_error_string(error));
|
2643
2589
|
}
|
2644
2590
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2645
2591
|
return;
|
2646
2592
|
}
|
2647
|
-
|
2593
|
+
// Reset the keepalive ping timer
|
2648
2594
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2649
2595
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2650
2596
|
}
|
@@ -2662,7 +2608,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
|
|
2662
2608
|
static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
2663
2609
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2664
2610
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2665
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2611
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2666
2612
|
grpc_error_string(error));
|
2667
2613
|
}
|
2668
2614
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2670,8 +2616,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2670
2616
|
return;
|
2671
2617
|
}
|
2672
2618
|
if (!t->bdp_ping_started) {
|
2673
|
-
|
2674
|
-
|
2619
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2620
|
+
// finish_bdp_ping_locked to be run later.
|
2675
2621
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2676
2622
|
finish_bdp_ping_locked, t, nullptr),
|
2677
2623
|
GRPC_ERROR_REF(error));
|
@@ -2705,7 +2651,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2705
2651
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2706
2652
|
return;
|
2707
2653
|
}
|
2708
|
-
|
2654
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2655
|
+
// Block the bdp ping till we receive more data.
|
2656
|
+
t->bdp_ping_blocked = true;
|
2657
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2658
|
+
} else {
|
2659
|
+
schedule_bdp_ping_locked(t);
|
2660
|
+
}
|
2709
2661
|
}
|
2710
2662
|
|
2711
2663
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2754,14 +2706,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2754
2706
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2755
2707
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2756
2708
|
&args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
|
2757
|
-
} else if (0 ==
|
2758
|
-
strcmp(
|
2759
|
-
args->args[i].key,
|
2760
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
2761
|
-
g_default_min_sent_ping_interval_without_data_ms =
|
2762
|
-
grpc_channel_arg_get_integer(
|
2763
|
-
&args->args[i],
|
2764
|
-
{g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
|
2765
2709
|
} else if (0 ==
|
2766
2710
|
strcmp(
|
2767
2711
|
args->args[i].key,
|
@@ -2804,7 +2748,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2804
2748
|
&t->init_keepalive_ping_locked);
|
2805
2749
|
}
|
2806
2750
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2807
|
-
|
2751
|
+
// The keepalive ping timer may be cancelled by bdp
|
2808
2752
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2809
2753
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2810
2754
|
grpc_schedule_on_exec_ctx);
|
@@ -2832,7 +2776,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2832
2776
|
}
|
2833
2777
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2834
2778
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2835
|
-
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
|
2779
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2836
2780
|
}
|
2837
2781
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2838
2782
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2856,11 +2800,11 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2856
2800
|
if (error == GRPC_ERROR_NONE) {
|
2857
2801
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2858
2802
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2859
|
-
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
|
2803
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2860
2804
|
}
|
2861
2805
|
if (!t->keepalive_ping_started) {
|
2862
|
-
|
2863
|
-
|
2806
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2807
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2864
2808
|
t->combiner->Run(
|
2865
2809
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2866
2810
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2894,7 +2838,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2894
2838
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2895
2839
|
if (error == GRPC_ERROR_NONE) {
|
2896
2840
|
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2897
|
-
t->peer_string);
|
2841
|
+
t->peer_string.c_str());
|
2898
2842
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2899
2843
|
close_transport_locked(
|
2900
2844
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2903,8 +2847,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2903
2847
|
GRPC_STATUS_UNAVAILABLE));
|
2904
2848
|
}
|
2905
2849
|
} else {
|
2906
|
-
|
2907
|
-
|
2850
|
+
// The watchdog timer should have been cancelled by
|
2851
|
+
// finish_keepalive_ping_locked.
|
2908
2852
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2909
2853
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2910
2854
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2913,21 +2857,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2913
2857
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2914
2858
|
}
|
2915
2859
|
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2860
|
+
//
|
2861
|
+
// CALLBACK LOOP
|
2862
|
+
//
|
2919
2863
|
|
2920
2864
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2921
2865
|
grpc_connectivity_state state,
|
2866
|
+
const absl::Status& status,
|
2922
2867
|
const char* reason) {
|
2923
2868
|
GRPC_CHTTP2_IF_TRACING(
|
2924
2869
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2925
|
-
t->state_tracker.SetState(state, reason);
|
2870
|
+
t->state_tracker.SetState(state, status, reason);
|
2926
2871
|
}
|
2927
2872
|
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2873
|
+
//
|
2874
|
+
// POLLSET STUFF
|
2875
|
+
//
|
2931
2876
|
|
2932
2877
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2933
2878
|
grpc_pollset* pollset) {
|
@@ -2941,9 +2886,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2941
2886
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2942
2887
|
}
|
2943
2888
|
|
2944
|
-
|
2945
|
-
|
2946
|
-
|
2889
|
+
//
|
2890
|
+
// BYTE STREAM
|
2891
|
+
//
|
2947
2892
|
|
2948
2893
|
static void reset_byte_stream(void* arg, grpc_error* error) {
|
2949
2894
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
@@ -3031,7 +2976,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3031
2976
|
s->data_parser.parsing_frame = nullptr;
|
3032
2977
|
}
|
3033
2978
|
} else {
|
3034
|
-
|
2979
|
+
// Should never reach here.
|
3035
2980
|
GPR_ASSERT(false);
|
3036
2981
|
}
|
3037
2982
|
} else {
|
@@ -3160,9 +3105,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
|
|
3160
3105
|
|
3161
3106
|
} // namespace grpc_core
|
3162
3107
|
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3108
|
+
//
|
3109
|
+
// RESOURCE QUOTAS
|
3110
|
+
//
|
3166
3111
|
|
3167
3112
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3168
3113
|
if (!t->benign_reclaimer_registered) {
|
@@ -3197,11 +3142,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3197
3142
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3198
3143
|
if (error == GRPC_ERROR_NONE &&
|
3199
3144
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3200
|
-
|
3201
|
-
|
3145
|
+
// Channel with no active streams: send a goaway to try and make it
|
3146
|
+
// disconnect cleanly
|
3202
3147
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3203
3148
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3204
|
-
t->peer_string);
|
3149
|
+
t->peer_string.c_str());
|
3205
3150
|
}
|
3206
3151
|
send_goaway(t,
|
3207
3152
|
grpc_error_set_int(
|
@@ -3212,7 +3157,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3212
3157
|
gpr_log(GPR_INFO,
|
3213
3158
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3214
3159
|
" streams",
|
3215
|
-
t->peer_string
|
3160
|
+
t->peer_string.c_str(),
|
3161
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3216
3162
|
}
|
3217
3163
|
t->benign_reclaimer_registered = false;
|
3218
3164
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -3237,8 +3183,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3237
3183
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3238
3184
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3239
3185
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3240
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3241
|
-
s->id);
|
3186
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3187
|
+
t->peer_string.c_str(), s->id);
|
3242
3188
|
}
|
3243
3189
|
grpc_chttp2_cancel_stream(
|
3244
3190
|
t, s,
|
@@ -3246,10 +3192,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3246
3192
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3247
3193
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3248
3194
|
if (n > 1) {
|
3249
|
-
|
3250
|
-
|
3251
|
-
|
3252
|
-
|
3195
|
+
// Since we cancel one stream per destructive reclamation, if
|
3196
|
+
// there are more streams left, we can immediately post a new
|
3197
|
+
// reclaimer in case the resource quota needs to free more
|
3198
|
+
// memory
|
3253
3199
|
post_destructive_reclaimer(t);
|
3254
3200
|
}
|
3255
3201
|
}
|
@@ -3260,9 +3206,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3260
3206
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3261
3207
|
}
|
3262
3208
|
|
3263
|
-
|
3264
|
-
|
3265
|
-
|
3209
|
+
//
|
3210
|
+
// MONITORING
|
3211
|
+
//
|
3266
3212
|
|
3267
3213
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3268
3214
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3299,6 +3245,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3299
3245
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3300
3246
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3301
3247
|
return "APPLICATION_PING";
|
3248
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3249
|
+
return "BDP_PING";
|
3302
3250
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3303
3251
|
return "KEEPALIVE_PING";
|
3304
3252
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|