grpc 1.30.2 → 1.35.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1055 -18213
- 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/grpc_security_constants.h +3 -0
- 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 +16 -12
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +28 -88
- 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 +14 -13
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +2991 -1559
- 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 +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +125 -0
- 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/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -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 +13 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +27 -24
- 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 +248 -214
- 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 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +29 -19
- 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.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +10 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +12 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +14 -18
- 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_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +488 -65
- 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 +13 -12
- 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 +673 -69
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- 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_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +49 -49
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +35 -81
- 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 +142 -0
- 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 +116 -88
- 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 +6 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- 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 +59 -82
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -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 +478 -342
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +284 -321
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +33 -30
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +23 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
- data/src/core/ext/transport/chttp2/transport/writing.cc +17 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +87 -33
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
- 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 -9
- 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 -1
- 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 +52 -32
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +106 -106
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +688 -499
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
- 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 +29 -13
- 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 +19 -7
- 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 +122 -62
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
- 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 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +12 -6
- 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 +9 -9
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +68 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +727 -587
- 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 -10
- 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 +39 -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 +40 -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 +40 -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 +220 -42
- 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 +661 -791
- 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 +48 -20
- 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 +6 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +41 -88
- 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 +23 -9
- data/src/core/lib/gpr/log_posix.cc +19 -7
- 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 +33 -31
- data/src/core/lib/gpr/string.h +9 -8
- 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/global_config_env.cc +8 -6
- 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 +14 -11
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +6 -6
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- 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/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +17 -12
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +40 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +15 -12
- 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/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- 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/port.h +1 -21
- 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_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +19 -16
- data/src/core/lib/iomgr/sockaddr_utils.h +4 -3
- 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/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +54 -33
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +43 -21
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +34 -36
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- 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 +16 -15
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +25 -25
- data/src/core/lib/iomgr/udp_server.h +6 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
- data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
- 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 +28 -25
- 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 +8 -6
- 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/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +82 -55
- 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.cc +7 -4
- 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 +58 -74
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +25 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +11 -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 +65 -185
- 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 +20 -25
- 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 +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +22 -15
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +46 -25
- data/src/core/lib/security/security_connector/ssl_utils.h +25 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +359 -293
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- 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.cc +12 -13
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +45 -5
- 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 +3 -2
- data/src/core/lib/surface/call.cc +93 -85
- 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 +30 -29
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +32 -14
- 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 +1144 -1343
- data/src/core/lib/surface/server.h +400 -70
- 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 +21 -8
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +58 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +45 -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 +24 -14
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +51 -26
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- 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 +177 -66
- data/src/core/tsi/ssl_transport_security.h +23 -8
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security_interface.h +6 -1
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +6 -3
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
- 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/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +33 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +46 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +22 -6
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- 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 +482 -464
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -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/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- 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 +159 -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/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- 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/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- 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 +70 -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/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
- 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 +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -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.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +20 -8
- 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_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +65 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
- 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 +57 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +38 -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 +37 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- 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 +30 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- 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 +126 -40
- 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/aes.h +16 -4
- 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 +22 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +7 -4
- 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 +73 -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 +136 -26
- 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 +43 -24
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +942 -747
- 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 +38 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +27 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +66 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +48 -7
- 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 +105 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -34
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- 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 +88 -40
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +152 -50
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +604 -511
- 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 +311 -211
- 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 +215 -70
- data/third_party/upb/upb/msg.h +558 -14
- data/third_party/upb/upb/port_def.inc +105 -63
- data/third_party/upb/upb/port_undef.inc +10 -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 +73 -269
- data/third_party/upb/upb/table.int.h +25 -57
- 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 +138 -135
- data/third_party/upb/upb/upb.h +119 -146
- data/third_party/upb/upb/upb.hpp +88 -0
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +560 -166
- 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 -834
- 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 -484
- 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 -348
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- 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 -35
- 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 -418
- 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 -197
- 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 -378
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- 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 -218
- 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 -305
- 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 -1447
- 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 -328
- 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 -78
- 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 -897
- 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 -322
- 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 -72
- 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 -642
- 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 -673
- 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 -518
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
- 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 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- 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 -33
- 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 -266
- 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 -324
- 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 -240
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- 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 -33
- 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 -527
- 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 -112
- 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 -399
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- 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 -33
- 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 -3032
- 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 -199
- 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 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- 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 -725
- 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 -1132
- 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 -50
- 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 -134
- 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 -144
- 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 -87
- 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 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- 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 -249
- 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/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -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,16 +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
|
-
|
1111
|
-
|
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");
|
1112
1098
|
}
|
1113
1099
|
|
1114
1100
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1115
1101
|
grpc_chttp2_stream* s;
|
1116
|
-
|
1102
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1117
1103
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1118
1104
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1119
1105
|
grpc_chttp2_cancel_stream(
|
@@ -1124,14 +1110,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1124
1110
|
}
|
1125
1111
|
return;
|
1126
1112
|
}
|
1127
|
-
|
1128
|
-
|
1113
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1114
|
+
// * concurrency
|
1129
1115
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1130
1116
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1131
1117
|
t->settings[GRPC_PEER_SETTINGS]
|
1132
1118
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1133
1119
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1134
|
-
|
1120
|
+
// safe since we can't (legally) be parsing this stream yet
|
1135
1121
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1136
1122
|
GPR_INFO,
|
1137
1123
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1143,6 +1129,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1143
1129
|
|
1144
1130
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1145
1131
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1132
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1133
|
+
"Transport Stream IDs exhausted"),
|
1146
1134
|
"no_more_stream_ids");
|
1147
1135
|
}
|
1148
1136
|
|
@@ -1151,7 +1139,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1151
1139
|
grpc_chttp2_mark_stream_writable(t, s);
|
1152
1140
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1153
1141
|
}
|
1154
|
-
|
1142
|
+
// cancel out streams that will never be started
|
1155
1143
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1156
1144
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1157
1145
|
grpc_chttp2_cancel_stream(
|
@@ -1163,12 +1151,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1163
1151
|
}
|
1164
1152
|
}
|
1165
1153
|
|
1166
|
-
|
1167
|
-
we should not complete this closure until we can prove that the write got
|
1168
|
-
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
|
1169
1157
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1170
|
-
|
1171
|
-
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)
|
1172
1160
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1173
1161
|
|
1174
1162
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1212,7 +1200,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1212
1200
|
"Error in HTTP transport completing operation");
|
1213
1201
|
closure->error_data.error = grpc_error_set_str(
|
1214
1202
|
closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1215
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1203
|
+
grpc_slice_from_copied_string(t->peer_string.c_str()));
|
1216
1204
|
}
|
1217
1205
|
closure->error_data.error =
|
1218
1206
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1260,7 +1248,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1260
1248
|
grpc_chttp2_stream* s) {
|
1261
1249
|
for (;;) {
|
1262
1250
|
if (s->fetching_send_message == nullptr) {
|
1263
|
-
|
1251
|
+
// Stream was cancelled before message fetch completed
|
1264
1252
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1265
1253
|
return; /* early out */
|
1266
1254
|
}
|
@@ -1390,7 +1378,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1378
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1391
1379
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1392
1380
|
|
1393
|
-
|
1381
|
+
// Identify stream compression
|
1394
1382
|
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1395
1383
|
.content_encoding == nullptr ||
|
1396
1384
|
grpc_stream_compression_method_parse(
|
@@ -1409,68 +1397,48 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1409
1397
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1410
1398
|
s->send_initial_metadata =
|
1411
1399
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1412
|
-
const size_t metadata_size =
|
1413
|
-
grpc_metadata_batch_size(s->send_initial_metadata);
|
1414
|
-
const size_t metadata_peer_limit =
|
1415
|
-
t->settings[GRPC_PEER_SETTINGS]
|
1416
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
1417
1400
|
if (t->is_client) {
|
1418
1401
|
s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
|
1419
1402
|
}
|
1420
|
-
if (
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
static_cast<intptr_t>(metadata_size)),
|
1430
|
-
GRPC_ERROR_INT_LIMIT,
|
1431
|
-
static_cast<intptr_t>(metadata_peer_limit)),
|
1432
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
1433
|
-
} else {
|
1434
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1435
|
-
s->seen_error = true;
|
1436
|
-
}
|
1437
|
-
if (!s->write_closed) {
|
1438
|
-
if (t->is_client) {
|
1439
|
-
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1440
|
-
GPR_ASSERT(s->id == 0);
|
1441
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1442
|
-
maybe_start_some_streams(t);
|
1443
|
-
} else {
|
1444
|
-
grpc_chttp2_cancel_stream(
|
1445
|
-
t, s,
|
1446
|
-
grpc_error_set_int(
|
1447
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1448
|
-
"Transport closed", &t->closed_with_error, 1),
|
1449
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1450
|
-
}
|
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);
|
1451
1412
|
} else {
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1459
|
-
}
|
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));
|
1460
1419
|
}
|
1461
1420
|
} else {
|
1462
|
-
s->
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
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
|
+
}
|
1469
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");
|
1470
1438
|
}
|
1471
1439
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1472
1440
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1473
|
-
(gpr_atm)t->peer_string);
|
1441
|
+
(gpr_atm)t->peer_string.c_str());
|
1474
1442
|
}
|
1475
1443
|
}
|
1476
1444
|
|
@@ -1526,47 +1494,29 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1526
1494
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1527
1495
|
s->send_trailing_metadata =
|
1528
1496
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
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
|
-
grpc_chttp2_complete_closure_step(
|
1555
|
-
t, s, &s->send_trailing_metadata_finished,
|
1556
|
-
grpc_metadata_batch_is_empty(
|
1557
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1558
|
-
? GRPC_ERROR_NONE
|
1559
|
-
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1560
|
-
"Attempt to send trailing metadata after "
|
1561
|
-
"stream was closed"),
|
1562
|
-
"send_trailing_metadata_finished");
|
1563
|
-
} else if (s->id != 0) {
|
1564
|
-
/* TODO(ctiller): check if there's flow control for any outstanding
|
1565
|
-
bytes before going writable */
|
1566
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1567
|
-
grpc_chttp2_initiate_write(
|
1568
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1569
|
-
}
|
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);
|
1570
1520
|
}
|
1571
1521
|
}
|
1572
1522
|
|
@@ -1581,7 +1531,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1581
1531
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1582
1532
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1583
1533
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1584
|
-
(gpr_atm)t->peer_string);
|
1534
|
+
(gpr_atm)t->peer_string.c_str());
|
1585
1535
|
}
|
1586
1536
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1587
1537
|
}
|
@@ -1664,8 +1614,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1664
1614
|
}
|
1665
1615
|
|
1666
1616
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
|
1667
|
-
|
1668
|
-
|
1617
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1618
|
+
// and maybe they hold resources that need to be freed
|
1669
1619
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1670
1620
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1671
1621
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1691,11 +1641,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1691
1641
|
GRPC_ERROR_NONE);
|
1692
1642
|
}
|
1693
1643
|
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1698
|
-
*/
|
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.
|
1699
1647
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1700
1648
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1701
1649
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1709,7 +1657,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1709
1657
|
}
|
1710
1658
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1711
1659
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1712
|
-
|
1660
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1713
1661
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1714
1662
|
start_keepalive_ping_locked, t, nullptr),
|
1715
1663
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1751,9 +1699,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1751
1699
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1752
1700
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1753
1701
|
if (pq->inflight_id != id) {
|
1754
|
-
|
1755
|
-
|
1756
|
-
gpr_free(from);
|
1702
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1703
|
+
t->peer_string.c_str(), id);
|
1757
1704
|
return;
|
1758
1705
|
}
|
1759
1706
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1764,8 +1711,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1764
1711
|
}
|
1765
1712
|
|
1766
1713
|
static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
|
1767
|
-
|
1768
|
-
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(),
|
1769
1716
|
grpc_error_string(error));
|
1770
1717
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1771
1718
|
grpc_http2_error_code http_error;
|
@@ -1786,7 +1733,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1786
1733
|
grpc_error_set_int(
|
1787
1734
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1788
1735
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1789
|
-
|
1736
|
+
// The transport will be closed after the write is done
|
1790
1737
|
close_transport_locked(
|
1791
1738
|
t, grpc_error_set_int(
|
1792
1739
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1794,6 +1741,15 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1794
1741
|
}
|
1795
1742
|
}
|
1796
1743
|
|
1744
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
1745
|
+
if (!t->is_client) {
|
1746
|
+
t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
|
1747
|
+
t->ping_recv_state.ping_strikes = 0;
|
1748
|
+
}
|
1749
|
+
t->ping_state.pings_before_data_required =
|
1750
|
+
t->ping_policy.max_pings_without_data;
|
1751
|
+
}
|
1752
|
+
|
1797
1753
|
static void perform_transport_op_locked(void* stream_op,
|
1798
1754
|
grpc_error* /*error_ignored*/) {
|
1799
1755
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
@@ -1852,9 +1808,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1852
1808
|
GRPC_ERROR_NONE);
|
1853
1809
|
}
|
1854
1810
|
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1811
|
+
//
|
1812
|
+
// INPUT PROCESSING - GENERAL
|
1813
|
+
//
|
1858
1814
|
|
1859
1815
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1860
1816
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1974,8 +1930,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1974
1930
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1975
1931
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1976
1932
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1977
|
-
|
1978
|
-
|
1933
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1934
|
+
// maybe decompress the next 5 bytes in the stream.
|
1979
1935
|
if (s->stream_decompression_method ==
|
1980
1936
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1981
1937
|
grpc_slice_buffer_move_first(
|
@@ -2059,6 +2015,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2059
2015
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2060
2016
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2061
2017
|
}
|
2018
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2019
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2062
2020
|
|
2063
2021
|
GRPC_ERROR_UNREF(error);
|
2064
2022
|
|
@@ -2097,12 +2055,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2097
2055
|
if (status != GRPC_STATUS_OK) {
|
2098
2056
|
s->seen_error = true;
|
2099
2057
|
}
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
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
|
2106
2064
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2107
2065
|
s->recv_trailing_metadata_finished != nullptr) {
|
2108
2066
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
@@ -2177,6 +2135,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2177
2135
|
"send_initial_metadata_finished");
|
2178
2136
|
|
2179
2137
|
s->send_trailing_metadata = nullptr;
|
2138
|
+
s->sent_trailing_metadata_op = nullptr;
|
2180
2139
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2181
2140
|
GRPC_ERROR_REF(error),
|
2182
2141
|
"send_trailing_metadata_finished");
|
@@ -2193,9 +2152,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2193
2152
|
grpc_chttp2_stream* s, int close_reads,
|
2194
2153
|
int close_writes, grpc_error* error) {
|
2195
2154
|
if (s->read_closed && s->write_closed) {
|
2196
|
-
|
2155
|
+
// already closed, but we should still fake the status if needed.
|
2156
|
+
grpc_error* overall_error = removal_error(error, s, "Stream removed");
|
2157
|
+
if (overall_error != GRPC_ERROR_NONE) {
|
2158
|
+
grpc_chttp2_fake_status(t, s, overall_error);
|
2159
|
+
}
|
2197
2160
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2198
|
-
GRPC_ERROR_UNREF(error);
|
2199
2161
|
return;
|
2200
2162
|
}
|
2201
2163
|
bool closed_read = false;
|
@@ -2217,7 +2179,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2217
2179
|
if (s->id != 0) {
|
2218
2180
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2219
2181
|
} else {
|
2220
|
-
|
2182
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2221
2183
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2222
2184
|
}
|
2223
2185
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2256,12 +2218,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2256
2218
|
|
2257
2219
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2258
2220
|
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
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.
|
2265
2227
|
if (!s->sent_initial_metadata) {
|
2266
2228
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2267
2229
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2390,6 +2352,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2390
2352
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2391
2353
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2392
2354
|
grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
|
2355
|
+
grpc_chttp2_reset_ping_clock(t);
|
2393
2356
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2394
2357
|
&s->stats.outgoing);
|
2395
2358
|
|
@@ -2421,9 +2384,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2421
2384
|
GRPC_ERROR_UNREF(error);
|
2422
2385
|
}
|
2423
2386
|
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2387
|
+
//
|
2388
|
+
// INPUT PROCESSING - PARSING
|
2389
|
+
//
|
2427
2390
|
|
2428
2391
|
template <class F>
|
2429
2392
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2520,11 +2483,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2520
2483
|
grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2521
2484
|
GRPC_ERROR_NONE};
|
2522
2485
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2523
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
|
2524
|
-
if (bdp_est) {
|
2525
|
-
bdp_est->AddIncomingBytes(
|
2526
|
-
static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
|
2527
|
-
}
|
2528
2486
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2529
2487
|
}
|
2530
2488
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2558,8 +2516,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2558
2516
|
"Transport closed", &t->closed_with_error, 1);
|
2559
2517
|
}
|
2560
2518
|
if (error != GRPC_ERROR_NONE) {
|
2561
|
-
|
2562
|
-
|
2519
|
+
// If a goaway frame was received, this might be the reason why the read
|
2520
|
+
// failed. Add this info to the error
|
2563
2521
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2564
2522
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2565
2523
|
}
|
@@ -2568,7 +2526,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2568
2526
|
t->endpoint_reading = 0;
|
2569
2527
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2570
2528
|
keep_reading = true;
|
2571
|
-
|
2529
|
+
// Since we have read a byte, reset the keepalive timer
|
2572
2530
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2573
2531
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2574
2532
|
}
|
@@ -2603,7 +2561,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2603
2561
|
|
2604
2562
|
// t is reffed prior to calling the first time, and once the callback chain
|
2605
2563
|
// that kicks off finishes, it's unreffed
|
2606
|
-
|
2564
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2607
2565
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2608
2566
|
send_ping_locked(
|
2609
2567
|
t,
|
@@ -2611,6 +2569,9 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2611
2569
|
grpc_schedule_on_exec_ctx),
|
2612
2570
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2613
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);
|
2614
2575
|
}
|
2615
2576
|
|
2616
2577
|
static void start_bdp_ping(void* tp, grpc_error* error) {
|
@@ -2623,13 +2584,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
|
|
2623
2584
|
static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
2624
2585
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2625
2586
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2626
|
-
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(),
|
2627
2588
|
grpc_error_string(error));
|
2628
2589
|
}
|
2629
2590
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2630
2591
|
return;
|
2631
2592
|
}
|
2632
|
-
|
2593
|
+
// Reset the keepalive ping timer
|
2633
2594
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2634
2595
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2635
2596
|
}
|
@@ -2647,7 +2608,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
|
|
2647
2608
|
static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
2648
2609
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2649
2610
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2650
|
-
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(),
|
2651
2612
|
grpc_error_string(error));
|
2652
2613
|
}
|
2653
2614
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2655,8 +2616,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2655
2616
|
return;
|
2656
2617
|
}
|
2657
2618
|
if (!t->bdp_ping_started) {
|
2658
|
-
|
2659
|
-
|
2619
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2620
|
+
// finish_bdp_ping_locked to be run later.
|
2660
2621
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2661
2622
|
finish_bdp_ping_locked, t, nullptr),
|
2662
2623
|
GRPC_ERROR_REF(error));
|
@@ -2690,7 +2651,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2690
2651
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2691
2652
|
return;
|
2692
2653
|
}
|
2693
|
-
|
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
|
+
}
|
2694
2661
|
}
|
2695
2662
|
|
2696
2663
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2739,14 +2706,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2739
2706
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2740
2707
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2741
2708
|
&args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
|
2742
|
-
} else if (0 ==
|
2743
|
-
strcmp(
|
2744
|
-
args->args[i].key,
|
2745
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
2746
|
-
g_default_min_sent_ping_interval_without_data_ms =
|
2747
|
-
grpc_channel_arg_get_integer(
|
2748
|
-
&args->args[i],
|
2749
|
-
{g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
|
2750
2709
|
} else if (0 ==
|
2751
2710
|
strcmp(
|
2752
2711
|
args->args[i].key,
|
@@ -2789,7 +2748,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2789
2748
|
&t->init_keepalive_ping_locked);
|
2790
2749
|
}
|
2791
2750
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2792
|
-
|
2751
|
+
// The keepalive ping timer may be cancelled by bdp
|
2793
2752
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2794
2753
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2795
2754
|
grpc_schedule_on_exec_ctx);
|
@@ -2817,7 +2776,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2817
2776
|
}
|
2818
2777
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2819
2778
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2820
|
-
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());
|
2821
2780
|
}
|
2822
2781
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2823
2782
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2841,11 +2800,11 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2841
2800
|
if (error == GRPC_ERROR_NONE) {
|
2842
2801
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2843
2802
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2844
|
-
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());
|
2845
2804
|
}
|
2846
2805
|
if (!t->keepalive_ping_started) {
|
2847
|
-
|
2848
|
-
|
2806
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2807
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2849
2808
|
t->combiner->Run(
|
2850
2809
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2851
2810
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2878,8 +2837,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2878
2837
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2879
2838
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2880
2839
|
if (error == GRPC_ERROR_NONE) {
|
2881
|
-
gpr_log(
|
2882
|
-
t->peer_string);
|
2840
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2841
|
+
t->peer_string.c_str());
|
2883
2842
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2884
2843
|
close_transport_locked(
|
2885
2844
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2888,8 +2847,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2888
2847
|
GRPC_STATUS_UNAVAILABLE));
|
2889
2848
|
}
|
2890
2849
|
} else {
|
2891
|
-
|
2892
|
-
|
2850
|
+
// The watchdog timer should have been cancelled by
|
2851
|
+
// finish_keepalive_ping_locked.
|
2893
2852
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2894
2853
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2895
2854
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2898,21 +2857,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2898
2857
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2899
2858
|
}
|
2900
2859
|
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2860
|
+
//
|
2861
|
+
// CALLBACK LOOP
|
2862
|
+
//
|
2904
2863
|
|
2905
2864
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2906
2865
|
grpc_connectivity_state state,
|
2866
|
+
const absl::Status& status,
|
2907
2867
|
const char* reason) {
|
2908
2868
|
GRPC_CHTTP2_IF_TRACING(
|
2909
2869
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2910
|
-
t->state_tracker.SetState(state, reason);
|
2870
|
+
t->state_tracker.SetState(state, status, reason);
|
2911
2871
|
}
|
2912
2872
|
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2873
|
+
//
|
2874
|
+
// POLLSET STUFF
|
2875
|
+
//
|
2916
2876
|
|
2917
2877
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2918
2878
|
grpc_pollset* pollset) {
|
@@ -2926,9 +2886,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2926
2886
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2927
2887
|
}
|
2928
2888
|
|
2929
|
-
|
2930
|
-
|
2931
|
-
|
2889
|
+
//
|
2890
|
+
// BYTE STREAM
|
2891
|
+
//
|
2932
2892
|
|
2933
2893
|
static void reset_byte_stream(void* arg, grpc_error* error) {
|
2934
2894
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
@@ -3016,7 +2976,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3016
2976
|
s->data_parser.parsing_frame = nullptr;
|
3017
2977
|
}
|
3018
2978
|
} else {
|
3019
|
-
|
2979
|
+
// Should never reach here.
|
3020
2980
|
GPR_ASSERT(false);
|
3021
2981
|
}
|
3022
2982
|
} else {
|
@@ -3145,9 +3105,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
|
|
3145
3105
|
|
3146
3106
|
} // namespace grpc_core
|
3147
3107
|
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3108
|
+
//
|
3109
|
+
// RESOURCE QUOTAS
|
3110
|
+
//
|
3151
3111
|
|
3152
3112
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3153
3113
|
if (!t->benign_reclaimer_registered) {
|
@@ -3182,11 +3142,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3182
3142
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3183
3143
|
if (error == GRPC_ERROR_NONE &&
|
3184
3144
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3185
|
-
|
3186
|
-
|
3145
|
+
// Channel with no active streams: send a goaway to try and make it
|
3146
|
+
// disconnect cleanly
|
3187
3147
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3188
3148
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3189
|
-
t->peer_string);
|
3149
|
+
t->peer_string.c_str());
|
3190
3150
|
}
|
3191
3151
|
send_goaway(t,
|
3192
3152
|
grpc_error_set_int(
|
@@ -3197,7 +3157,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3197
3157
|
gpr_log(GPR_INFO,
|
3198
3158
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3199
3159
|
" streams",
|
3200
|
-
t->peer_string
|
3160
|
+
t->peer_string.c_str(),
|
3161
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3201
3162
|
}
|
3202
3163
|
t->benign_reclaimer_registered = false;
|
3203
3164
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -3222,8 +3183,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3222
3183
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3223
3184
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3224
3185
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3225
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3226
|
-
s->id);
|
3186
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3187
|
+
t->peer_string.c_str(), s->id);
|
3227
3188
|
}
|
3228
3189
|
grpc_chttp2_cancel_stream(
|
3229
3190
|
t, s,
|
@@ -3231,10 +3192,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3231
3192
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3232
3193
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3233
3194
|
if (n > 1) {
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
-
|
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
|
3238
3199
|
post_destructive_reclaimer(t);
|
3239
3200
|
}
|
3240
3201
|
}
|
@@ -3245,9 +3206,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3245
3206
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3246
3207
|
}
|
3247
3208
|
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3209
|
+
//
|
3210
|
+
// MONITORING
|
3211
|
+
//
|
3251
3212
|
|
3252
3213
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3253
3214
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3284,6 +3245,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3284
3245
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3285
3246
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3286
3247
|
return "APPLICATION_PING";
|
3248
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3249
|
+
return "BDP_PING";
|
3287
3250
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3288
3251
|
return "KEEPALIVE_PING";
|
3289
3252
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|