grpc 1.30.1 → 1.40.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 +1195 -18269
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +38 -9
- data/include/grpc/grpc_security.h +291 -186
- data/include/grpc/grpc_security_constants.h +18 -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 +60 -31
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +75 -87
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/module.modulemap +14 -14
- 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 +6 -5
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +2112 -2959
- data/src/core/ext/filters/client_channel/client_channel.h +514 -62
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -4
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +146 -0
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +46 -35
- data/src/core/ext/filters/client_channel/health/health_check_client.h +34 -33
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +39 -37
- data/src/core/ext/filters/client_channel/http_proxy.cc +42 -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/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +301 -267
- 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.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -40
- 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/grpclb_client_stats.h +2 -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 +34 -37
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -51
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +18 -24
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +15 -37
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +41 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +472 -145
- 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 +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +787 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +700 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1372 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +11 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +80 -53
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -10
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +71 -78
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +11 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +14 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +495 -79
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -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 +45 -36
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +40 -45
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -6
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +883 -71
- data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
- data/src/core/ext/filters/client_channel/resolver.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver.h +7 -15
- 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 +50 -303
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +26 -54
- data/src/core/ext/filters/client_channel/retry_filter.cc +2611 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- 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 +129 -7
- data/src/core/ext/filters/client_channel/server_address.h +75 -21
- data/src/core/ext/filters/client_channel/service_config.cc +27 -21
- data/src/core/ext/filters/client_channel/service_config.h +11 -7
- data/src/core/ext/filters/client_channel/service_config_call_data.h +60 -2
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +143 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +14 -12
- data/src/core/ext/filters/client_channel/service_config_parser.h +12 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +188 -236
- data/src/core/ext/filters/client_channel/subchannel.h +88 -113
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +18 -17
- data/src/core/ext/filters/deadline/deadline_filter.cc +94 -86
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +39 -29
- data/src/core/ext/filters/http/client_authority_filter.cc +9 -9
- data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +91 -50
- 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 +30 -26
- data/src/core/ext/filters/max_age/max_age_filter.cc +50 -44
- data/src/core/ext/filters/message_size/message_size_filter.cc +72 -92
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- 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 +90 -34
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +23 -11
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +38 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -352
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -5
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +22 -20
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +67 -24
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +457 -447
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
- data/src/core/ext/transport/chttp2/transport/flow_control.h +34 -26
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +26 -25
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +19 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +681 -765
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +17 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +57 -30
- data/src/core/ext/transport/chttp2/transport/parsing.cc +181 -180
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +154 -88
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- 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 +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1452 -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 +461 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1850 -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 +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -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 +370 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1126 -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 +767 -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 +239 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +982 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -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 +43 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -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 +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +604 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +638 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +179 -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 +82 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +294 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +953 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3862 -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 +49 -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/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +285 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +117 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +404 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1671 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -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 +116 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +475 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -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/rds.upb.c → service/cluster/v3/cds.upb.c} +6 -9
- 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 +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -10
- 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 -10
- 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 +54 -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/srds.upb.c → 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/cds.upb.c → 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/service/status/v3/csds.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +438 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -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/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -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 +65 -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 +53 -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/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -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 +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -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/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/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +133 -117
- data/src/core/ext/upb-generated/validate/validate.upb.h +881 -645
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -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 +252 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -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 +570 -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 +136 -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 +300 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -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 +287 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -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/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -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 +72 -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/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -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 +205 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -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/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +67 -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/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +964 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -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 +61 -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/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +571 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -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 +178 -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 +97 -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 +246 -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 +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -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 +72 -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 +80 -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 +80 -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/service/status/v3/csds.upbdefs.c +163 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -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/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -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 +76 -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 +69 -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/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.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/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/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 +4124 -0
- data/src/core/ext/xds/xds_api.h +709 -0
- data/src/core/ext/xds/xds_bootstrap.cc +496 -0
- data/src/core/ext/xds/xds_bootstrap.h +115 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_channel_args.h +32 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +1056 -884
- data/src/core/ext/xds/xds_client.h +375 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +63 -19
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +52 -23
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +115 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +546 -0
- data/src/core/{ext/filters/client_channel → lib/address_utils}/parse_address.cc +129 -45
- data/src/core/lib/address_utils/parse_address.h +77 -0
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +138 -19
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +38 -7
- data/src/core/lib/channel/call_tracer.h +85 -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_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +18 -10
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -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 +148 -99
- data/src/core/lib/channel/channelz.h +47 -24
- data/src/core/lib/channel/channelz_registry.cc +29 -12
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +11 -52
- data/src/core/lib/channel/handshaker.h +8 -25
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +9 -0
- 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.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +3 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- 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 +59 -17
- 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 +5 -3
- 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_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- 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/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- 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 +2 -2
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/orphanable.h +7 -11
- data/src/core/lib/gprpp/ref_counted.h +105 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +168 -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/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +104 -43
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +25 -22
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +19 -15
- data/src/core/lib/http/parser.cc +63 -43
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +8 -10
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +21 -15
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +16 -13
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +6 -2
- data/src/core/lib/iomgr/endpoint.h +10 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +46 -23
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +185 -73
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +12 -10
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +6 -2
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +47 -41
- data/src/core/lib/iomgr/ev_epollex_linux.cc +92 -87
- data/src/core/lib/iomgr/ev_poll_posix.cc +41 -35
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +19 -7
- data/src/core/lib/iomgr/exec_ctx.h +20 -17
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +6 -6
- data/src/core/lib/iomgr/executor.cc +10 -9
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/iomgr.cc +3 -3
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +20 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +8 -26
- data/src/core/lib/iomgr/python_util.h +5 -5
- data/src/core/lib/iomgr/resolve_address.cc +12 -8
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +23 -27
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +12 -12
- data/src/core/lib/iomgr/resource_quota.cc +48 -42
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +18 -4
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +120 -77
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- 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 +13 -15
- data/src/core/lib/iomgr/tcp_client_custom.cc +17 -20
- data/src/core/lib/iomgr/tcp_client_posix.cc +48 -54
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +16 -14
- data/src/core/lib/iomgr/tcp_custom.cc +67 -48
- data/src/core/lib/iomgr/tcp_custom.h +14 -13
- data/src/core/lib/iomgr/tcp_posix.cc +118 -94
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +9 -10
- data/src/core/lib/iomgr/tcp_server.h +19 -16
- data/src/core/lib/iomgr/tcp_server_custom.cc +57 -58
- data/src/core/lib/iomgr/tcp_server_posix.cc +62 -61
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -16
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +42 -41
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +39 -23
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +7 -6
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +24 -23
- data/src/core/lib/iomgr/timer_manager.cc +4 -4
- data/src/core/lib/iomgr/udp_server.cc +46 -45
- 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 +9 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +13 -3
- data/src/core/lib/json/json_reader.cc +33 -31
- 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/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +161 -0
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -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/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.cc +7 -7
- data/src/core/lib/security/credentials/credentials.h +12 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +417 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -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 +500 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +121 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -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 +60 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- 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 +95 -65
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +12 -9
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +78 -92
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +347 -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 +454 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -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 +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -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 +14 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -28
- 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 +97 -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.cc +1 -1
- 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 +25 -12
- data/src/core/lib/security/security_connector/security_connector.cc +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +14 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -21
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +82 -33
- data/src/core/lib/security/security_connector/ssl_utils.h +29 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +380 -312
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +141 -79
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -19
- data/src/core/lib/security/transport/secure_endpoint.cc +13 -7
- data/src/core/lib/security/transport/security_handshaker.cc +81 -44
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -12
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +14 -15
- data/src/core/lib/security/util/json_util.h +2 -1
- data/src/core/lib/slice/slice.cc +57 -7
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +11 -13
- data/src/core/lib/slice/slice_internal.h +4 -2
- data/src/core/lib/surface/call.cc +164 -136
- data/src/core/lib/surface/call.h +15 -3
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +55 -63
- data/src/core/lib/surface/channel.h +24 -7
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +96 -96
- data/src/core/lib/surface/completion_queue.h +18 -17
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +46 -32
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +51 -58
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/server.cc +1181 -1365
- data/src/core/lib/surface/server.h +463 -70
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +6 -2
- 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.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +11 -11
- data/src/core/lib/transport/connectivity_state.cc +19 -14
- data/src/core/lib/transport/connectivity_state.h +26 -12
- data/src/core/lib/transport/error_utils.cc +33 -9
- data/src/core/lib/transport/error_utils.h +15 -3
- data/src/core/lib/transport/metadata.cc +16 -2
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.cc +76 -38
- data/src/core/lib/transport/metadata_batch.h +43 -21
- 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 +9 -6
- data/src/core/lib/transport/transport.h +26 -11
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- 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 +61 -20
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +47 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -53
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- 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 +17 -5
- 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_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
- data/src/core/tsi/ssl_transport_security.cc +199 -73
- data/src/core/tsi/ssl_transport_security.h +23 -12
- 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 +5 -5
- data/src/ruby/ext/grpc/extconf.rb +17 -4
- 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.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +46 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +87 -45
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- 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 +3 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +42 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +21 -10
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- 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 +27 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- 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 +122 -41
- data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +97 -26
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -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 +31 -4
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- 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/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- 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 +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +47 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
- 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/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
- 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/inlined_vector.h +38 -39
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
- 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 +274 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- 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 +61 -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 +1949 -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 +199 -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 +80 -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 +253 -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 +147 -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 +349 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- 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/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
- data/third_party/abseil-cpp/absl/status/status.cc +452 -0
- data/third_party/abseil-cpp/absl/status/status.h +878 -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 +7 -7
- data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
- 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 +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -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 +1017 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -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 +22 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- 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_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
- 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/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -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 +428 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -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 +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
- 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 +33 -27
- 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 +15 -8
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +2 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +41 -40
- 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 +866 -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 +763 -721
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.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 +23 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- 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/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/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/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- 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/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -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/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +198 -37
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
- 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/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +122 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- 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 +56 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +116 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +231 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +584 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +43 -15
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- 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 +131 -53
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- 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/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
- 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 +52 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -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 +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +71 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +98 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +43 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- 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 +12 -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_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +127 -41
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +11 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
- 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 +119 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +746 -561
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +58 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +23 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +62 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +16 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +104 -51
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- 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/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +467 -125
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -12
- 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 +1456 -780
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +595 -441
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +97 -53
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +202 -109
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +174 -30
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +504 -162
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +162 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +26 -73
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +1070 -566
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +66 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +183 -76
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +169 -89
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +379 -140
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/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/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
- data/third_party/xxhash/xxhash.h +5325 -0
- metadata +698 -181
- 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_bootstrap.cc +0 -342
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
- 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/filters/client_channel/xds/xds_client.h +0 -309
- 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/gpr/arena.h +0 -47
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- 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/abseil-cpp/absl/base/internal/bits.h +0 -218
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- 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,76 +99,98 @@ 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
|
-
|
107
|
-
static void write_action_begin_locked(void* t,
|
108
|
-
static void write_action(void* t,
|
109
|
-
static void write_action_end(void* t,
|
110
|
-
static void write_action_end_locked(void* t,
|
102
|
+
// forward declarations of various callbacks that we'll build closures around
|
103
|
+
static void write_action_begin_locked(void* t, grpc_error_handle error);
|
104
|
+
static void write_action(void* t, grpc_error_handle error);
|
105
|
+
static void write_action_end(void* t, grpc_error_handle error);
|
106
|
+
static void write_action_end_locked(void* t, grpc_error_handle error);
|
111
107
|
|
112
|
-
static void read_action(void* t,
|
113
|
-
static void read_action_locked(void* t,
|
108
|
+
static void read_action(void* t, grpc_error_handle error);
|
109
|
+
static void read_action_locked(void* t, grpc_error_handle error);
|
114
110
|
static void continue_read_action_locked(grpc_chttp2_transport* t);
|
115
111
|
|
116
|
-
static void complete_fetch(void* gs,
|
117
|
-
static void complete_fetch_locked(void* gs,
|
118
|
-
|
112
|
+
static void complete_fetch(void* gs, grpc_error_handle error);
|
113
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error);
|
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_handle 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_handle error);
|
130
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error);
|
131
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
|
132
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle 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);
|
139
136
|
|
140
|
-
static void close_transport_locked(grpc_chttp2_transport* t,
|
141
|
-
|
137
|
+
static void close_transport_locked(grpc_chttp2_transport* t,
|
138
|
+
grpc_error_handle error);
|
139
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
140
|
+
grpc_error_handle error);
|
141
|
+
|
142
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error);
|
143
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error);
|
144
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
|
145
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
|
146
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
|
147
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
148
|
+
grpc_error_handle error);
|
149
|
+
|
150
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
|
151
|
+
static void send_ping_locked(grpc_chttp2_transport* t,
|
152
|
+
grpc_closure* on_initiate, grpc_closure* on_ack);
|
153
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
|
142
154
|
|
143
|
-
|
144
|
-
static void
|
145
|
-
static void
|
146
|
-
static void
|
147
|
-
static void
|
148
|
-
static void
|
149
|
-
static void
|
155
|
+
// keepalive-relevant functions
|
156
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error);
|
157
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
158
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error);
|
159
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error);
|
160
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
161
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
162
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
|
163
|
+
static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
|
150
164
|
|
151
|
-
static void
|
152
|
-
static void send_ping_locked(grpc_chttp2_transport* t,
|
153
|
-
grpc_closure* on_initiate,
|
154
|
-
grpc_closure* on_complete);
|
155
|
-
static void retry_initiate_ping_locked(void* tp, grpc_error* error);
|
156
|
-
|
157
|
-
/** keepalive-relevant functions */
|
158
|
-
static void init_keepalive_ping(void* arg, grpc_error* error);
|
159
|
-
static void init_keepalive_ping_locked(void* arg, grpc_error* error);
|
160
|
-
static void start_keepalive_ping(void* arg, grpc_error* error);
|
161
|
-
static void finish_keepalive_ping(void* arg, grpc_error* error);
|
162
|
-
static void start_keepalive_ping_locked(void* arg, grpc_error* error);
|
163
|
-
static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
|
164
|
-
static void keepalive_watchdog_fired(void* arg, grpc_error* error);
|
165
|
-
static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
|
166
|
-
|
167
|
-
static void reset_byte_stream(void* arg, grpc_error* error);
|
165
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error);
|
168
166
|
|
169
167
|
// Flow control default enabled. Can be disabled by setting
|
170
168
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
171
169
|
bool g_flow_control_enabled = true;
|
172
170
|
|
173
|
-
|
174
|
-
|
175
|
-
|
171
|
+
namespace grpc_core {
|
172
|
+
|
173
|
+
namespace {
|
174
|
+
TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
|
175
|
+
TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
|
176
|
+
nullptr;
|
177
|
+
} // namespace
|
178
|
+
|
179
|
+
void TestOnlySetGlobalHttp2TransportInitCallback(
|
180
|
+
TestOnlyGlobalHttp2TransportInitCallback callback) {
|
181
|
+
test_only_init_callback = callback;
|
182
|
+
}
|
183
|
+
|
184
|
+
void TestOnlySetGlobalHttp2TransportDestructCallback(
|
185
|
+
TestOnlyGlobalHttp2TransportDestructCallback callback) {
|
186
|
+
test_only_destruct_callback = callback;
|
187
|
+
}
|
188
|
+
|
189
|
+
} // namespace grpc_core
|
190
|
+
|
191
|
+
//
|
192
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
193
|
+
//
|
176
194
|
|
177
195
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
196
|
size_t i;
|
@@ -188,7 +206,7 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
188
206
|
grpc_slice_buffer_destroy_internal(&outbuf);
|
189
207
|
grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
|
190
208
|
|
191
|
-
|
209
|
+
grpc_error_handle error =
|
192
210
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
|
193
211
|
// ContextList::Execute follows semantics of a callback function and does not
|
194
212
|
// take a ref on error
|
@@ -197,7 +215,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
197
215
|
cl = nullptr;
|
198
216
|
|
199
217
|
grpc_slice_buffer_destroy_internal(&read_buffer);
|
200
|
-
grpc_chttp2_hpack_parser_destroy(&hpack_parser);
|
201
218
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
202
219
|
|
203
220
|
for (i = 0; i < STREAM_LIST_COUNT; i++) {
|
@@ -226,12 +243,14 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
243
|
|
227
244
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
245
|
gpr_free(ping_acks);
|
229
|
-
|
246
|
+
if (grpc_core::test_only_destruct_callback != nullptr) {
|
247
|
+
grpc_core::test_only_destruct_callback();
|
248
|
+
}
|
230
249
|
}
|
231
250
|
|
232
251
|
static const grpc_transport_vtable* get_vtable(void);
|
233
252
|
|
234
|
-
|
253
|
+
// Returns whether bdp is enabled
|
235
254
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
255
|
const grpc_channel_args* channel_args,
|
237
256
|
bool is_client) {
|
@@ -273,15 +292,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
292
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
293
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
294
|
&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
295
|
} else if (0 ==
|
286
296
|
strcmp(channel_args->args[i].key,
|
287
297
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
@@ -378,12 +388,12 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
388
|
}
|
379
389
|
}
|
380
390
|
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
391
|
t->channelz_socket =
|
384
392
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
386
|
-
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string)
|
393
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
394
|
+
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
|
395
|
+
grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
|
396
|
+
channel_args));
|
387
397
|
}
|
388
398
|
return enable_bdp;
|
389
399
|
}
|
@@ -412,8 +422,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
422
|
|
413
423
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
424
|
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
425
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
426
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
427
|
g_default_min_recv_ping_interval_without_data_ms;
|
@@ -429,8 +437,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
437
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
438
|
&t->init_keepalive_ping_locked);
|
431
439
|
} else {
|
432
|
-
|
433
|
-
|
440
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
441
|
+
// inflight keeaplive timers
|
434
442
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
443
|
}
|
436
444
|
}
|
@@ -438,7 +446,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
438
446
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
447
|
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
|
440
448
|
grpc_resource_user* resource_user)
|
441
|
-
: refs(1,
|
449
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
450
|
+
? "chttp2_refcount"
|
451
|
+
: nullptr),
|
442
452
|
ep(ep),
|
443
453
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
454
|
resource_user(resource_user),
|
@@ -451,11 +461,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
461
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
462
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
463
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
464
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
465
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
466
|
+
// large enough that the exponential growth should happen nicely when it's
|
467
|
+
// needed.
|
468
|
+
// TODO(ctiller): tune this
|
459
469
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
470
|
|
461
471
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -466,7 +476,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
466
476
|
}
|
467
477
|
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
478
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
479
|
+
// copy in initial settings to all setting sets
|
470
480
|
size_t i;
|
471
481
|
int j;
|
472
482
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -474,10 +484,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
474
484
|
settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
|
475
485
|
}
|
476
486
|
}
|
477
|
-
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
487
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
488
|
|
480
|
-
|
489
|
+
// configure http2 the way we like it
|
481
490
|
if (is_client) {
|
482
491
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
492
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -503,7 +512,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
512
|
enable_bdp = false;
|
504
513
|
}
|
505
514
|
|
506
|
-
|
515
|
+
// No pings allowed before receiving a header or data frame.
|
507
516
|
ping_state.pings_before_data_required = 0;
|
508
517
|
ping_state.is_delayed_ping_timer_set = false;
|
509
518
|
ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
|
@@ -514,17 +523,19 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
514
523
|
init_keepalive_pings_if_enabled(this);
|
515
524
|
|
516
525
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
526
|
+
bdp_ping_blocked = true;
|
519
527
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
528
|
nullptr);
|
521
529
|
}
|
522
530
|
|
523
531
|
grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
|
524
532
|
post_benign_reclaimer(this);
|
533
|
+
if (grpc_core::test_only_init_callback != nullptr) {
|
534
|
+
grpc_core::test_only_init_callback();
|
535
|
+
}
|
525
536
|
}
|
526
537
|
|
527
|
-
static void destroy_transport_locked(void* tp,
|
538
|
+
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
528
539
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
529
540
|
t->destroying = 1;
|
530
541
|
close_transport_locked(
|
@@ -542,7 +553,7 @@ static void destroy_transport(grpc_transport* gt) {
|
|
542
553
|
}
|
543
554
|
|
544
555
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
545
|
-
|
556
|
+
grpc_error_handle error) {
|
546
557
|
end_all_the_calls(t, GRPC_ERROR_REF(error));
|
547
558
|
cancel_pings(t, GRPC_ERROR_REF(error));
|
548
559
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
@@ -551,7 +562,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
551
562
|
GRPC_STATUS_UNAVAILABLE);
|
552
563
|
}
|
553
564
|
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
554
|
-
if (t->close_transport_on_writes_finished ==
|
565
|
+
if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
|
555
566
|
t->close_transport_on_writes_finished =
|
556
567
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
557
568
|
"Delayed close due to in-progress write");
|
@@ -562,7 +573,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
573
|
}
|
563
574
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
575
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
576
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
577
|
+
"close_transport");
|
566
578
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
579
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
580
|
}
|
@@ -579,11 +591,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
591
|
break;
|
580
592
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
593
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
594
|
+
// keepalive timers are not set in these two states
|
583
595
|
break;
|
584
596
|
}
|
585
597
|
|
586
|
-
|
598
|
+
// flush writable stream list to avoid dangling references
|
587
599
|
grpc_chttp2_stream* s;
|
588
600
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
601
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,9 +605,14 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
605
|
}
|
594
606
|
if (t->notify_on_receive_settings != nullptr) {
|
595
607
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
608
|
+
GRPC_ERROR_REF(error));
|
597
609
|
t->notify_on_receive_settings = nullptr;
|
598
610
|
}
|
611
|
+
if (t->notify_on_close != nullptr) {
|
612
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
|
613
|
+
GRPC_ERROR_REF(error));
|
614
|
+
t->notify_on_close = nullptr;
|
615
|
+
}
|
599
616
|
GRPC_ERROR_UNREF(error);
|
600
617
|
}
|
601
618
|
|
@@ -616,9 +633,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
633
|
#endif
|
617
634
|
|
618
635
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
636
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
637
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
638
|
+
// actively reading
|
622
639
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
640
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
641
|
}
|
@@ -633,7 +650,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
633
650
|
metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
|
634
651
|
grpc_chttp2_incoming_metadata_buffer(arena)} {
|
635
652
|
if (server_data) {
|
636
|
-
id = static_cast<uint32_t>((
|
653
|
+
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
637
654
|
*t->accepting_stream = this;
|
638
655
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
639
656
|
post_destructive_reclaimer(t);
|
@@ -677,9 +694,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
677
694
|
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
695
|
}
|
679
696
|
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
|
-
|
683
697
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
698
|
if (GPR_UNLIKELY(included[i])) {
|
685
699
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
@@ -718,7 +732,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
|
718
732
|
return 0;
|
719
733
|
}
|
720
734
|
|
721
|
-
static void destroy_stream_locked(void* sp,
|
735
|
+
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
722
736
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
723
737
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
724
738
|
s->~grpc_chttp2_stream();
|
@@ -769,14 +783,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
769
783
|
GPR_ASSERT(t->accepting_stream == nullptr);
|
770
784
|
t->accepting_stream = &accepting;
|
771
785
|
t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
|
772
|
-
|
786
|
+
reinterpret_cast<void*>(id));
|
773
787
|
t->accepting_stream = nullptr;
|
774
788
|
return accepting;
|
775
789
|
}
|
776
790
|
|
777
|
-
|
778
|
-
|
779
|
-
|
791
|
+
//
|
792
|
+
// OUTPUT PROCESSING
|
793
|
+
//
|
780
794
|
|
781
795
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
796
|
switch (st) {
|
@@ -794,20 +808,20 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
808
|
grpc_chttp2_write_state st, const char* reason) {
|
795
809
|
GRPC_CHTTP2_IF_TRACING(
|
796
810
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
811
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
812
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
813
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
814
|
+
// If the state is being reset back to idle, it means a write was just
|
815
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
816
|
+
//
|
817
|
+
// This is also our chance to close the transport if the transport was marked
|
818
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
819
|
+
// from peer while we had some pending writes)
|
806
820
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
821
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
808
|
-
if (t->close_transport_on_writes_finished !=
|
809
|
-
|
810
|
-
t->close_transport_on_writes_finished =
|
822
|
+
if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
|
823
|
+
grpc_error_handle err = t->close_transport_on_writes_finished;
|
824
|
+
t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
|
811
825
|
close_transport_locked(t, err);
|
812
826
|
}
|
813
827
|
}
|
@@ -864,6 +878,9 @@ static void inc_initiate_write_reason(
|
|
864
878
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
879
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
880
|
break;
|
881
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
882
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
883
|
+
break;
|
867
884
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
885
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
886
|
break;
|
@@ -889,22 +906,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
906
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
907
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
908
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
909
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
910
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
911
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
912
|
+
// closures (some of which are potentially initiating more writes on the
|
913
|
+
// transport) are executed on the t->combiner.
|
914
|
+
//
|
915
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
916
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
917
|
+
// that gathers all the relevant bytes (which are at various places in the
|
918
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
919
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
920
|
+
// multiple write operations.
|
921
|
+
//
|
922
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
923
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
924
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
925
|
t->combiner->FinallyRun(
|
909
926
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
927
|
write_action_begin_locked, t, nullptr),
|
@@ -935,7 +952,8 @@ static const char* begin_writing_desc(bool partial) {
|
|
935
952
|
}
|
936
953
|
}
|
937
954
|
|
938
|
-
static void write_action_begin_locked(void* gt,
|
955
|
+
static void write_action_begin_locked(void* gt,
|
956
|
+
grpc_error_handle /*error_ignored*/) {
|
939
957
|
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
940
958
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
941
959
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
@@ -956,9 +974,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
974
|
write_action(t, GRPC_ERROR_NONE);
|
957
975
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
976
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
977
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
978
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
979
|
+
// been able to flush qbuf, we can resume reading.
|
962
980
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
981
|
GPR_INFO,
|
964
982
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -974,7 +992,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
974
992
|
}
|
975
993
|
}
|
976
994
|
|
977
|
-
static void write_action(void* gt,
|
995
|
+
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
978
996
|
GPR_TIMER_SCOPE("write_action", 0);
|
979
997
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
980
998
|
void* cl = t->cl;
|
@@ -986,16 +1004,16 @@ static void write_action(void* gt, grpc_error* /*error*/) {
|
|
986
1004
|
cl);
|
987
1005
|
}
|
988
1006
|
|
989
|
-
static void write_action_end(void* tp,
|
1007
|
+
static void write_action_end(void* tp, grpc_error_handle error) {
|
990
1008
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
991
1009
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
992
1010
|
write_action_end_locked, t, nullptr),
|
993
1011
|
GRPC_ERROR_REF(error));
|
994
1012
|
}
|
995
1013
|
|
996
|
-
|
997
|
-
|
998
|
-
static void write_action_end_locked(void* tp,
|
1014
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
1015
|
+
// sendmsg
|
1016
|
+
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
999
1017
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
1018
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1001
1019
|
|
@@ -1057,7 +1075,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1057
1075
|
}
|
1058
1076
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1077
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1078
|
+
t->dirtied_local_settings = true;
|
1061
1079
|
}
|
1062
1080
|
}
|
1063
1081
|
|
@@ -1080,16 +1098,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1098
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1099
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1100
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1101
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1102
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1103
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1087
|
-
goaway_error,
|
1088
|
-
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1104
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1105
|
+
goaway_error, grpc_error_std_string(t->goaway_error).c_str());
|
1106
|
+
}
|
1107
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1108
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1109
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1110
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1111
|
+
// for new connections on that channel.
|
1093
1112
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1113
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
1114
|
grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
|
@@ -1104,16 +1123,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1104
1123
|
? GRPC_MILLIS_INF_FUTURE
|
1105
1124
|
: static_cast<grpc_millis>(current_keepalive_time_ms *
|
1106
1125
|
KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1126
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1127
|
+
absl::Cord(std::to_string(t->keepalive_time)));
|
1107
1128
|
}
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1129
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1130
|
+
// received.
|
1131
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1132
|
+
"got_goaway");
|
1112
1133
|
}
|
1113
1134
|
|
1114
1135
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1115
1136
|
grpc_chttp2_stream* s;
|
1116
|
-
|
1137
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1117
1138
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1118
1139
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1119
1140
|
grpc_chttp2_cancel_stream(
|
@@ -1124,14 +1145,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1124
1145
|
}
|
1125
1146
|
return;
|
1126
1147
|
}
|
1127
|
-
|
1128
|
-
|
1148
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1149
|
+
// * concurrency
|
1129
1150
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1130
1151
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1131
1152
|
t->settings[GRPC_PEER_SETTINGS]
|
1132
1153
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1133
1154
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1134
|
-
|
1155
|
+
// safe since we can't (legally) be parsing this stream yet
|
1135
1156
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1136
1157
|
GPR_INFO,
|
1137
1158
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1143,6 +1164,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1143
1164
|
|
1144
1165
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1145
1166
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1167
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1168
|
+
"Transport Stream IDs exhausted"),
|
1146
1169
|
"no_more_stream_ids");
|
1147
1170
|
}
|
1148
1171
|
|
@@ -1151,7 +1174,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1151
1174
|
grpc_chttp2_mark_stream_writable(t, s);
|
1152
1175
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1153
1176
|
}
|
1154
|
-
|
1177
|
+
// cancel out streams that will never be started
|
1155
1178
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1156
1179
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1157
1180
|
grpc_chttp2_cancel_stream(
|
@@ -1163,12 +1186,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1163
1186
|
}
|
1164
1187
|
}
|
1165
1188
|
|
1166
|
-
|
1167
|
-
we should not complete this closure until we can prove that the write got
|
1168
|
-
scheduled
|
1189
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1190
|
+
// we should not complete this closure until we can prove that the write got
|
1191
|
+
// scheduled
|
1169
1192
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1170
|
-
|
1171
|
-
bits being used for flags defined above)
|
1193
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1194
|
+
// bits being used for flags defined above)
|
1172
1195
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1173
1196
|
|
1174
1197
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1185,7 +1208,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1185
1208
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1186
1209
|
grpc_chttp2_stream* /*s*/,
|
1187
1210
|
grpc_closure** pclosure,
|
1188
|
-
|
1211
|
+
grpc_error_handle error,
|
1212
|
+
const char* desc) {
|
1189
1213
|
grpc_closure* closure = *pclosure;
|
1190
1214
|
*pclosure = nullptr;
|
1191
1215
|
if (closure == nullptr) {
|
@@ -1194,7 +1218,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1194
1218
|
}
|
1195
1219
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1196
1220
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1197
|
-
const char* errstr = grpc_error_string(error);
|
1198
1221
|
gpr_log(
|
1199
1222
|
GPR_INFO,
|
1200
1223
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1204,7 +1227,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1204
1227
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1205
1228
|
static_cast<int>(closure->next_data.scratch %
|
1206
1229
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1207
|
-
desc,
|
1230
|
+
desc, grpc_error_std_string(error).c_str(),
|
1231
|
+
write_state_name(t->write_state));
|
1208
1232
|
}
|
1209
1233
|
if (error != GRPC_ERROR_NONE) {
|
1210
1234
|
if (closure->error_data.error == GRPC_ERROR_NONE) {
|
@@ -1212,7 +1236,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1212
1236
|
"Error in HTTP transport completing operation");
|
1213
1237
|
closure->error_data.error = grpc_error_set_str(
|
1214
1238
|
closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1215
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1239
|
+
grpc_slice_from_copied_string(t->peer_string.c_str()));
|
1216
1240
|
}
|
1217
1241
|
closure->error_data.error =
|
1218
1242
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1260,9 +1284,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1260
1284
|
grpc_chttp2_stream* s) {
|
1261
1285
|
for (;;) {
|
1262
1286
|
if (s->fetching_send_message == nullptr) {
|
1263
|
-
|
1287
|
+
// Stream was cancelled before message fetch completed
|
1264
1288
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1265
|
-
return; /* early out */
|
1266
1289
|
}
|
1267
1290
|
if (s->fetched_send_message_length == s->fetching_send_message->length()) {
|
1268
1291
|
int64_t notify_offset = s->next_message_end_offset;
|
@@ -1293,7 +1316,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1293
1316
|
UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1294
1317
|
::complete_fetch, s,
|
1295
1318
|
grpc_schedule_on_exec_ctx))) {
|
1296
|
-
|
1319
|
+
grpc_error_handle error =
|
1320
|
+
s->fetching_send_message->Pull(&s->fetching_slice);
|
1297
1321
|
if (error != GRPC_ERROR_NONE) {
|
1298
1322
|
s->fetching_send_message.reset();
|
1299
1323
|
grpc_chttp2_cancel_stream(t, s, error);
|
@@ -1304,14 +1328,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1304
1328
|
}
|
1305
1329
|
}
|
1306
1330
|
|
1307
|
-
static void complete_fetch(void* gs,
|
1331
|
+
static void complete_fetch(void* gs, grpc_error_handle error) {
|
1308
1332
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1309
1333
|
s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1310
1334
|
::complete_fetch_locked, s, nullptr),
|
1311
1335
|
GRPC_ERROR_REF(error));
|
1312
1336
|
}
|
1313
1337
|
|
1314
|
-
static void complete_fetch_locked(void* gs,
|
1338
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
1315
1339
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1316
1340
|
grpc_chttp2_transport* t = s->t;
|
1317
1341
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1341,7 +1365,7 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
|
1341
1365
|
}
|
1342
1366
|
|
1343
1367
|
static void perform_stream_op_locked(void* stream_op,
|
1344
|
-
|
1368
|
+
grpc_error_handle /*error_ignored*/) {
|
1345
1369
|
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1346
1370
|
|
1347
1371
|
grpc_transport_stream_op_batch* op =
|
@@ -1390,7 +1414,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1414
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1391
1415
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1392
1416
|
|
1393
|
-
|
1417
|
+
// Identify stream compression
|
1394
1418
|
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1395
1419
|
.content_encoding == nullptr ||
|
1396
1420
|
grpc_stream_compression_method_parse(
|
@@ -1409,68 +1433,48 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1409
1433
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1410
1434
|
s->send_initial_metadata =
|
1411
1435
|
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
1436
|
if (t->is_client) {
|
1418
1437
|
s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
|
1419
1438
|
}
|
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
|
-
}
|
1439
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1440
|
+
s->seen_error = true;
|
1441
|
+
}
|
1442
|
+
if (!s->write_closed) {
|
1443
|
+
if (t->is_client) {
|
1444
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1445
|
+
GPR_ASSERT(s->id == 0);
|
1446
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1447
|
+
maybe_start_some_streams(t);
|
1451
1448
|
} else {
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1459
|
-
}
|
1449
|
+
grpc_chttp2_cancel_stream(
|
1450
|
+
t, s,
|
1451
|
+
grpc_error_set_int(
|
1452
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1453
|
+
"Transport closed", &t->closed_with_error, 1),
|
1454
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1460
1455
|
}
|
1461
1456
|
} else {
|
1462
|
-
s->
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1457
|
+
GPR_ASSERT(s->id != 0);
|
1458
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1459
|
+
if (!(op->send_message &&
|
1460
|
+
(op->payload->send_message.send_message->flags() &
|
1461
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1462
|
+
grpc_chttp2_initiate_write(
|
1463
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1464
|
+
}
|
1469
1465
|
}
|
1466
|
+
} else {
|
1467
|
+
s->send_initial_metadata = nullptr;
|
1468
|
+
grpc_chttp2_complete_closure_step(
|
1469
|
+
t, s, &s->send_initial_metadata_finished,
|
1470
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1471
|
+
"Attempt to send initial metadata after stream was closed",
|
1472
|
+
&s->write_closed_error, 1),
|
1473
|
+
"send_initial_metadata_finished");
|
1470
1474
|
}
|
1471
1475
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1472
1476
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1473
|
-
(gpr_atm)t->peer_string);
|
1477
|
+
(gpr_atm)t->peer_string.c_str());
|
1474
1478
|
}
|
1475
1479
|
}
|
1476
1480
|
|
@@ -1526,47 +1530,29 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1526
1530
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1527
1531
|
s->send_trailing_metadata =
|
1528
1532
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1533
|
+
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1534
|
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
|
-
}
|
1535
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1536
|
+
s->seen_error = true;
|
1537
|
+
}
|
1538
|
+
if (s->write_closed) {
|
1539
|
+
s->send_trailing_metadata = nullptr;
|
1540
|
+
s->sent_trailing_metadata_op = nullptr;
|
1541
|
+
grpc_chttp2_complete_closure_step(
|
1542
|
+
t, s, &s->send_trailing_metadata_finished,
|
1543
|
+
grpc_metadata_batch_is_empty(
|
1544
|
+
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1545
|
+
? GRPC_ERROR_NONE
|
1546
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1547
|
+
"Attempt to send trailing metadata after "
|
1548
|
+
"stream was closed"),
|
1549
|
+
"send_trailing_metadata_finished");
|
1550
|
+
} else if (s->id != 0) {
|
1551
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1552
|
+
// bytes before going writable
|
1553
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1554
|
+
grpc_chttp2_initiate_write(
|
1555
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
1556
|
}
|
1571
1557
|
}
|
1572
1558
|
|
@@ -1581,7 +1567,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1581
1567
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1582
1568
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1583
1569
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1584
|
-
(gpr_atm)t->peer_string);
|
1570
|
+
(gpr_atm)t->peer_string.c_str());
|
1585
1571
|
}
|
1586
1572
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1587
1573
|
}
|
@@ -1593,6 +1579,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1593
1579
|
GPR_ASSERT(!s->pending_byte_stream);
|
1594
1580
|
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1595
1581
|
s->recv_message = op_payload->recv_message.recv_message;
|
1582
|
+
s->call_failed_before_recv_message =
|
1583
|
+
op_payload->recv_message.call_failed_before_recv_message;
|
1596
1584
|
if (s->id != 0) {
|
1597
1585
|
if (!s->read_closed) {
|
1598
1586
|
before = s->frame_storage.length +
|
@@ -1602,8 +1590,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1602
1590
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
1603
1591
|
if (s->id != 0) {
|
1604
1592
|
if (!s->read_closed && s->frame_storage.length == 0) {
|
1605
|
-
size_t after = s->
|
1606
|
-
s->unprocessed_incoming_frames_buffer_cached_length;
|
1593
|
+
size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
|
1607
1594
|
s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
|
1608
1595
|
before - after);
|
1609
1596
|
grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
|
@@ -1663,9 +1650,9 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1663
1650
|
GRPC_ERROR_NONE);
|
1664
1651
|
}
|
1665
1652
|
|
1666
|
-
static void cancel_pings(grpc_chttp2_transport* t,
|
1667
|
-
|
1668
|
-
|
1653
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1654
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1655
|
+
// and maybe they hold resources that need to be freed
|
1669
1656
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1670
1657
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1671
1658
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1691,11 +1678,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1691
1678
|
GRPC_ERROR_NONE);
|
1692
1679
|
}
|
1693
1680
|
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1698
|
-
*/
|
1681
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1682
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1683
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1699
1684
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1700
1685
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1701
1686
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1709,7 +1694,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1709
1694
|
}
|
1710
1695
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1711
1696
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1712
|
-
|
1697
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1713
1698
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1714
1699
|
start_keepalive_ping_locked, t, nullptr),
|
1715
1700
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1732,14 +1717,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1732
1717
|
GRPC_ERROR_NONE);
|
1733
1718
|
}
|
1734
1719
|
|
1735
|
-
void grpc_chttp2_retry_initiate_ping(void* tp,
|
1720
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
|
1736
1721
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1737
1722
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1738
1723
|
retry_initiate_ping_locked, t, nullptr),
|
1739
1724
|
GRPC_ERROR_REF(error));
|
1740
1725
|
}
|
1741
1726
|
|
1742
|
-
static void retry_initiate_ping_locked(void* tp,
|
1727
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
|
1743
1728
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1744
1729
|
t->ping_state.is_delayed_ping_timer_set = false;
|
1745
1730
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1751,9 +1736,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1751
1736
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1752
1737
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1753
1738
|
if (pq->inflight_id != id) {
|
1754
|
-
|
1755
|
-
|
1756
|
-
gpr_free(from);
|
1739
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1740
|
+
t->peer_string.c_str(), id);
|
1757
1741
|
return;
|
1758
1742
|
}
|
1759
1743
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1763,10 +1747,10 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1763
1747
|
}
|
1764
1748
|
}
|
1765
1749
|
|
1766
|
-
static void send_goaway(grpc_chttp2_transport* t,
|
1767
|
-
|
1768
|
-
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string,
|
1769
|
-
|
1750
|
+
static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1751
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1752
|
+
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1753
|
+
grpc_error_std_string(error).c_str());
|
1770
1754
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1771
1755
|
grpc_http2_error_code http_error;
|
1772
1756
|
grpc_slice slice;
|
@@ -1786,7 +1770,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1786
1770
|
grpc_error_set_int(
|
1787
1771
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1788
1772
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1789
|
-
|
1773
|
+
// The transport will be closed after the write is done
|
1790
1774
|
close_transport_locked(
|
1791
1775
|
t, grpc_error_set_int(
|
1792
1776
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1794,13 +1778,22 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1794
1778
|
}
|
1795
1779
|
}
|
1796
1780
|
|
1781
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
1782
|
+
if (!t->is_client) {
|
1783
|
+
t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
|
1784
|
+
t->ping_recv_state.ping_strikes = 0;
|
1785
|
+
}
|
1786
|
+
t->ping_state.pings_before_data_required =
|
1787
|
+
t->ping_policy.max_pings_without_data;
|
1788
|
+
}
|
1789
|
+
|
1797
1790
|
static void perform_transport_op_locked(void* stream_op,
|
1798
|
-
|
1791
|
+
grpc_error_handle /*error_ignored*/) {
|
1799
1792
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
1800
1793
|
grpc_chttp2_transport* t =
|
1801
1794
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
1802
1795
|
|
1803
|
-
if (op->goaway_error) {
|
1796
|
+
if (op->goaway_error != GRPC_ERROR_NONE) {
|
1804
1797
|
send_goaway(t, op->goaway_error);
|
1805
1798
|
}
|
1806
1799
|
|
@@ -1852,9 +1845,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1852
1845
|
GRPC_ERROR_NONE);
|
1853
1846
|
}
|
1854
1847
|
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1848
|
+
//
|
1849
|
+
// INPUT PROCESSING - GENERAL
|
1850
|
+
//
|
1858
1851
|
|
1859
1852
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1860
1853
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1875,7 +1868,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1875
1868
|
|
1876
1869
|
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
1877
1870
|
grpc_chttp2_stream* s) {
|
1878
|
-
|
1871
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1879
1872
|
if (s->recv_message_ready != nullptr) {
|
1880
1873
|
*s->recv_message = nullptr;
|
1881
1874
|
if (s->final_metadata_requested && s->seen_error) {
|
@@ -1952,6 +1945,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
|
1952
1945
|
null_then_sched_closure(&s->recv_message_ready);
|
1953
1946
|
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
|
1954
1947
|
*s->recv_message = nullptr;
|
1948
|
+
if (s->call_failed_before_recv_message != nullptr) {
|
1949
|
+
*s->call_failed_before_recv_message =
|
1950
|
+
(s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
|
1951
|
+
}
|
1955
1952
|
null_then_sched_closure(&s->recv_message_ready);
|
1956
1953
|
}
|
1957
1954
|
GRPC_ERROR_UNREF(error);
|
@@ -1974,8 +1971,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1974
1971
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1975
1972
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1976
1973
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1977
|
-
|
1978
|
-
|
1974
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1975
|
+
// maybe decompress the next 5 bytes in the stream.
|
1979
1976
|
if (s->stream_decompression_method ==
|
1980
1977
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1981
1978
|
grpc_slice_buffer_move_first(
|
@@ -2025,7 +2022,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
2025
2022
|
}
|
2026
2023
|
|
2027
2024
|
static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
2028
|
-
|
2025
|
+
grpc_error_handle error) {
|
2029
2026
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2030
2027
|
grpc_chttp2_stream_map_delete(&t->stream_map, id));
|
2031
2028
|
GPR_DEBUG_ASSERT(s);
|
@@ -2059,6 +2056,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2059
2056
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2060
2057
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2061
2058
|
}
|
2059
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2060
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2062
2061
|
|
2063
2062
|
GRPC_ERROR_UNREF(error);
|
2064
2063
|
|
@@ -2066,7 +2065,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2066
2065
|
}
|
2067
2066
|
|
2068
2067
|
void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2069
|
-
|
2068
|
+
grpc_error_handle due_to_error) {
|
2070
2069
|
if (!t->is_client && !s->sent_trailing_metadata &&
|
2071
2070
|
grpc_error_has_clear_grpc_status(due_to_error)) {
|
2072
2071
|
close_from_api(t, s, due_to_error);
|
@@ -2090,19 +2089,19 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2090
2089
|
}
|
2091
2090
|
|
2092
2091
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2093
|
-
|
2092
|
+
grpc_error_handle error) {
|
2094
2093
|
grpc_status_code status;
|
2095
2094
|
grpc_slice slice;
|
2096
2095
|
grpc_error_get_status(error, s->deadline, &status, &slice, nullptr, nullptr);
|
2097
2096
|
if (status != GRPC_STATUS_OK) {
|
2098
2097
|
s->seen_error = true;
|
2099
2098
|
}
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2099
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2100
|
+
// last chance replacement: we've received trailing metadata,
|
2101
|
+
// but something more important has become available to signal
|
2102
|
+
// to the upper layers - drop what we've got, and then publish
|
2103
|
+
// what we want - which is safe because we haven't told anyone
|
2104
|
+
// about the metadata yet
|
2106
2105
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2107
2106
|
s->recv_trailing_metadata_finished != nullptr) {
|
2108
2107
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
@@ -2127,7 +2126,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2127
2126
|
GRPC_ERROR_UNREF(error);
|
2128
2127
|
}
|
2129
2128
|
|
2130
|
-
static void add_error(
|
2129
|
+
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2130
|
+
size_t* nrefs) {
|
2131
2131
|
if (error == GRPC_ERROR_NONE) return;
|
2132
2132
|
for (size_t i = 0; i < *nrefs; i++) {
|
2133
2133
|
if (error == refs[i]) {
|
@@ -2138,16 +2138,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2138
2138
|
++*nrefs;
|
2139
2139
|
}
|
2140
2140
|
|
2141
|
-
static
|
2142
|
-
|
2143
|
-
|
2141
|
+
static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
2142
|
+
grpc_chttp2_stream* s,
|
2143
|
+
const char* main_error_msg) {
|
2144
|
+
grpc_error_handle refs[3];
|
2144
2145
|
size_t nrefs = 0;
|
2145
2146
|
add_error(s->read_closed_error, refs, &nrefs);
|
2146
2147
|
add_error(s->write_closed_error, refs, &nrefs);
|
2147
2148
|
add_error(extra_error, refs, &nrefs);
|
2148
|
-
|
2149
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2149
2150
|
if (nrefs > 0) {
|
2150
|
-
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2151
|
+
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2151
2152
|
refs, nrefs);
|
2152
2153
|
}
|
2153
2154
|
GRPC_ERROR_UNREF(extra_error);
|
@@ -2155,7 +2156,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2155
2156
|
}
|
2156
2157
|
|
2157
2158
|
static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2158
|
-
grpc_chttp2_write_cb** list,
|
2159
|
+
grpc_chttp2_write_cb** list,
|
2160
|
+
grpc_error_handle error) {
|
2159
2161
|
while (*list) {
|
2160
2162
|
grpc_chttp2_write_cb* cb = *list;
|
2161
2163
|
*list = cb->next;
|
@@ -2168,7 +2170,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2168
2170
|
}
|
2169
2171
|
|
2170
2172
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
2171
|
-
grpc_chttp2_stream* s,
|
2173
|
+
grpc_chttp2_stream* s,
|
2174
|
+
grpc_error_handle error) {
|
2172
2175
|
error =
|
2173
2176
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2174
2177
|
s->send_initial_metadata = nullptr;
|
@@ -2177,6 +2180,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2177
2180
|
"send_initial_metadata_finished");
|
2178
2181
|
|
2179
2182
|
s->send_trailing_metadata = nullptr;
|
2183
|
+
s->sent_trailing_metadata_op = nullptr;
|
2180
2184
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2181
2185
|
GRPC_ERROR_REF(error),
|
2182
2186
|
"send_trailing_metadata_finished");
|
@@ -2191,11 +2195,14 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2191
2195
|
|
2192
2196
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2193
2197
|
grpc_chttp2_stream* s, int close_reads,
|
2194
|
-
int close_writes,
|
2198
|
+
int close_writes, grpc_error_handle error) {
|
2195
2199
|
if (s->read_closed && s->write_closed) {
|
2196
|
-
|
2200
|
+
// already closed, but we should still fake the status if needed.
|
2201
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2202
|
+
if (overall_error != GRPC_ERROR_NONE) {
|
2203
|
+
grpc_chttp2_fake_status(t, s, overall_error);
|
2204
|
+
}
|
2197
2205
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2198
|
-
GRPC_ERROR_UNREF(error);
|
2199
2206
|
return;
|
2200
2207
|
}
|
2201
2208
|
bool closed_read = false;
|
@@ -2212,12 +2219,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2212
2219
|
}
|
2213
2220
|
if (s->read_closed && s->write_closed) {
|
2214
2221
|
became_closed = true;
|
2215
|
-
|
2222
|
+
grpc_error_handle overall_error =
|
2216
2223
|
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2217
2224
|
if (s->id != 0) {
|
2218
2225
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2219
2226
|
} else {
|
2220
|
-
|
2227
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2221
2228
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2222
2229
|
}
|
2223
2230
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2241,7 +2248,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2241
2248
|
}
|
2242
2249
|
|
2243
2250
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2244
|
-
|
2251
|
+
grpc_error_handle error) {
|
2245
2252
|
grpc_slice hdr;
|
2246
2253
|
grpc_slice status_hdr;
|
2247
2254
|
grpc_slice http_status_hdr;
|
@@ -2256,12 +2263,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2256
2263
|
|
2257
2264
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2258
2265
|
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2266
|
+
// Hand roll a header block.
|
2267
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2268
|
+
// elegant solution.
|
2269
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2270
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2271
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2265
2272
|
if (!s->sent_initial_metadata) {
|
2266
2273
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2267
2274
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2390,6 +2397,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2390
2397
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2391
2398
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2392
2399
|
grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
|
2400
|
+
grpc_chttp2_reset_ping_clock(t);
|
2393
2401
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2394
2402
|
&s->stats.outgoing);
|
2395
2403
|
|
@@ -2398,7 +2406,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2398
2406
|
}
|
2399
2407
|
|
2400
2408
|
struct cancel_stream_cb_args {
|
2401
|
-
|
2409
|
+
grpc_error_handle error;
|
2402
2410
|
grpc_chttp2_transport* t;
|
2403
2411
|
};
|
2404
2412
|
|
@@ -2408,7 +2416,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
|
2408
2416
|
grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
|
2409
2417
|
}
|
2410
2418
|
|
2411
|
-
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2419
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2420
|
+
grpc_error_handle error) {
|
2412
2421
|
intptr_t http2_error;
|
2413
2422
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2414
2423
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
@@ -2421,9 +2430,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2421
2430
|
GRPC_ERROR_UNREF(error);
|
2422
2431
|
}
|
2423
2432
|
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2433
|
+
//
|
2434
|
+
// INPUT PROCESSING - PARSING
|
2435
|
+
//
|
2427
2436
|
|
2428
2437
|
template <class F>
|
2429
2438
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2434,7 +2443,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
|
|
2434
2443
|
break;
|
2435
2444
|
case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
|
2436
2445
|
grpc_chttp2_initiate_write(t, reason);
|
2437
|
-
|
2446
|
+
ABSL_FALLTHROUGH_INTENDED;
|
2438
2447
|
case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
|
2439
2448
|
action();
|
2440
2449
|
break;
|
@@ -2462,15 +2471,15 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2462
2471
|
});
|
2463
2472
|
}
|
2464
2473
|
|
2465
|
-
static
|
2474
|
+
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2466
2475
|
grpc_http_parser parser;
|
2467
2476
|
size_t i = 0;
|
2468
|
-
|
2477
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2469
2478
|
grpc_http_response response;
|
2470
2479
|
|
2471
2480
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2472
2481
|
|
2473
|
-
|
2482
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
2474
2483
|
for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
|
2475
2484
|
parse_error =
|
2476
2485
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
@@ -2491,40 +2500,35 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2491
2500
|
return error;
|
2492
2501
|
}
|
2493
2502
|
|
2494
|
-
static void read_action(void* tp,
|
2503
|
+
static void read_action(void* tp, grpc_error_handle error) {
|
2495
2504
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2496
2505
|
t->combiner->Run(
|
2497
2506
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2498
2507
|
GRPC_ERROR_REF(error));
|
2499
2508
|
}
|
2500
2509
|
|
2501
|
-
static void read_action_locked(void* tp,
|
2510
|
+
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2502
2511
|
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2503
2512
|
|
2504
2513
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2505
2514
|
|
2506
2515
|
GRPC_ERROR_REF(error);
|
2507
2516
|
|
2508
|
-
|
2517
|
+
grpc_error_handle err = error;
|
2509
2518
|
if (err != GRPC_ERROR_NONE) {
|
2510
2519
|
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2511
2520
|
"Endpoint read failed", &err, 1),
|
2512
2521
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2513
2522
|
t->write_state);
|
2514
2523
|
}
|
2515
|
-
GPR_SWAP(
|
2524
|
+
GPR_SWAP(grpc_error_handle, err, error);
|
2516
2525
|
GRPC_ERROR_UNREF(err);
|
2517
2526
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2518
2527
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2519
2528
|
size_t i = 0;
|
2520
|
-
|
2521
|
-
|
2529
|
+
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2530
|
+
GRPC_ERROR_NONE};
|
2522
2531
|
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
2532
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2529
2533
|
}
|
2530
2534
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2558,8 +2562,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2558
2562
|
"Transport closed", &t->closed_with_error, 1);
|
2559
2563
|
}
|
2560
2564
|
if (error != GRPC_ERROR_NONE) {
|
2561
|
-
|
2562
|
-
|
2565
|
+
// If a goaway frame was received, this might be the reason why the read
|
2566
|
+
// failed. Add this info to the error
|
2563
2567
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2564
2568
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2565
2569
|
}
|
@@ -2568,7 +2572,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2568
2572
|
t->endpoint_reading = 0;
|
2569
2573
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2570
2574
|
keep_reading = true;
|
2571
|
-
|
2575
|
+
// Since we have read a byte, reset the keepalive timer
|
2572
2576
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2573
2577
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2574
2578
|
}
|
@@ -2603,7 +2607,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2603
2607
|
|
2604
2608
|
// t is reffed prior to calling the first time, and once the callback chain
|
2605
2609
|
// that kicks off finishes, it's unreffed
|
2606
|
-
|
2610
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2607
2611
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2608
2612
|
send_ping_locked(
|
2609
2613
|
t,
|
@@ -2611,25 +2615,26 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2611
2615
|
grpc_schedule_on_exec_ctx),
|
2612
2616
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2613
2617
|
grpc_schedule_on_exec_ctx));
|
2618
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2614
2619
|
}
|
2615
2620
|
|
2616
|
-
static void start_bdp_ping(void* tp,
|
2621
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
2617
2622
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2618
2623
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2619
2624
|
start_bdp_ping_locked, t, nullptr),
|
2620
2625
|
GRPC_ERROR_REF(error));
|
2621
2626
|
}
|
2622
2627
|
|
2623
|
-
static void start_bdp_ping_locked(void* tp,
|
2628
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2624
2629
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2625
2630
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2626
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2627
|
-
|
2631
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2632
|
+
grpc_error_std_string(error).c_str());
|
2628
2633
|
}
|
2629
2634
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2630
2635
|
return;
|
2631
2636
|
}
|
2632
|
-
|
2637
|
+
// Reset the keepalive ping timer
|
2633
2638
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2634
2639
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2635
2640
|
}
|
@@ -2637,26 +2642,26 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2637
2642
|
t->bdp_ping_started = true;
|
2638
2643
|
}
|
2639
2644
|
|
2640
|
-
static void finish_bdp_ping(void* tp,
|
2645
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
2641
2646
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2642
2647
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2643
2648
|
finish_bdp_ping_locked, t, nullptr),
|
2644
2649
|
GRPC_ERROR_REF(error));
|
2645
2650
|
}
|
2646
2651
|
|
2647
|
-
static void finish_bdp_ping_locked(void* tp,
|
2652
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2648
2653
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2649
2654
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2650
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2651
|
-
|
2655
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2656
|
+
grpc_error_std_string(error).c_str());
|
2652
2657
|
}
|
2653
2658
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2654
2659
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2655
2660
|
return;
|
2656
2661
|
}
|
2657
2662
|
if (!t->bdp_ping_started) {
|
2658
|
-
|
2659
|
-
|
2663
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2664
|
+
// finish_bdp_ping_locked to be run later.
|
2660
2665
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2661
2666
|
finish_bdp_ping_locked, t, nullptr),
|
2662
2667
|
GRPC_ERROR_REF(error));
|
@@ -2674,7 +2679,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2674
2679
|
&t->next_bdp_ping_timer_expired_locked);
|
2675
2680
|
}
|
2676
2681
|
|
2677
|
-
static void next_bdp_ping_timer_expired(void* tp,
|
2682
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
|
2678
2683
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2679
2684
|
t->combiner->Run(
|
2680
2685
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
@@ -2682,7 +2687,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
|
|
2682
2687
|
GRPC_ERROR_REF(error));
|
2683
2688
|
}
|
2684
2689
|
|
2685
|
-
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2690
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2691
|
+
grpc_error_handle error) {
|
2686
2692
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2687
2693
|
GPR_ASSERT(t->have_next_bdp_ping_timer);
|
2688
2694
|
t->have_next_bdp_ping_timer = false;
|
@@ -2690,7 +2696,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2690
2696
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2691
2697
|
return;
|
2692
2698
|
}
|
2693
|
-
|
2699
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2700
|
+
// Block the bdp ping till we receive more data.
|
2701
|
+
t->bdp_ping_blocked = true;
|
2702
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2703
|
+
} else {
|
2704
|
+
schedule_bdp_ping_locked(t);
|
2705
|
+
}
|
2694
2706
|
}
|
2695
2707
|
|
2696
2708
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2739,14 +2751,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2739
2751
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2740
2752
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2741
2753
|
&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
2754
|
} else if (0 ==
|
2751
2755
|
strcmp(
|
2752
2756
|
args->args[i].key,
|
@@ -2760,14 +2764,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2760
2764
|
}
|
2761
2765
|
}
|
2762
2766
|
|
2763
|
-
static void init_keepalive_ping(void* arg,
|
2767
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error) {
|
2764
2768
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2765
2769
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2766
2770
|
init_keepalive_ping_locked, t, nullptr),
|
2767
2771
|
GRPC_ERROR_REF(error));
|
2768
2772
|
}
|
2769
2773
|
|
2770
|
-
static void init_keepalive_ping_locked(void* arg,
|
2774
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2771
2775
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2772
2776
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2773
2777
|
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2789,7 +2793,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2789
2793
|
&t->init_keepalive_ping_locked);
|
2790
2794
|
}
|
2791
2795
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2792
|
-
|
2796
|
+
// The keepalive ping timer may be cancelled by bdp
|
2793
2797
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2794
2798
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2795
2799
|
grpc_schedule_on_exec_ctx);
|
@@ -2800,14 +2804,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2800
2804
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2801
2805
|
}
|
2802
2806
|
|
2803
|
-
static void start_keepalive_ping(void* arg,
|
2807
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
2804
2808
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2805
2809
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2806
2810
|
start_keepalive_ping_locked, t, nullptr),
|
2807
2811
|
GRPC_ERROR_REF(error));
|
2808
2812
|
}
|
2809
2813
|
|
2810
|
-
static void start_keepalive_ping_locked(void* arg,
|
2814
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2811
2815
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2812
2816
|
if (error != GRPC_ERROR_NONE) {
|
2813
2817
|
return;
|
@@ -2817,7 +2821,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2817
2821
|
}
|
2818
2822
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2819
2823
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2820
|
-
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
|
2824
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2821
2825
|
}
|
2822
2826
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2823
2827
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2828,24 +2832,24 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2828
2832
|
t->keepalive_ping_started = true;
|
2829
2833
|
}
|
2830
2834
|
|
2831
|
-
static void finish_keepalive_ping(void* arg,
|
2835
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
2832
2836
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2833
2837
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2834
2838
|
finish_keepalive_ping_locked, t, nullptr),
|
2835
2839
|
GRPC_ERROR_REF(error));
|
2836
2840
|
}
|
2837
2841
|
|
2838
|
-
static void finish_keepalive_ping_locked(void* arg,
|
2842
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2839
2843
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2840
2844
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2841
2845
|
if (error == GRPC_ERROR_NONE) {
|
2842
2846
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2843
2847
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2844
|
-
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
|
2848
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2845
2849
|
}
|
2846
2850
|
if (!t->keepalive_ping_started) {
|
2847
|
-
|
2848
|
-
|
2851
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2852
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2849
2853
|
t->combiner->Run(
|
2850
2854
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2851
2855
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2866,7 +2870,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2866
2870
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2867
2871
|
}
|
2868
2872
|
|
2869
|
-
static void keepalive_watchdog_fired(void* arg,
|
2873
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
|
2870
2874
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2871
2875
|
t->combiner->Run(
|
2872
2876
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2874,12 +2878,13 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
|
|
2874
2878
|
GRPC_ERROR_REF(error));
|
2875
2879
|
}
|
2876
2880
|
|
2877
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
2881
|
+
static void keepalive_watchdog_fired_locked(void* arg,
|
2882
|
+
grpc_error_handle error) {
|
2878
2883
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2879
2884
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2880
2885
|
if (error == GRPC_ERROR_NONE) {
|
2881
|
-
gpr_log(
|
2882
|
-
t->peer_string);
|
2886
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2887
|
+
t->peer_string.c_str());
|
2883
2888
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2884
2889
|
close_transport_locked(
|
2885
2890
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2888,8 +2893,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2888
2893
|
GRPC_STATUS_UNAVAILABLE));
|
2889
2894
|
}
|
2890
2895
|
} else {
|
2891
|
-
|
2892
|
-
|
2896
|
+
// The watchdog timer should have been cancelled by
|
2897
|
+
// finish_keepalive_ping_locked.
|
2893
2898
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2894
2899
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2895
2900
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2898,21 +2903,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2898
2903
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2899
2904
|
}
|
2900
2905
|
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2906
|
+
//
|
2907
|
+
// CALLBACK LOOP
|
2908
|
+
//
|
2904
2909
|
|
2905
2910
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2906
2911
|
grpc_connectivity_state state,
|
2912
|
+
const absl::Status& status,
|
2907
2913
|
const char* reason) {
|
2908
2914
|
GRPC_CHTTP2_IF_TRACING(
|
2909
2915
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2910
|
-
t->state_tracker.SetState(state, reason);
|
2916
|
+
t->state_tracker.SetState(state, status, reason);
|
2911
2917
|
}
|
2912
2918
|
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2919
|
+
//
|
2920
|
+
// POLLSET STUFF
|
2921
|
+
//
|
2916
2922
|
|
2917
2923
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2918
2924
|
grpc_pollset* pollset) {
|
@@ -2926,11 +2932,11 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2926
2932
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2927
2933
|
}
|
2928
2934
|
|
2929
|
-
|
2930
|
-
|
2931
|
-
|
2935
|
+
//
|
2936
|
+
// BYTE STREAM
|
2937
|
+
//
|
2932
2938
|
|
2933
|
-
static void reset_byte_stream(void* arg,
|
2939
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error) {
|
2934
2940
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
2935
2941
|
s->pending_byte_stream = false;
|
2936
2942
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2961,8 +2967,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
|
|
2961
2967
|
stream->byte_stream_error = GRPC_ERROR_NONE;
|
2962
2968
|
}
|
2963
2969
|
|
2964
|
-
void Chttp2IncomingByteStream::OrphanLocked(
|
2965
|
-
|
2970
|
+
void Chttp2IncomingByteStream::OrphanLocked(
|
2971
|
+
void* arg, grpc_error_handle /*error_ignored*/) {
|
2966
2972
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2967
2973
|
grpc_chttp2_stream* s = bs->stream_;
|
2968
2974
|
grpc_chttp2_transport* t = s->t;
|
@@ -2981,7 +2987,7 @@ void Chttp2IncomingByteStream::Orphan() {
|
|
2981
2987
|
}
|
2982
2988
|
|
2983
2989
|
void Chttp2IncomingByteStream::NextLocked(void* arg,
|
2984
|
-
|
2990
|
+
grpc_error_handle /*error_ignored*/) {
|
2985
2991
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2986
2992
|
grpc_chttp2_transport* t = bs->transport_;
|
2987
2993
|
grpc_chttp2_stream* s = bs->stream_;
|
@@ -3016,7 +3022,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3016
3022
|
s->data_parser.parsing_frame = nullptr;
|
3017
3023
|
}
|
3018
3024
|
} else {
|
3019
|
-
|
3025
|
+
// Should never reach here.
|
3020
3026
|
GPR_ASSERT(false);
|
3021
3027
|
}
|
3022
3028
|
} else {
|
@@ -3051,9 +3057,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
|
|
3051
3057
|
}
|
3052
3058
|
}
|
3053
3059
|
|
3054
|
-
|
3060
|
+
grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3055
3061
|
GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
|
3056
|
-
|
3062
|
+
grpc_error_handle error;
|
3057
3063
|
if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
|
3058
3064
|
if (!stream_->unprocessed_incoming_frames_decompressed &&
|
3059
3065
|
stream_->stream_decompression_method !=
|
@@ -3096,7 +3102,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
|
3096
3102
|
return GRPC_ERROR_NONE;
|
3097
3103
|
}
|
3098
3104
|
|
3099
|
-
void Chttp2IncomingByteStream::PublishError(
|
3105
|
+
void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
|
3100
3106
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
3101
3107
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
|
3102
3108
|
GRPC_ERROR_REF(error));
|
@@ -3106,10 +3112,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
|
|
3106
3112
|
grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
|
3107
3113
|
}
|
3108
3114
|
|
3109
|
-
|
3110
|
-
|
3115
|
+
grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
3116
|
+
grpc_slice* slice_out) {
|
3111
3117
|
if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
|
3112
|
-
|
3118
|
+
grpc_error_handle error =
|
3113
3119
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
|
3114
3120
|
transport_->combiner->Run(&stream_->reset_byte_stream,
|
3115
3121
|
GRPC_ERROR_REF(error));
|
@@ -3124,8 +3130,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
|
3124
3130
|
}
|
3125
3131
|
}
|
3126
3132
|
|
3127
|
-
|
3128
|
-
|
3133
|
+
grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
|
3134
|
+
bool reset_on_error) {
|
3129
3135
|
if (error == GRPC_ERROR_NONE) {
|
3130
3136
|
if (remaining_bytes_ != 0) {
|
3131
3137
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
|
@@ -3139,15 +3145,15 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
|
|
3139
3145
|
return error;
|
3140
3146
|
}
|
3141
3147
|
|
3142
|
-
void Chttp2IncomingByteStream::Shutdown(
|
3148
|
+
void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
|
3143
3149
|
GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
|
3144
3150
|
}
|
3145
3151
|
|
3146
3152
|
} // namespace grpc_core
|
3147
3153
|
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3154
|
+
//
|
3155
|
+
// RESOURCE QUOTAS
|
3156
|
+
//
|
3151
3157
|
|
3152
3158
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3153
3159
|
if (!t->benign_reclaimer_registered) {
|
@@ -3171,22 +3177,22 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
3171
3177
|
}
|
3172
3178
|
}
|
3173
3179
|
|
3174
|
-
static void benign_reclaimer(void* arg,
|
3180
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error) {
|
3175
3181
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3176
3182
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3177
3183
|
benign_reclaimer_locked, t, nullptr),
|
3178
3184
|
GRPC_ERROR_REF(error));
|
3179
3185
|
}
|
3180
3186
|
|
3181
|
-
static void benign_reclaimer_locked(void* arg,
|
3187
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3182
3188
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3183
3189
|
if (error == GRPC_ERROR_NONE &&
|
3184
3190
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3185
|
-
|
3186
|
-
|
3191
|
+
// Channel with no active streams: send a goaway to try and make it
|
3192
|
+
// disconnect cleanly
|
3187
3193
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3188
3194
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3189
|
-
t->peer_string);
|
3195
|
+
t->peer_string.c_str());
|
3190
3196
|
}
|
3191
3197
|
send_goaway(t,
|
3192
3198
|
grpc_error_set_int(
|
@@ -3197,7 +3203,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3197
3203
|
gpr_log(GPR_INFO,
|
3198
3204
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3199
3205
|
" streams",
|
3200
|
-
t->peer_string
|
3206
|
+
t->peer_string.c_str(),
|
3207
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3201
3208
|
}
|
3202
3209
|
t->benign_reclaimer_registered = false;
|
3203
3210
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -3207,14 +3214,14 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3207
3214
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3208
3215
|
}
|
3209
3216
|
|
3210
|
-
static void destructive_reclaimer(void* arg,
|
3217
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error) {
|
3211
3218
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3212
3219
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3213
3220
|
destructive_reclaimer_locked, t, nullptr),
|
3214
3221
|
GRPC_ERROR_REF(error));
|
3215
3222
|
}
|
3216
3223
|
|
3217
|
-
static void destructive_reclaimer_locked(void* arg,
|
3224
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3218
3225
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3219
3226
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3220
3227
|
t->destructive_reclaimer_registered = false;
|
@@ -3222,8 +3229,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3222
3229
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3223
3230
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3224
3231
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3225
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3226
|
-
s->id);
|
3232
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3233
|
+
t->peer_string.c_str(), s->id);
|
3227
3234
|
}
|
3228
3235
|
grpc_chttp2_cancel_stream(
|
3229
3236
|
t, s,
|
@@ -3231,10 +3238,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3231
3238
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3232
3239
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3233
3240
|
if (n > 1) {
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
-
|
3241
|
+
// Since we cancel one stream per destructive reclamation, if
|
3242
|
+
// there are more streams left, we can immediately post a new
|
3243
|
+
// reclaimer in case the resource quota needs to free more
|
3244
|
+
// memory
|
3238
3245
|
post_destructive_reclaimer(t);
|
3239
3246
|
}
|
3240
3247
|
}
|
@@ -3245,9 +3252,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3245
3252
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3246
3253
|
}
|
3247
3254
|
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3255
|
+
//
|
3256
|
+
// MONITORING
|
3257
|
+
//
|
3251
3258
|
|
3252
3259
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3253
3260
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3284,6 +3291,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3284
3291
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3285
3292
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3286
3293
|
return "APPLICATION_PING";
|
3294
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3295
|
+
return "BDP_PING";
|
3287
3296
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3288
3297
|
return "KEEPALIVE_PING";
|
3289
3298
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|
@@ -3330,7 +3339,7 @@ grpc_transport* grpc_create_chttp2_transport(
|
|
3330
3339
|
|
3331
3340
|
void grpc_chttp2_transport_start_reading(
|
3332
3341
|
grpc_transport* transport, grpc_slice_buffer* read_buffer,
|
3333
|
-
grpc_closure* notify_on_receive_settings) {
|
3342
|
+
grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
|
3334
3343
|
grpc_chttp2_transport* t =
|
3335
3344
|
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
3336
3345
|
GRPC_CHTTP2_REF_TRANSPORT(
|
@@ -3340,6 +3349,7 @@ void grpc_chttp2_transport_start_reading(
|
|
3340
3349
|
gpr_free(read_buffer);
|
3341
3350
|
}
|
3342
3351
|
t->notify_on_receive_settings = notify_on_receive_settings;
|
3352
|
+
t->notify_on_close = notify_on_close;
|
3343
3353
|
t->combiner->Run(
|
3344
3354
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
3345
3355
|
GRPC_ERROR_NONE);
|