grpc 1.30.0 → 1.46.3
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 +1497 -18376
- data/etc/roots.pem +592 -899
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +43 -0
- data/include/grpc/event_engine/event_engine.h +399 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +90 -25
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +563 -315
- data/include/grpc/grpc_security_constants.h +20 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +6 -0
- data/include/grpc/impl/codegen/byte_buffer.h +3 -1
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +84 -53
- data/include/grpc/impl/codegen/log.h +2 -2
- data/include/grpc/impl/codegen/port_platform.h +100 -97
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +6 -1
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +6 -0
- data/include/grpc/module.modulemap +14 -14
- data/include/grpc/slice.h +1 -12
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +4 -4
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +9 -9
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +33 -35
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +2284 -3096
- data/src/core/ext/filters/client_channel/client_channel.h +566 -63
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -5
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
- data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
- data/src/core/ext/filters/client_channel/config_selector.h +145 -0
- data/src/core/ext/filters/client_channel/connector.h +20 -20
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +189 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -143
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +16 -24
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +129 -572
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -158
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +60 -62
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +113 -117
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +52 -38
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +16 -9
- 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 +12 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +519 -388
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -75
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +307 -211
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +804 -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/rls/rls.cc +2542 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +84 -84
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -49
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +138 -96
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +443 -156
- 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 +872 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +710 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1215 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +23 -29
- data/src/core/ext/filters/client_channel/lb_policy.h +178 -142
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +13 -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/binder/binder_resolver.cc +133 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +304 -339
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -42
- 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_posix.cc +31 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +58 -72
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +524 -230
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +44 -26
- 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_windows.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +98 -247
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +60 -62
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +10 -7
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +400 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +71 -63
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +983 -101
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +57 -314
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +40 -62
- data/src/core/ext/filters/client_channel/retry_filter.cc +2655 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -60
- data/src/core/ext/filters/client_channel/retry_throttle.h +15 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +157 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +284 -397
- data/src/core/ext/filters/client_channel/subchannel.h +116 -161
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +120 -114
- data/src/core/ext/filters/deadline/deadline_filter.h +9 -12
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +258 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +84 -539
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +55 -69
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +103 -75
- 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 +89 -295
- data/src/core/ext/filters/message_size/message_size_filter.cc +101 -130
- data/src/core/ext/filters/message_size/message_size_filter.h +17 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +335 -46
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1005 -355
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +807 -778
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -5
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +89 -67
- data/src/core/ext/transport/chttp2/transport/flow_control.h +52 -38
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -30
- data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +55 -22
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +814 -1196
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +79 -78
- data/src/core/ext/transport/chttp2/transport/parsing.cc +177 -327
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +145 -190
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +262 -237
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +59 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +270 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +1240 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +95 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +382 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +543 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2961 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +545 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +145 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +636 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +116 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +419 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1783 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +163 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +778 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +100 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +269 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +1277 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +220 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1219 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +122 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +322 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1686 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +144 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +178 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +348 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +623 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +568 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +165 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +886 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +186 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +941 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +154 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +209 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1008 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +101 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +443 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1051 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5956 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +255 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +167 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +463 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2606 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +38 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +175 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +880 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +308 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +191 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1035 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +38 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +70 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +165 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +755 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +68 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +210 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +100 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +80 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +234 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +67 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +218 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +294 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +107 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +429 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +107 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +419 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +39 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +196 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +97 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1236 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +283 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +1338 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
- data/src/core/ext/upb-generated/google/api/http.upb.h +241 -100
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +48 -18
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2368 -969
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +46 -16
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +31 -11
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +203 -101
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +46 -16
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +313 -112
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +63 -26
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +777 -337
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +99 -34
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +74 -27
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +460 -184
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +217 -43
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +108 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +66 -16
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +99 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
- data/src/core/ext/upb-generated/validate/validate.upb.h +3024 -1084
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -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 +38 -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 +222 -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 +393 -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 +98 -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 +557 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -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 +138 -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/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -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 +54 -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 +267 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -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 +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -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 +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -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 +298 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -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 +55 -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 +57 -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 +70 -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 +49 -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 +99 -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 +128 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -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 +48 -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 +197 -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 +190 -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 +88 -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 +63 -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/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -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 +134 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.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 +896 -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 +77 -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/tap/v3/common.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -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 +92 -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 +117 -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/rbac/v3/rbac.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -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 +551 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +210 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -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 +254 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -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 +128 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -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/status/v3/csds.upbdefs.c +153 -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/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -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/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -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 +54 -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 +52 -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 +51 -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 +70 -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 +65 -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 +58 -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 +75 -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 +78 -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 +85 -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/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -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 +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.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/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -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 +329 -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 +35 -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 +32 -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 +54 -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 +35 -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 +45 -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 +37 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -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 +47 -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 +34 -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 +46 -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 +39 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -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 +56 -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 +39 -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/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -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 +61 -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 +46 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.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 +95 -0
- data/src/core/ext/xds/certificate_provider_store.h +121 -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/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +730 -0
- data/src/core/ext/xds/xds_api.h +191 -0
- data/src/core/ext/xds/xds_bootstrap.cc +570 -0
- data/src/core/ext/xds/xds_bootstrap.h +143 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +407 -0
- data/src/core/ext/xds/xds_certificate_provider.h +159 -0
- data/src/core/ext/xds/xds_channel_args.h +32 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
- data/src/core/ext/xds/xds_client.cc +2512 -0
- data/src/core/ext/xds/xds_client.h +348 -0
- data/src/core/ext/xds/xds_client_stats.cc +160 -0
- data/src/core/ext/xds/xds_client_stats.h +241 -0
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +371 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
- data/src/core/ext/xds/xds_http_filters.cc +122 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/xds/xds_resource_type.cc +33 -0
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +1122 -0
- data/src/core/ext/xds/xds_route_config.h +218 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1314 -0
- data/src/core/lib/address_utils/parse_address.cc +340 -0
- data/src/core/lib/address_utils/parse_address.h +82 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +409 -0
- data/src/core/lib/address_utils/sockaddr_utils.h +95 -0
- data/src/core/lib/avl/avl.h +452 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +88 -0
- data/src/core/lib/channel/channel_args.cc +182 -24
- data/src/core/lib/channel/channel_args.h +214 -2
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
- data/src/core/lib/channel/channel_stack.cc +37 -15
- data/src/core/lib/channel/channel_stack.h +57 -16
- data/src/core/lib/channel/channel_stack_builder.cc +24 -283
- data/src/core/lib/channel/channel_stack_builder.h +118 -157
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +14 -18
- data/src/core/lib/channel/channel_trace.h +3 -2
- data/src/core/lib/channel/channelz.cc +191 -137
- data/src/core/lib/channel/channelz.h +76 -53
- data/src/core/lib/channel/channelz_registry.cc +37 -19
- data/src/core/lib/channel/channelz_registry.h +4 -2
- data/src/core/lib/channel/connected_channel.cc +14 -10
- data/src/core/lib/channel/connected_channel.h +2 -2
- data/src/core/lib/channel/context.h +14 -0
- data/src/core/lib/channel/handshaker.cc +14 -54
- data/src/core/lib/channel/handshaker.h +10 -28
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/promise_based_filter.cc +1002 -0
- data/src/core/lib/channel/promise_based_filter.h +437 -0
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +11 -2
- data/src/core/lib/compression/compression.cc +22 -110
- data/src/core/lib/compression/compression_internal.cc +139 -202
- data/src/core/lib/compression/compression_internal.h +67 -71
- data/src/core/lib/compression/message_compress.cc +13 -13
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +104 -0
- data/src/core/lib/config/core_configuration.h +196 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +4 -3
- data/src/core/lib/debug/stats_data.cc +17 -19
- data/src/core/lib/debug/stats_data.h +6 -8
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +4 -3
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
- data/src/core/lib/event_engine/event_engine.cc +52 -0
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -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 +7 -5
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +61 -19
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +30 -13
- data/src/core/lib/gpr/log_posix.cc +25 -10
- 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 +35 -33
- data/src/core/lib/gpr/string.h +11 -10
- data/src/core/lib/gpr/sync.cc +6 -6
- data/src/core/lib/gpr/sync_abseil.cc +10 -12
- data/src/core/lib/gpr/sync_posix.cc +6 -11
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +17 -15
- 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/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +126 -36
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +97 -31
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +207 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/gprpp/construct_destruct.h +39 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +330 -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 +16 -14
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +18 -16
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +12 -10
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +9 -9
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +11 -15
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +125 -86
- data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- 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 +435 -0
- data/src/core/lib/gprpp/status_helper.h +181 -0
- data/src/core/lib/gprpp/sync.h +106 -43
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +47 -42
- data/src/core/lib/gprpp/thd_windows.cc +7 -12
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- 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/format_request.cc +29 -25
- data/src/core/lib/http/format_request.h +8 -6
- data/src/core/lib/http/httpcli.cc +304 -211
- data/src/core/lib/http/httpcli.h +183 -86
- data/src/core/lib/http/httpcli_security_connector.cc +75 -85
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +145 -54
- data/src/core/lib/http/parser.h +20 -6
- data/src/core/lib/iomgr/buffer_list.cc +16 -17
- data/src/core/lib/iomgr/buffer_list.h +23 -25
- data/src/core/lib/iomgr/call_combiner.cc +60 -25
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +7 -6
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +33 -12
- data/src/core/lib/iomgr/combiner.cc +48 -37
- data/src/core/lib/iomgr/combiner.h +3 -2
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +6 -6
- data/src/core/lib/iomgr/endpoint.h +10 -9
- data/src/core/lib/iomgr/endpoint_cfstream.cc +56 -60
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +19 -17
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +287 -111
- data/src/core/lib/iomgr/error.h +278 -114
- data/src/core/lib/iomgr/error_cfstream.cc +17 -10
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +7 -2
- data/src/core/lib/iomgr/ev_apple.cc +19 -15
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +64 -64
- data/src/core/lib/iomgr/ev_poll_posix.cc +82 -79
- data/src/core/lib/iomgr/ev_posix.cc +21 -22
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
- data/src/core/lib/iomgr/event_engine/closure.h +42 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -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 +47 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
- data/src/core/lib/iomgr/exec_ctx.cc +30 -99
- data/src/core/lib/iomgr/exec_ctx.h +42 -63
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
- data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
- data/src/core/lib/iomgr/executor/threadpool.h +8 -7
- data/src/core/lib/iomgr/executor.cc +37 -45
- data/src/core/lib/iomgr/executor.h +4 -4
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +10 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +6 -4
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
- data/src/core/lib/iomgr/iomgr_internal.h +6 -5
- data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
- data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
- data/src/core/lib/iomgr/load_file.cc +6 -6
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +38 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +6 -6
- data/src/core/lib/iomgr/port.h +9 -37
- data/src/core/lib/iomgr/python_util.h +6 -5
- data/src/core/lib/iomgr/resolve_address.cc +10 -24
- data/src/core/lib/iomgr/resolve_address.h +48 -43
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +91 -83
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +106 -89
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +2 -1
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +20 -6
- data/src/core/lib/iomgr/socket_mutator.h +27 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +124 -99
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +4 -4
- data/src/core/lib/iomgr/tcp_client.h +5 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -37
- data/src/core/lib/iomgr/tcp_client_posix.cc +51 -67
- data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +21 -21
- data/src/core/lib/iomgr/tcp_posix.cc +256 -209
- data/src/core/lib/iomgr/tcp_posix.h +17 -12
- data/src/core/lib/iomgr/tcp_server.cc +9 -10
- data/src/core/lib/iomgr/tcp_server.h +21 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +98 -86
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +36 -32
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +28 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +14 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +38 -41
- data/src/core/lib/iomgr/tcp_windows.cc +56 -57
- data/src/core/lib/iomgr/tcp_windows.h +3 -3
- data/src/core/lib/iomgr/timer.cc +3 -2
- data/src/core/lib/iomgr/timer.h +17 -8
- data/src/core/lib/iomgr/timer_generic.cc +129 -139
- data/src/core/lib/iomgr/timer_generic.h +1 -0
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +19 -18
- data/src/core/lib/iomgr/unix_sockets_posix.cc +33 -41
- data/src/core/lib/iomgr/unix_sockets_posix.h +9 -6
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +15 -11
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +33 -5
- data/src/core/lib/json/json.h +13 -3
- data/src/core/lib/json/json_reader.cc +112 -70
- data/src/core/lib/json/json_util.cc +126 -0
- data/src/core/lib/json/json_util.h +154 -0
- data/src/core/lib/json/json_writer.cc +2 -4
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +50 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/promise/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/lib/resolver/resolver.cc +79 -0
- data/src/core/lib/resolver/resolver.h +135 -0
- data/src/core/lib/resolver/resolver_factory.h +76 -0
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/lib/resolver/server_address.cc +170 -0
- data/src/core/lib/resolver/server_address.h +144 -0
- data/src/core/lib/resource_quota/api.cc +83 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/resource_quota/arena.cc +107 -0
- data/src/core/lib/resource_quota/arena.h +142 -0
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +66 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
- data/src/core/lib/security/authorization/evaluate_args.h +92 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +171 -0
- data/src/core/lib/security/context/security_context.cc +19 -13
- data/src/core/lib/security/context/security_context.h +12 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -6
- data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +18 -17
- data/src/core/lib/security/credentials/credentials.h +92 -90
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +419 -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 +544 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +230 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +61 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +26 -29
- data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +169 -82
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +63 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +10 -12
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +61 -53
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +31 -18
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -62
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +216 -251
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +67 -38
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -158
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -22
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +26 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -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 +195 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +62 -184
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +98 -294
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +40 -21
- data/src/core/lib/security/credentials/tls/tls_credentials.h +9 -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 +237 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +100 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +23 -19
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +37 -43
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +111 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +92 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
- 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 +35 -27
- data/src/core/lib/security/security_connector/security_connector.cc +14 -18
- data/src/core/lib/security/security_connector/security_connector.h +38 -27
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +43 -32
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +119 -65
- data/src/core/lib/security/security_connector/ssl_utils.h +40 -40
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +646 -423
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +187 -104
- data/src/core/lib/security/transport/auth_filters.h +37 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +102 -358
- data/src/core/lib/security/transport/secure_endpoint.cc +214 -149
- data/src/core/lib/security/transport/secure_endpoint.h +2 -1
- data/src/core/lib/security/transport/security_handshaker.cc +172 -94
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +58 -47
- data/src/core/lib/security/transport/tsi_error.cc +5 -6
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +10 -13
- data/src/core/lib/security/util/json_util.h +2 -1
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/lib/service_config/service_config_call_data.h +72 -0
- data/src/core/lib/service_config/service_config_impl.cc +230 -0
- data/src/core/lib/service_config/service_config_impl.h +125 -0
- data/src/core/lib/service_config/service_config_parser.cc +93 -0
- data/src/core/lib/service_config/service_config_parser.h +106 -0
- data/src/core/lib/slice/percent_encoding.cc +84 -97
- data/src/core/lib/slice/percent_encoding.h +23 -28
- data/src/core/lib/slice/slice.cc +111 -181
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +12 -8
- data/src/core/lib/slice/slice_internal.h +17 -277
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +46 -0
- data/src/core/lib/slice/slice_refcount_base.h +61 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +1171 -1248
- data/src/core/lib/surface/call.h +16 -24
- data/src/core/lib/surface/call_details.cc +10 -10
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +96 -135
- data/src/core/lib/surface/channel.h +31 -22
- data/src/core/lib/surface/channel_init.cc +22 -76
- data/src/core/lib/surface/channel_init.h +44 -40
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +154 -162
- data/src/core/lib/surface/completion_queue.h +18 -17
- data/src/core/lib/surface/completion_queue_factory.cc +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +121 -83
- data/src/core/lib/surface/init.h +10 -4
- data/src/core/lib/surface/lame_client.cc +80 -72
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +1142 -1373
- data/src/core/lib/surface/server.h +467 -71
- data/src/core/lib/surface/validate_metadata.cc +55 -24
- data/src/core/lib/surface/validate_metadata.h +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- data/src/core/lib/transport/bdp_estimator.h +4 -3
- data/src/core/lib/transport/byte_stream.cc +11 -5
- data/src/core/lib/transport/byte_stream.h +12 -11
- data/src/core/lib/transport/connectivity_state.cc +27 -19
- data/src/core/lib/transport/connectivity_state.h +28 -14
- data/src/core/lib/transport/error_utils.cc +73 -21
- data/src/core/lib/transport/error_utils.h +17 -4
- data/src/core/lib/transport/metadata_batch.h +1355 -152
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +401 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +208 -71
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +18 -36
- data/src/core/lib/transport/transport.h +129 -15
- data/src/core/lib/transport/transport_impl.h +14 -0
- data/src/core/lib/transport/transport_op_string.cc +13 -35
- data/src/core/lib/uri/uri_parser.cc +305 -254
- data/src/core/lib/uri/uri_parser.h +92 -38
- data/src/core/plugin_registry/grpc_plugin_registry.cc +76 -68
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/crypt/gsec.h +5 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +77 -68
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +103 -64
- 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/alts_tsi_utils.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +5 -5
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- 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 +6 -6
- data/src/core/tsi/fake_transport_security.cc +32 -12
- data/src/core/tsi/local_transport_security.cc +46 -87
- data/src/core/tsi/local_transport_security.h +6 -10
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +9 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +422 -129
- data/src/core/tsi/ssl_transport_security.h +68 -16
- data/src/core/tsi/transport_security.cc +25 -11
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_grpc.h +1 -0
- data/src/core/tsi/transport_security_interface.h +34 -1
- data/src/ruby/bin/math_services_pb.rb +5 -5
- data/src/ruby/ext/grpc/extconf.rb +34 -11
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +8 -7
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
- data/src/ruby/ext/grpc/rb_channel.c +24 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
- data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +76 -48
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +130 -88
- data/src/ruby/ext/grpc/rb_server.c +26 -10
- data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
- data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- 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/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- 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_pb.rb +1 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- 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/client_server_spec.rb +1 -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/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1774 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +169 -55
- 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 +150 -49
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -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/fast_type_id.h +48 -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 +36 -31
- 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 +13 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +97 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
- 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 +17 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +7 -7
- 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 +527 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +141 -134
- 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 +163 -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 +190 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +281 -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 +469 -429
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +67 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +2034 -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 +1959 -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 +383 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +138 -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 +87 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -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_riscv-inl.inc +234 -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 +364 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +191 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +38 -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 +1574 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -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 +142 -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 +347 -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 +69 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +1096 -0
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +16 -37
- data/third_party/abseil-cpp/absl/numeric/int128.h +159 -85
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- 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/profiling/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -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 +444 -0
- data/third_party/abseil-cpp/absl/status/status.h +882 -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 +103 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +770 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +2047 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1521 -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 +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +620 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -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 +771 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- 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 +158 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +30 -22
- 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 +37 -13
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +183 -153
- 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 +82 -77
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +51 -27
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
- 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 +133 -5
- data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
- 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.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +143 -55
- data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +109 -81
- 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 +67 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +101 -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 -11
- 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 +97 -22
- 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_fixed.cc +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_if.h +2 -1
- 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 +219 -150
- 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/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +107 -75
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- 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 +51 -38
- 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/address_sorting_posix.c +1 -0
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +775 -721
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +72 -59
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +70 -57
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +6 -6
- 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 +3 -42
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +25 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- 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 +156 -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 +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
- 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/conf/conf.c +14 -3
- 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_extra/params.c +272 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/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 +161 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- 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 +28 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +26 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -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 +105 -95
- 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 +56 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
- 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/gcm_nohw.c +1 -1
- 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 +30 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
- 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 +80 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
- 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 +238 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +75 -24
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +132 -54
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
- 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/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.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/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- 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_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +5 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
- 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 -180
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
- 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 +24 -47
- 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 +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -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 +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +82 -113
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +99 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
- 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 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
- 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 +52 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
- 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 +75 -15
- 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 +244 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -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 +48 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
- 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 +86 -44
- 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 +1801 -673
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -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 +42 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- 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 +66 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +108 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -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 +128 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +570 -144
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +53 -38
- 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 +2041 -829
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
- 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 +1084 -0
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +108 -53
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +317 -221
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +187 -36
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +554 -173
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
- 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 +10 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +167 -110
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -138
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +16 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +316 -211
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +398 -145
- 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/cares/cares/include/ares.h +742 -0
- data/third_party/cares/cares/include/ares_dns.h +112 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/include/ares_version.h +24 -0
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
- data/third_party/cares/cares/src/lib/ares_data.c +240 -0
- data/third_party/cares/cares/src/lib/ares_data.h +74 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
- data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
- data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
- data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/src/lib/ares_private.h +423 -0
- data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
- data/third_party/cares/cares/src/lib/ares_query.c +180 -0
- data/third_party/cares/cares/src/lib/ares_search.c +321 -0
- data/third_party/cares/cares/src/lib/ares_send.c +131 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
- data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- 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 +1261 -0
- data/third_party/re2/re2/dfa.cc +2118 -0
- data/third_party/re2/re2/filtered_re2.cc +137 -0
- data/third_party/re2/re2/filtered_re2.h +114 -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 +2483 -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 +711 -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 +1166 -0
- data/third_party/re2/re2/prog.h +455 -0
- data/third_party/re2/re2/re2.cc +1331 -0
- data/third_party/re2/re2/re2.h +1017 -0
- data/third_party/re2/re2/regexp.cc +987 -0
- data/third_party/re2/re2/regexp.h +665 -0
- data/third_party/re2/re2/set.cc +176 -0
- data/third_party/re2/re2/set.h +85 -0
- data/third_party/re2/re2/simplify.cc +665 -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/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/decode.c +997 -481
- data/third_party/upb/upb/decode.h +79 -6
- data/third_party/upb/upb/decode_fast.c +1055 -0
- data/third_party/upb/upb/decode_fast.h +153 -0
- data/third_party/upb/upb/decode_internal.h +211 -0
- data/third_party/upb/upb/def.c +3261 -0
- data/third_party/upb/upb/def.h +409 -0
- data/third_party/upb/upb/def.hpp +438 -0
- data/third_party/upb/upb/encode.c +459 -233
- data/third_party/upb/upb/encode.h +56 -6
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +387 -70
- data/third_party/upb/upb/msg.h +90 -45
- data/third_party/upb/upb/msg_internal.h +831 -0
- data/third_party/upb/upb/port_def.inc +195 -84
- data/third_party/upb/upb/port_undef.inc +48 -7
- data/third_party/upb/upb/reflection.c +480 -0
- data/third_party/upb/upb/reflection.h +220 -0
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +441 -428
- data/third_party/upb/upb/table_internal.h +385 -0
- data/third_party/upb/upb/text_encode.c +472 -0
- data/third_party/upb/upb/text_encode.h +64 -0
- data/third_party/upb/upb/upb.c +255 -154
- data/third_party/upb/upb/upb.h +235 -226
- data/third_party/upb/upb/upb.hpp +115 -0
- data/third_party/upb/upb/upb_internal.h +68 -0
- data/third_party/xxhash/xxhash.h +5580 -0
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +1175 -359
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -121
- 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.cc +0 -238
- 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_ev_driver_libuv.cc +0 -177
- 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/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolver.cc +0 -85
- data/src/core/ext/filters/client_channel/resolver.h +0 -144
- data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- 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/server_address.cc +0 -48
- data/src/core/ext/filters/client_channel/server_address.h +0 -90
- data/src/core/ext/filters/client_channel/service_config.cc +0 -221
- data/src/core/ext/filters/client_channel/service_config.h +0 -123
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
- data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
- data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
- 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_args.h +0 -26
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2367
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -115
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +0 -211
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -556
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -225
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -75
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -246
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- 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.c +0 -28
- 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.c +0 -34
- 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.c +0 -31
- 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.c +0 -31
- 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.c +0 -30
- 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.c +0 -28
- 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.c +0 -24
- 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/http.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -36
- 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.c +0 -29
- 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/ext/upb-generated/gogoproto/gogo.upb.h +0 -30
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -144
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -61
- data/src/core/lib/compression/compression_args.cc +0 -134
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -80
- data/src/core/lib/compression/stream_compression.h +0 -116
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -92
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -52
- data/src/core/lib/gpr/tls_pthread.cc +0 -30
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gprpp/arena.cc +0 -103
- data/src/core/lib/gprpp/arena.h +0 -120
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1656
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -105
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- 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/iomgr/pollset_custom.cc +0 -106
- data/src/core/lib/iomgr/pollset_custom.h +0 -35
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/pollset_uv.cc +0 -93
- data/src/core/lib/iomgr/pollset_uv.h +0 -32
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -173
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
- data/src/core/lib/iomgr/resource_quota.cc +0 -1013
- data/src/core/lib/iomgr/resource_quota.h +0 -177
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/sockaddr_utils.cc +0 -293
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -79
- data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -163
- data/src/core/lib/iomgr/tcp_custom.cc +0 -370
- data/src/core/lib/iomgr/tcp_custom.h +0 -84
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -485
- data/src/core/lib/iomgr/tcp_uv.cc +0 -419
- data/src/core/lib/iomgr/timer_custom.cc +0 -95
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -101
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
- 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_intern.cc +0 -375
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/src/core/lib/surface/init_secure.cc +0 -81
- data/src/core/lib/transport/metadata.cc +0 -679
- data/src/core/lib/transport/metadata.h +0 -446
- data/src/core/lib/transport/metadata_batch.cc +0 -392
- data/src/core/lib/transport/static_metadata.cc +0 -1230
- data/src/core/lib/transport/static_metadata.h +0 -597
- data/src/core/lib/transport/status_metadata.cc +0 -61
- data/src/core/lib/transport/status_metadata.h +0 -48
- 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/asn1/asn1_locl.h +0 -104
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
- data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- 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/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3870
- data/third_party/cares/cares/ares.h +0 -670
- data/third_party/cares/cares/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/ares__get_hostent.c +0 -261
- data/third_party/cares/cares/ares_create_query.c +0 -206
- data/third_party/cares/cares/ares_data.c +0 -222
- data/third_party/cares/cares/ares_data.h +0 -72
- data/third_party/cares/cares/ares_dns.h +0 -103
- data/third_party/cares/cares/ares_expand_name.c +0 -209
- data/third_party/cares/cares/ares_expand_string.c +0 -70
- data/third_party/cares/cares/ares_free_hostent.c +0 -41
- data/third_party/cares/cares/ares_getenv.c +0 -30
- data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
- data/third_party/cares/cares/ares_gethostbyname.c +0 -529
- data/third_party/cares/cares/ares_getnameinfo.c +0 -453
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_init.c +0 -2615
- data/third_party/cares/cares/ares_ipv6.h +0 -78
- data/third_party/cares/cares/ares_library_init.c +0 -195
- data/third_party/cares/cares/ares_library_init.h +0 -43
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
- data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
- data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
- data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
- data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
- data/third_party/cares/cares/ares_private.h +0 -382
- data/third_party/cares/cares/ares_process.c +0 -1473
- data/third_party/cares/cares/ares_query.c +0 -186
- data/third_party/cares/cares/ares_search.c +0 -323
- data/third_party/cares/cares/ares_send.c +0 -137
- data/third_party/cares/cares/ares_setup.h +0 -217
- data/third_party/cares/cares/ares_strsplit.c +0 -174
- data/third_party/cares/cares/ares_version.h +0 -24
- data/third_party/cares/cares/inet_net_pton.c +0 -450
- data/third_party/cares/cares/inet_ntop.c +0 -207
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
- data/third_party/upb/upb/table.int.h +0 -507
@@ -1,30 +1,23 @@
|
|
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
|
|
23
|
-
#include <grpc/slice_buffer.h>
|
24
|
-
#include <grpc/support/alloc.h>
|
25
|
-
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/port_platform.h>
|
27
|
-
#include <grpc/support/string_util.h>
|
28
21
|
#include <inttypes.h>
|
29
22
|
#include <limits.h>
|
30
23
|
#include <math.h>
|
@@ -32,12 +25,18 @@
|
|
32
25
|
#include <string.h>
|
33
26
|
|
34
27
|
#include "absl/strings/str_format.h"
|
28
|
+
|
29
|
+
#include <grpc/slice_buffer.h>
|
30
|
+
#include <grpc/status.h>
|
31
|
+
#include <grpc/support/alloc.h>
|
32
|
+
#include <grpc/support/log.h>
|
33
|
+
#include <grpc/support/string_util.h>
|
34
|
+
|
35
35
|
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
36
36
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
37
37
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
38
38
|
#include "src/core/ext/transport/chttp2/transport/varint.h"
|
39
39
|
#include "src/core/lib/channel/channel_args.h"
|
40
|
-
#include "src/core/lib/compression/stream_compression.h"
|
41
40
|
#include "src/core/lib/debug/stats.h"
|
42
41
|
#include "src/core/lib/gpr/env.h"
|
43
42
|
#include "src/core/lib/gpr/string.h"
|
@@ -47,17 +46,24 @@
|
|
47
46
|
#include "src/core/lib/iomgr/iomgr.h"
|
48
47
|
#include "src/core/lib/iomgr/timer.h"
|
49
48
|
#include "src/core/lib/profiling/timers.h"
|
49
|
+
#include "src/core/lib/resource_quota/api.h"
|
50
|
+
#include "src/core/lib/resource_quota/trace.h"
|
50
51
|
#include "src/core/lib/slice/slice_internal.h"
|
51
52
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
52
53
|
#include "src/core/lib/transport/error_utils.h"
|
53
54
|
#include "src/core/lib/transport/http2_errors.h"
|
54
|
-
#include "src/core/lib/transport/static_metadata.h"
|
55
55
|
#include "src/core/lib/transport/status_conversion.h"
|
56
56
|
#include "src/core/lib/transport/timeout_encoding.h"
|
57
57
|
#include "src/core/lib/transport/transport.h"
|
58
58
|
#include "src/core/lib/transport/transport_impl.h"
|
59
59
|
#include "src/core/lib/uri/uri_parser.h"
|
60
60
|
|
61
|
+
GPR_GLOBAL_CONFIG_DEFINE_BOOL(
|
62
|
+
grpc_experimental_disable_flow_control, false,
|
63
|
+
"If set, flow control will be effectively disabled. Max out all values and "
|
64
|
+
"assume the remote peer does the same. Thus we can ignore any flow control "
|
65
|
+
"bookkeeping, error checking, and decision making");
|
66
|
+
|
61
67
|
#define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
|
62
68
|
#define MAX_WINDOW 0x7fffffffu
|
63
69
|
#define MAX_WRITE_BUFFER_SIZE (64 * 1024 * 1024)
|
@@ -70,7 +76,6 @@
|
|
70
76
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
71
77
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
72
78
|
|
73
|
-
#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
74
79
|
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
75
80
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
76
81
|
#define DEFAULT_MAX_PING_STRIKES 2
|
@@ -90,8 +95,6 @@ static bool g_default_client_keepalive_permit_without_calls =
|
|
90
95
|
static bool g_default_server_keepalive_permit_without_calls =
|
91
96
|
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
|
92
97
|
|
93
|
-
static int g_default_min_sent_ping_interval_without_data_ms =
|
94
|
-
DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
|
95
98
|
static int g_default_min_recv_ping_interval_without_data_ms =
|
96
99
|
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
|
97
100
|
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
@@ -103,76 +106,98 @@ grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
|
103
106
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
104
107
|
"chttp2_refcount");
|
105
108
|
|
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,
|
109
|
+
// forward declarations of various callbacks that we'll build closures around
|
110
|
+
static void write_action_begin_locked(void* t, grpc_error_handle error);
|
111
|
+
static void write_action(void* t, grpc_error_handle error);
|
112
|
+
static void write_action_end(void* t, grpc_error_handle error);
|
113
|
+
static void write_action_end_locked(void* t, grpc_error_handle error);
|
111
114
|
|
112
|
-
static void read_action(void* t,
|
113
|
-
static void read_action_locked(void* t,
|
115
|
+
static void read_action(void* t, grpc_error_handle error);
|
116
|
+
static void read_action_locked(void* t, grpc_error_handle error);
|
114
117
|
static void continue_read_action_locked(grpc_chttp2_transport* t);
|
115
118
|
|
116
|
-
static void complete_fetch(void* gs,
|
117
|
-
static void complete_fetch_locked(void* gs,
|
118
|
-
|
119
|
+
static void complete_fetch(void* gs, grpc_error_handle error);
|
120
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error);
|
121
|
+
// Set a transport level setting, and push it to our peer
|
119
122
|
static void queue_setting_update(grpc_chttp2_transport* t,
|
120
123
|
grpc_chttp2_setting_id id, uint32_t value);
|
121
124
|
|
122
125
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
123
|
-
|
126
|
+
grpc_error_handle error);
|
124
127
|
|
125
|
-
|
128
|
+
// Start new streams that have been created if we can
|
126
129
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
127
130
|
|
128
131
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
129
132
|
grpc_connectivity_state state,
|
133
|
+
const absl::Status& status,
|
130
134
|
const char* reason);
|
131
135
|
|
132
|
-
static void
|
133
|
-
static void
|
134
|
-
static void benign_reclaimer_locked(void* t, grpc_error* error);
|
135
|
-
static void destructive_reclaimer_locked(void* t, grpc_error* error);
|
136
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
|
137
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
|
136
138
|
|
137
139
|
static void post_benign_reclaimer(grpc_chttp2_transport* t);
|
138
140
|
static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
139
141
|
|
140
|
-
static void close_transport_locked(grpc_chttp2_transport* t,
|
141
|
-
|
142
|
+
static void close_transport_locked(grpc_chttp2_transport* t,
|
143
|
+
grpc_error_handle error);
|
144
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
145
|
+
grpc_error_handle error);
|
146
|
+
|
147
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error);
|
148
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error);
|
149
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
|
150
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
|
151
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
|
152
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
153
|
+
grpc_error_handle error);
|
154
|
+
|
155
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
|
156
|
+
static void send_ping_locked(grpc_chttp2_transport* t,
|
157
|
+
grpc_closure* on_initiate, grpc_closure* on_ack);
|
158
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
|
142
159
|
|
143
|
-
|
144
|
-
static void
|
145
|
-
static void
|
146
|
-
static void
|
147
|
-
static void
|
148
|
-
static void
|
149
|
-
static void
|
160
|
+
// keepalive-relevant functions
|
161
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error);
|
162
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
163
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error);
|
164
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error);
|
165
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
166
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
167
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
|
168
|
+
static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
|
150
169
|
|
151
|
-
static void
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
170
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error);
|
171
|
+
|
172
|
+
namespace grpc_core {
|
173
|
+
|
174
|
+
namespace {
|
175
|
+
TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
|
176
|
+
TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
|
177
|
+
nullptr;
|
178
|
+
bool test_only_disable_transient_failure_state_notification = false;
|
179
|
+
} // namespace
|
180
|
+
|
181
|
+
void TestOnlySetGlobalHttp2TransportInitCallback(
|
182
|
+
TestOnlyGlobalHttp2TransportInitCallback callback) {
|
183
|
+
test_only_init_callback = callback;
|
184
|
+
}
|
185
|
+
|
186
|
+
void TestOnlySetGlobalHttp2TransportDestructCallback(
|
187
|
+
TestOnlyGlobalHttp2TransportDestructCallback callback) {
|
188
|
+
test_only_destruct_callback = callback;
|
189
|
+
}
|
190
|
+
|
191
|
+
void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
|
192
|
+
bool disable) {
|
193
|
+
test_only_disable_transient_failure_state_notification = disable;
|
194
|
+
}
|
195
|
+
|
196
|
+
} // namespace grpc_core
|
197
|
+
|
198
|
+
//
|
199
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
200
|
+
//
|
176
201
|
|
177
202
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
203
|
size_t i;
|
@@ -186,9 +211,8 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
186
211
|
grpc_slice_buffer_destroy_internal(&qbuf);
|
187
212
|
|
188
213
|
grpc_slice_buffer_destroy_internal(&outbuf);
|
189
|
-
grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
|
190
214
|
|
191
|
-
|
215
|
+
grpc_error_handle error =
|
192
216
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
|
193
217
|
// ContextList::Execute follows semantics of a callback function and does not
|
194
218
|
// take a ref on error
|
@@ -197,7 +221,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
197
221
|
cl = nullptr;
|
198
222
|
|
199
223
|
grpc_slice_buffer_destroy_internal(&read_buffer);
|
200
|
-
grpc_chttp2_hpack_parser_destroy(&hpack_parser);
|
201
224
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
202
225
|
|
203
226
|
for (i = 0; i < STREAM_LIST_COUNT; i++) {
|
@@ -226,12 +249,14 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
249
|
|
227
250
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
251
|
gpr_free(ping_acks);
|
229
|
-
|
252
|
+
if (grpc_core::test_only_destruct_callback != nullptr) {
|
253
|
+
grpc_core::test_only_destruct_callback();
|
254
|
+
}
|
230
255
|
}
|
231
256
|
|
232
257
|
static const grpc_transport_vtable* get_vtable(void);
|
233
258
|
|
234
|
-
|
259
|
+
// Returns whether bdp is enabled
|
235
260
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
261
|
const grpc_channel_args* channel_args,
|
237
262
|
bool is_client) {
|
@@ -261,8 +286,7 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
261
286
|
const int value =
|
262
287
|
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
263
288
|
if (value >= 0) {
|
264
|
-
|
265
|
-
&t->hpack_compressor, static_cast<uint32_t>(value));
|
289
|
+
t->hpack_compressor.SetMaxUsableSize(value);
|
266
290
|
}
|
267
291
|
} else if (0 == strcmp(channel_args->args[i].key,
|
268
292
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
@@ -273,24 +297,15 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
297
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
298
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
299
|
&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
300
|
} else if (0 ==
|
286
301
|
strcmp(channel_args->args[i].key,
|
287
302
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
288
303
|
t->ping_policy.min_recv_ping_interval_without_data =
|
289
|
-
grpc_channel_arg_get_integer(
|
304
|
+
grpc_core::Duration::Milliseconds(grpc_channel_arg_get_integer(
|
290
305
|
&channel_args->args[i],
|
291
306
|
grpc_integer_options{
|
292
307
|
g_default_min_recv_ping_interval_without_data_ms, 0,
|
293
|
-
INT_MAX});
|
308
|
+
INT_MAX}));
|
294
309
|
} else if (0 == strcmp(channel_args->args[i].key,
|
295
310
|
GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
|
296
311
|
t->write_buffer_size = static_cast<uint32_t>(grpc_channel_arg_get_integer(
|
@@ -306,7 +321,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
306
321
|
? g_default_client_keepalive_time_ms
|
307
322
|
: g_default_server_keepalive_time_ms,
|
308
323
|
1, INT_MAX});
|
309
|
-
t->keepalive_time = value == INT_MAX
|
324
|
+
t->keepalive_time = value == INT_MAX
|
325
|
+
? grpc_core::Duration::Infinity()
|
326
|
+
: grpc_core::Duration::Milliseconds(value);
|
310
327
|
} else if (0 == strcmp(channel_args->args[i].key,
|
311
328
|
GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
|
312
329
|
const int value = grpc_channel_arg_get_integer(
|
@@ -315,7 +332,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
315
332
|
? g_default_client_keepalive_timeout_ms
|
316
333
|
: g_default_server_keepalive_timeout_ms,
|
317
334
|
0, INT_MAX});
|
318
|
-
t->keepalive_timeout = value == INT_MAX
|
335
|
+
t->keepalive_timeout = value == INT_MAX
|
336
|
+
? grpc_core::Duration::Infinity()
|
337
|
+
: grpc_core::Duration::Milliseconds(value);
|
319
338
|
} else if (0 == strcmp(channel_args->args[i].key,
|
320
339
|
GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
|
321
340
|
t->keepalive_permit_without_calls = static_cast<uint32_t>(
|
@@ -378,12 +397,12 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
397
|
}
|
379
398
|
}
|
380
399
|
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
400
|
t->channelz_socket =
|
384
401
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
386
|
-
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string)
|
402
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
403
|
+
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
|
404
|
+
grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
|
405
|
+
channel_args));
|
387
406
|
}
|
388
407
|
return enable_bdp;
|
389
408
|
}
|
@@ -391,20 +410,24 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
391
410
|
static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
392
411
|
if (t->is_client) {
|
393
412
|
t->keepalive_time = g_default_client_keepalive_time_ms == INT_MAX
|
394
|
-
?
|
395
|
-
:
|
413
|
+
? grpc_core::Duration::Infinity()
|
414
|
+
: grpc_core::Duration::Milliseconds(
|
415
|
+
g_default_client_keepalive_time_ms);
|
396
416
|
t->keepalive_timeout = g_default_client_keepalive_timeout_ms == INT_MAX
|
397
|
-
?
|
398
|
-
:
|
417
|
+
? grpc_core::Duration::Infinity()
|
418
|
+
: grpc_core::Duration::Milliseconds(
|
419
|
+
g_default_client_keepalive_timeout_ms);
|
399
420
|
t->keepalive_permit_without_calls =
|
400
421
|
g_default_client_keepalive_permit_without_calls;
|
401
422
|
} else {
|
402
423
|
t->keepalive_time = g_default_server_keepalive_time_ms == INT_MAX
|
403
|
-
?
|
404
|
-
:
|
424
|
+
? grpc_core::Duration::Infinity()
|
425
|
+
: grpc_core::Duration::Milliseconds(
|
426
|
+
g_default_server_keepalive_time_ms);
|
405
427
|
t->keepalive_timeout = g_default_server_keepalive_timeout_ms == INT_MAX
|
406
|
-
?
|
407
|
-
:
|
428
|
+
? grpc_core::Duration::Infinity()
|
429
|
+
: grpc_core::Duration::Milliseconds(
|
430
|
+
g_default_server_keepalive_timeout_ms);
|
408
431
|
t->keepalive_permit_without_calls =
|
409
432
|
g_default_server_keepalive_permit_without_calls;
|
410
433
|
}
|
@@ -412,15 +435,14 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
435
|
|
413
436
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
437
|
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
438
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
439
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
|
-
|
440
|
+
grpc_core::Duration::Milliseconds(
|
441
|
+
g_default_min_recv_ping_interval_without_data_ms);
|
420
442
|
}
|
421
443
|
|
422
444
|
static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
423
|
-
if (t->keepalive_time !=
|
445
|
+
if (t->keepalive_time != grpc_core::Duration::Infinity()) {
|
424
446
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
|
425
447
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
426
448
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
@@ -429,19 +451,25 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
451
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
452
|
&t->init_keepalive_ping_locked);
|
431
453
|
} else {
|
432
|
-
|
433
|
-
|
454
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
455
|
+
// inflight keeaplive timers
|
434
456
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
457
|
}
|
436
458
|
}
|
437
459
|
|
438
460
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
|
-
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client
|
440
|
-
|
441
|
-
|
461
|
+
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client)
|
462
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
463
|
+
? "chttp2_refcount"
|
464
|
+
: nullptr),
|
442
465
|
ep(ep),
|
443
466
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
|
-
|
467
|
+
memory_owner(grpc_core::ResourceQuotaFromChannelArgs(channel_args)
|
468
|
+
->memory_quota()
|
469
|
+
->CreateMemoryOwner(absl::StrCat(
|
470
|
+
grpc_endpoint_get_peer(ep), ":client_transport"))),
|
471
|
+
self_reservation(
|
472
|
+
memory_owner.MakeReservation(sizeof(grpc_chttp2_transport))),
|
445
473
|
combiner(grpc_combiner_create()),
|
446
474
|
state_tracker(is_client ? "client_transport" : "server_transport",
|
447
475
|
GRPC_CHANNEL_READY),
|
@@ -451,11 +479,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
479
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
480
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
481
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
482
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
483
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
484
|
+
// large enough that the exponential growth should happen nicely when it's
|
485
|
+
// needed.
|
486
|
+
// TODO(ctiller): tune this
|
459
487
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
488
|
|
461
489
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -464,9 +492,8 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
464
492
|
grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
|
465
493
|
GRPC_CHTTP2_CLIENT_CONNECT_STRING));
|
466
494
|
}
|
467
|
-
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
495
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
496
|
+
// copy in initial settings to all setting sets
|
470
497
|
size_t i;
|
471
498
|
int j;
|
472
499
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -474,10 +501,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
474
501
|
settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
|
475
502
|
}
|
476
503
|
}
|
477
|
-
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
504
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
505
|
|
480
|
-
|
506
|
+
// configure http2 the way we like it
|
481
507
|
if (is_client) {
|
482
508
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
509
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -495,7 +521,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
495
521
|
enable_bdp = read_channel_args(this, channel_args, is_client);
|
496
522
|
}
|
497
523
|
|
498
|
-
|
524
|
+
static const bool kEnableFlowControl =
|
525
|
+
!GPR_GLOBAL_CONFIG_GET(grpc_experimental_disable_flow_control);
|
526
|
+
if (kEnableFlowControl) {
|
499
527
|
flow_control.Init<grpc_core::chttp2::TransportFlowControl>(this,
|
500
528
|
enable_bdp);
|
501
529
|
} else {
|
@@ -503,34 +531,37 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
531
|
enable_bdp = false;
|
504
532
|
}
|
505
533
|
|
506
|
-
|
534
|
+
// No pings allowed before receiving a header or data frame.
|
507
535
|
ping_state.pings_before_data_required = 0;
|
508
536
|
ping_state.is_delayed_ping_timer_set = false;
|
509
|
-
ping_state.last_ping_sent_time =
|
537
|
+
ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
|
510
538
|
|
511
|
-
ping_recv_state.last_ping_recv_time =
|
539
|
+
ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
|
512
540
|
ping_recv_state.ping_strikes = 0;
|
513
541
|
|
514
542
|
init_keepalive_pings_if_enabled(this);
|
515
543
|
|
516
544
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
545
|
+
bdp_ping_blocked = true;
|
519
546
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
547
|
nullptr);
|
521
548
|
}
|
522
549
|
|
523
550
|
grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
|
524
551
|
post_benign_reclaimer(this);
|
552
|
+
if (grpc_core::test_only_init_callback != nullptr) {
|
553
|
+
grpc_core::test_only_init_callback();
|
554
|
+
}
|
525
555
|
}
|
526
556
|
|
527
|
-
static void destroy_transport_locked(void* tp,
|
557
|
+
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
528
558
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
529
559
|
t->destroying = 1;
|
530
560
|
close_transport_locked(
|
531
561
|
t, grpc_error_set_int(
|
532
562
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
|
533
563
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
|
564
|
+
t->memory_owner.Reset();
|
534
565
|
// Must be the last line.
|
535
566
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
|
536
567
|
}
|
@@ -542,7 +573,7 @@ static void destroy_transport(grpc_transport* gt) {
|
|
542
573
|
}
|
543
574
|
|
544
575
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
545
|
-
|
576
|
+
grpc_error_handle error) {
|
546
577
|
end_all_the_calls(t, GRPC_ERROR_REF(error));
|
547
578
|
cancel_pings(t, GRPC_ERROR_REF(error));
|
548
579
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
@@ -551,7 +582,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
551
582
|
GRPC_STATUS_UNAVAILABLE);
|
552
583
|
}
|
553
584
|
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
554
|
-
if (t->close_transport_on_writes_finished ==
|
585
|
+
if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
|
555
586
|
t->close_transport_on_writes_finished =
|
556
587
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
557
588
|
"Delayed close due to in-progress write");
|
@@ -562,7 +593,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
593
|
}
|
563
594
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
595
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
596
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
597
|
+
"close_transport");
|
566
598
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
599
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
600
|
}
|
@@ -579,11 +611,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
611
|
break;
|
580
612
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
613
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
614
|
+
// keepalive timers are not set in these two states
|
583
615
|
break;
|
584
616
|
}
|
585
617
|
|
586
|
-
|
618
|
+
// flush writable stream list to avoid dangling references
|
587
619
|
grpc_chttp2_stream* s;
|
588
620
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
621
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,9 +625,14 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
625
|
}
|
594
626
|
if (t->notify_on_receive_settings != nullptr) {
|
595
627
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
628
|
+
GRPC_ERROR_REF(error));
|
597
629
|
t->notify_on_receive_settings = nullptr;
|
598
630
|
}
|
631
|
+
if (t->notify_on_close != nullptr) {
|
632
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
|
633
|
+
GRPC_ERROR_REF(error));
|
634
|
+
t->notify_on_close = nullptr;
|
635
|
+
}
|
599
636
|
GRPC_ERROR_UNREF(error);
|
600
637
|
}
|
601
638
|
|
@@ -616,9 +653,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
653
|
#endif
|
617
654
|
|
618
655
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
656
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
657
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
658
|
+
// actively reading
|
622
659
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
660
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
661
|
}
|
@@ -630,10 +667,10 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
630
667
|
: t(t),
|
631
668
|
refcount(refcount),
|
632
669
|
reffer(this),
|
633
|
-
|
634
|
-
|
670
|
+
initial_metadata_buffer(arena),
|
671
|
+
trailing_metadata_buffer(arena) {
|
635
672
|
if (server_data) {
|
636
|
-
id = static_cast<uint32_t>((
|
673
|
+
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
637
674
|
*t->accepting_stream = this;
|
638
675
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
639
676
|
post_destructive_reclaimer(t);
|
@@ -669,16 +706,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
669
706
|
|
670
707
|
grpc_slice_buffer_destroy_internal(&unprocessed_incoming_frames_buffer);
|
671
708
|
grpc_slice_buffer_destroy_internal(&frame_storage);
|
672
|
-
if (stream_compression_method != GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS) {
|
673
|
-
grpc_slice_buffer_destroy_internal(&compressed_data_buffer);
|
674
|
-
}
|
675
|
-
if (stream_decompression_method !=
|
676
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
677
|
-
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
|
-
}
|
679
|
-
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
709
|
|
683
710
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
711
|
if (GPR_UNLIKELY(included[i])) {
|
@@ -698,13 +725,7 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
698
725
|
GRPC_ERROR_UNREF(read_closed_error);
|
699
726
|
GRPC_ERROR_UNREF(write_closed_error);
|
700
727
|
GRPC_ERROR_UNREF(byte_stream_error);
|
701
|
-
|
702
728
|
flow_control.Destroy();
|
703
|
-
|
704
|
-
if (t->resource_user != nullptr) {
|
705
|
-
grpc_resource_user_free(t->resource_user, GRPC_RESOURCE_QUOTA_CALL_SIZE);
|
706
|
-
}
|
707
|
-
|
708
729
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
|
709
730
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
|
710
731
|
}
|
@@ -718,7 +739,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
|
718
739
|
return 0;
|
719
740
|
}
|
720
741
|
|
721
|
-
static void destroy_stream_locked(void* sp,
|
742
|
+
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
722
743
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
723
744
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
724
745
|
s->~grpc_chttp2_stream();
|
@@ -729,18 +750,6 @@ static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
|
|
729
750
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
730
751
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
731
752
|
grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
|
732
|
-
if (s->stream_compression_method !=
|
733
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS &&
|
734
|
-
s->stream_compression_ctx != nullptr) {
|
735
|
-
grpc_stream_compression_context_destroy(s->stream_compression_ctx);
|
736
|
-
s->stream_compression_ctx = nullptr;
|
737
|
-
}
|
738
|
-
if (s->stream_decompression_method !=
|
739
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS &&
|
740
|
-
s->stream_decompression_ctx != nullptr) {
|
741
|
-
grpc_stream_compression_context_destroy(s->stream_decompression_ctx);
|
742
|
-
s->stream_decompression_ctx = nullptr;
|
743
|
-
}
|
744
753
|
|
745
754
|
s->destroy_stream_arg = then_schedule_closure;
|
746
755
|
t->combiner->Run(
|
@@ -753,30 +762,18 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
753
762
|
if (t->accept_stream_cb == nullptr) {
|
754
763
|
return nullptr;
|
755
764
|
}
|
756
|
-
// Don't accept the stream if memory quota doesn't allow. Note that we should
|
757
|
-
// simply refuse the stream here instead of canceling the stream after it's
|
758
|
-
// accepted since the latter will create the call which costs much memory.
|
759
|
-
if (t->resource_user != nullptr &&
|
760
|
-
!grpc_resource_user_safe_alloc(t->resource_user,
|
761
|
-
GRPC_RESOURCE_QUOTA_CALL_SIZE)) {
|
762
|
-
gpr_log(GPR_ERROR, "Memory exhausted, rejecting the stream.");
|
763
|
-
grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_REFUSED_STREAM,
|
764
|
-
nullptr);
|
765
|
-
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
|
766
|
-
return nullptr;
|
767
|
-
}
|
768
765
|
grpc_chttp2_stream* accepting = nullptr;
|
769
766
|
GPR_ASSERT(t->accepting_stream == nullptr);
|
770
767
|
t->accepting_stream = &accepting;
|
771
768
|
t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
|
772
|
-
|
769
|
+
reinterpret_cast<void*>(id));
|
773
770
|
t->accepting_stream = nullptr;
|
774
771
|
return accepting;
|
775
772
|
}
|
776
773
|
|
777
|
-
|
778
|
-
|
779
|
-
|
774
|
+
//
|
775
|
+
// OUTPUT PROCESSING
|
776
|
+
//
|
780
777
|
|
781
778
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
779
|
switch (st) {
|
@@ -794,20 +791,20 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
791
|
grpc_chttp2_write_state st, const char* reason) {
|
795
792
|
GRPC_CHTTP2_IF_TRACING(
|
796
793
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
794
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
795
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
796
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
797
|
+
// If the state is being reset back to idle, it means a write was just
|
798
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
799
|
+
//
|
800
|
+
// This is also our chance to close the transport if the transport was marked
|
801
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
802
|
+
// from peer while we had some pending writes)
|
806
803
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
804
|
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 =
|
805
|
+
if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
|
806
|
+
grpc_error_handle err = t->close_transport_on_writes_finished;
|
807
|
+
t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
|
811
808
|
close_transport_locked(t, err);
|
812
809
|
}
|
813
810
|
}
|
@@ -855,6 +852,9 @@ static void inc_initiate_write_reason(
|
|
855
852
|
case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
|
856
853
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS();
|
857
854
|
break;
|
855
|
+
case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
|
856
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK();
|
857
|
+
break;
|
858
858
|
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
|
859
859
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING();
|
860
860
|
break;
|
@@ -864,6 +864,9 @@ static void inc_initiate_write_reason(
|
|
864
864
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
865
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
866
|
break;
|
867
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
868
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
869
|
+
break;
|
867
870
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
871
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
872
|
break;
|
@@ -889,22 +892,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
892
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
893
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
894
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
895
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
896
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
897
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
898
|
+
// closures (some of which are potentially initiating more writes on the
|
899
|
+
// transport) are executed on the t->combiner.
|
900
|
+
//
|
901
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
902
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
903
|
+
// that gathers all the relevant bytes (which are at various places in the
|
904
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
905
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
906
|
+
// multiple write operations.
|
907
|
+
//
|
908
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
909
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
910
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
911
|
t->combiner->FinallyRun(
|
909
912
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
913
|
write_action_begin_locked, t, nullptr),
|
@@ -935,7 +938,8 @@ static const char* begin_writing_desc(bool partial) {
|
|
935
938
|
}
|
936
939
|
}
|
937
940
|
|
938
|
-
static void write_action_begin_locked(void* gt,
|
941
|
+
static void write_action_begin_locked(void* gt,
|
942
|
+
grpc_error_handle /*error_ignored*/) {
|
939
943
|
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
940
944
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
941
945
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
@@ -956,9 +960,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
960
|
write_action(t, GRPC_ERROR_NONE);
|
957
961
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
962
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
963
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
964
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
965
|
+
// been able to flush qbuf, we can resume reading.
|
962
966
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
967
|
GPR_INFO,
|
964
968
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -974,7 +978,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
974
978
|
}
|
975
979
|
}
|
976
980
|
|
977
|
-
static void write_action(void* gt,
|
981
|
+
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
978
982
|
GPR_TIMER_SCOPE("write_action", 0);
|
979
983
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
980
984
|
void* cl = t->cl;
|
@@ -986,16 +990,16 @@ static void write_action(void* gt, grpc_error* /*error*/) {
|
|
986
990
|
cl);
|
987
991
|
}
|
988
992
|
|
989
|
-
static void write_action_end(void* tp,
|
993
|
+
static void write_action_end(void* tp, grpc_error_handle error) {
|
990
994
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
991
995
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
992
996
|
write_action_end_locked, t, nullptr),
|
993
997
|
GRPC_ERROR_REF(error));
|
994
998
|
}
|
995
999
|
|
996
|
-
|
997
|
-
|
998
|
-
static void write_action_end_locked(void* tp,
|
1000
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
1001
|
+
// sendmsg
|
1002
|
+
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
999
1003
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
1004
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1001
1005
|
|
@@ -1005,8 +1009,8 @@ static void write_action_end_locked(void* tp, grpc_error* error) {
|
|
1005
1009
|
closed = true;
|
1006
1010
|
}
|
1007
1011
|
|
1008
|
-
if (t->sent_goaway_state ==
|
1009
|
-
t->sent_goaway_state =
|
1012
|
+
if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED) {
|
1013
|
+
t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
|
1010
1014
|
closed = true;
|
1011
1015
|
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
1012
1016
|
close_transport_locked(
|
@@ -1050,21 +1054,34 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1050
1054
|
grpc_chttp2_setting_id id, uint32_t value) {
|
1051
1055
|
const grpc_chttp2_setting_parameters* sp =
|
1052
1056
|
&grpc_chttp2_settings_parameters[id];
|
1053
|
-
uint32_t use_value =
|
1057
|
+
uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
|
1054
1058
|
if (use_value != value) {
|
1055
1059
|
gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
|
1056
1060
|
value, use_value);
|
1057
1061
|
}
|
1058
1062
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1063
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1064
|
+
t->dirtied_local_settings = true;
|
1061
1065
|
}
|
1062
1066
|
}
|
1063
1067
|
|
1068
|
+
// Cancel out streams that haven't yet started if we have received a GOAWAY
|
1069
|
+
static void cancel_unstarted_streams(grpc_chttp2_transport* t,
|
1070
|
+
grpc_error_handle error) {
|
1071
|
+
grpc_chttp2_stream* s;
|
1072
|
+
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1073
|
+
s->trailing_metadata_buffer.Set(
|
1074
|
+
grpc_core::GrpcStreamNetworkState(),
|
1075
|
+
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1076
|
+
grpc_chttp2_cancel_stream(t, s, GRPC_ERROR_REF(error));
|
1077
|
+
}
|
1078
|
+
GRPC_ERROR_UNREF(error);
|
1079
|
+
}
|
1080
|
+
|
1064
1081
|
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
1065
1082
|
uint32_t goaway_error,
|
1066
1083
|
uint32_t last_stream_id,
|
1067
|
-
|
1084
|
+
absl::string_view goaway_text) {
|
1068
1085
|
// Discard the error from a previous goaway frame (if any)
|
1069
1086
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1070
1087
|
GRPC_ERROR_UNREF(t->goaway_error);
|
@@ -1080,58 +1097,74 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1097
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1098
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1099
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1100
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1101
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1102
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1087
|
-
goaway_error,
|
1103
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1104
|
+
goaway_error, grpc_error_std_string(t->goaway_error).c_str());
|
1088
1105
|
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1106
|
+
if (t->is_client) {
|
1107
|
+
cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
|
1108
|
+
// Cancel all unseen streams
|
1109
|
+
grpc_chttp2_stream_map_for_each(
|
1110
|
+
&t->stream_map,
|
1111
|
+
[](void* user_data, uint32_t /* key */, void* stream) {
|
1112
|
+
uint32_t last_stream_id = *(static_cast<uint32_t*>(user_data));
|
1113
|
+
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
|
1114
|
+
if (s->id > last_stream_id) {
|
1115
|
+
s->trailing_metadata_buffer.Set(
|
1116
|
+
grpc_core::GrpcStreamNetworkState(),
|
1117
|
+
grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
|
1118
|
+
grpc_chttp2_cancel_stream(s->t, s,
|
1119
|
+
GRPC_ERROR_REF(s->t->goaway_error));
|
1120
|
+
}
|
1121
|
+
},
|
1122
|
+
&last_stream_id);
|
1123
|
+
}
|
1124
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1125
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1126
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1127
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1128
|
+
// for new connections on that channel.
|
1093
1129
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1130
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
|
-
|
1131
|
+
goaway_text == "too_many_pings")) {
|
1096
1132
|
gpr_log(GPR_ERROR,
|
1097
1133
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1098
1134
|
"data equal to \"too_many_pings\"");
|
1099
|
-
|
1100
|
-
|
1101
|
-
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1135
|
+
constexpr auto max_keepalive_time = grpc_core::Duration::Milliseconds(
|
1136
|
+
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1102
1137
|
t->keepalive_time =
|
1103
|
-
|
1104
|
-
?
|
1105
|
-
:
|
1106
|
-
|
1138
|
+
t->keepalive_time > max_keepalive_time
|
1139
|
+
? grpc_core::Duration::Infinity()
|
1140
|
+
: t->keepalive_time * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1141
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1142
|
+
absl::Cord(std::to_string(t->keepalive_time.millis())));
|
1143
|
+
}
|
1144
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1145
|
+
// received.
|
1146
|
+
if (!grpc_core::test_only_disable_transient_failure_state_notification) {
|
1147
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1148
|
+
"got_goaway");
|
1107
1149
|
}
|
1108
|
-
|
1109
|
-
/* lie: use transient failure from the transport to indicate goaway has been
|
1110
|
-
* received */
|
1111
|
-
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, "got_goaway");
|
1112
1150
|
}
|
1113
1151
|
|
1114
1152
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1115
1153
|
grpc_chttp2_stream* s;
|
1116
|
-
|
1154
|
+
// maybe cancel out streams that haven't yet started if we have received a
|
1155
|
+
// GOAWAY
|
1117
1156
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1118
|
-
|
1119
|
-
grpc_chttp2_cancel_stream(
|
1120
|
-
t, s,
|
1121
|
-
grpc_error_set_int(
|
1122
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
|
1123
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1124
|
-
}
|
1157
|
+
cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
|
1125
1158
|
return;
|
1126
1159
|
}
|
1127
|
-
|
1128
|
-
|
1160
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1161
|
+
// * concurrency
|
1129
1162
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1130
1163
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1131
1164
|
t->settings[GRPC_PEER_SETTINGS]
|
1132
1165
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1133
1166
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1134
|
-
|
1167
|
+
// safe since we can't (legally) be parsing this stream yet
|
1135
1168
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1136
1169
|
GPR_INFO,
|
1137
1170
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1143,6 +1176,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1143
1176
|
|
1144
1177
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1145
1178
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1179
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1180
|
+
"Transport Stream IDs exhausted"),
|
1146
1181
|
"no_more_stream_ids");
|
1147
1182
|
}
|
1148
1183
|
|
@@ -1151,9 +1186,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1151
1186
|
grpc_chttp2_mark_stream_writable(t, s);
|
1152
1187
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1153
1188
|
}
|
1154
|
-
|
1189
|
+
// cancel out streams that will never be started
|
1155
1190
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1156
1191
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1192
|
+
s->trailing_metadata_buffer.Set(
|
1193
|
+
grpc_core::GrpcStreamNetworkState(),
|
1194
|
+
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1157
1195
|
grpc_chttp2_cancel_stream(
|
1158
1196
|
t, s,
|
1159
1197
|
grpc_error_set_int(
|
@@ -1163,12 +1201,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1163
1201
|
}
|
1164
1202
|
}
|
1165
1203
|
|
1166
|
-
|
1167
|
-
we should not complete this closure until we can prove that the write got
|
1168
|
-
scheduled
|
1204
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1205
|
+
// we should not complete this closure until we can prove that the write got
|
1206
|
+
// scheduled
|
1169
1207
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1170
|
-
|
1171
|
-
bits being used for flags defined above)
|
1208
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1209
|
+
// bits being used for flags defined above)
|
1172
1210
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1173
1211
|
|
1174
1212
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1185,7 +1223,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1185
1223
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1186
1224
|
grpc_chttp2_stream* /*s*/,
|
1187
1225
|
grpc_closure** pclosure,
|
1188
|
-
|
1226
|
+
grpc_error_handle error,
|
1227
|
+
const char* desc) {
|
1189
1228
|
grpc_closure* closure = *pclosure;
|
1190
1229
|
*pclosure = nullptr;
|
1191
1230
|
if (closure == nullptr) {
|
@@ -1194,7 +1233,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1194
1233
|
}
|
1195
1234
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1196
1235
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1197
|
-
const char* errstr = grpc_error_string(error);
|
1198
1236
|
gpr_log(
|
1199
1237
|
GPR_INFO,
|
1200
1238
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1204,39 +1242,53 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1204
1242
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1205
1243
|
static_cast<int>(closure->next_data.scratch %
|
1206
1244
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1207
|
-
desc,
|
1245
|
+
desc, grpc_error_std_string(error).c_str(),
|
1246
|
+
write_state_name(t->write_state));
|
1208
1247
|
}
|
1209
1248
|
if (error != GRPC_ERROR_NONE) {
|
1210
|
-
|
1211
|
-
|
1249
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1250
|
+
grpc_error_handle cl_err =
|
1251
|
+
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1252
|
+
#else
|
1253
|
+
grpc_error_handle cl_err =
|
1254
|
+
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
1255
|
+
#endif
|
1256
|
+
if (cl_err == GRPC_ERROR_NONE) {
|
1257
|
+
cl_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1212
1258
|
"Error in HTTP transport completing operation");
|
1213
|
-
|
1214
|
-
|
1215
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1259
|
+
cl_err = grpc_error_set_str(cl_err, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1260
|
+
t->peer_string);
|
1216
1261
|
}
|
1217
|
-
|
1218
|
-
|
1262
|
+
cl_err = grpc_error_add_child(cl_err, error);
|
1263
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1264
|
+
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
|
1265
|
+
#else
|
1266
|
+
closure->error_data.error = reinterpret_cast<intptr_t>(cl_err);
|
1267
|
+
#endif
|
1219
1268
|
}
|
1220
1269
|
if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
|
1221
1270
|
if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
|
1222
1271
|
!(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
|
1223
1272
|
// Using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN to avoid running
|
1224
1273
|
// closures earlier than when it is safe to do so.
|
1225
|
-
|
1226
|
-
|
1274
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1275
|
+
grpc_error_handle run_error =
|
1276
|
+
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1277
|
+
#else
|
1278
|
+
grpc_error_handle run_error =
|
1279
|
+
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
1280
|
+
#endif
|
1281
|
+
closure->error_data.error = 0;
|
1282
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, run_error);
|
1227
1283
|
} else {
|
1228
|
-
grpc_closure_list_append(&t->run_after_write, closure
|
1229
|
-
closure->error_data.error);
|
1284
|
+
grpc_closure_list_append(&t->run_after_write, closure);
|
1230
1285
|
}
|
1231
1286
|
}
|
1232
1287
|
}
|
1233
1288
|
|
1234
1289
|
static bool contains_non_ok_status(grpc_metadata_batch* batch) {
|
1235
|
-
|
1236
|
-
|
1237
|
-
GRPC_MDELEM_GRPC_STATUS_0);
|
1238
|
-
}
|
1239
|
-
return false;
|
1290
|
+
return batch->get(grpc_core::GrpcStatusMetadata()).value_or(GRPC_STATUS_OK) !=
|
1291
|
+
GRPC_STATUS_OK;
|
1240
1292
|
}
|
1241
1293
|
|
1242
1294
|
static void maybe_become_writable_due_to_send_msg(grpc_chttp2_transport* t,
|
@@ -1260,9 +1312,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1260
1312
|
grpc_chttp2_stream* s) {
|
1261
1313
|
for (;;) {
|
1262
1314
|
if (s->fetching_send_message == nullptr) {
|
1263
|
-
|
1315
|
+
// Stream was cancelled before message fetch completed
|
1264
1316
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1265
|
-
return; /* early out */
|
1266
1317
|
}
|
1267
1318
|
if (s->fetched_send_message_length == s->fetching_send_message->length()) {
|
1268
1319
|
int64_t notify_offset = s->next_message_end_offset;
|
@@ -1293,7 +1344,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1293
1344
|
UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1294
1345
|
::complete_fetch, s,
|
1295
1346
|
grpc_schedule_on_exec_ctx))) {
|
1296
|
-
|
1347
|
+
grpc_error_handle error =
|
1348
|
+
s->fetching_send_message->Pull(&s->fetching_slice);
|
1297
1349
|
if (error != GRPC_ERROR_NONE) {
|
1298
1350
|
s->fetching_send_message.reset();
|
1299
1351
|
grpc_chttp2_cancel_stream(t, s, error);
|
@@ -1304,14 +1356,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1304
1356
|
}
|
1305
1357
|
}
|
1306
1358
|
|
1307
|
-
static void complete_fetch(void* gs,
|
1359
|
+
static void complete_fetch(void* gs, grpc_error_handle error) {
|
1308
1360
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1309
1361
|
s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1310
1362
|
::complete_fetch_locked, s, nullptr),
|
1311
1363
|
GRPC_ERROR_REF(error));
|
1312
1364
|
}
|
1313
1365
|
|
1314
|
-
static void complete_fetch_locked(void* gs,
|
1366
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
1315
1367
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1316
1368
|
grpc_chttp2_transport* t = s->t;
|
1317
1369
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1329,19 +1381,15 @@ static void complete_fetch_locked(void* gs, grpc_error* error) {
|
|
1329
1381
|
|
1330
1382
|
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
1331
1383
|
bool is_client, bool is_initial) {
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
is_client ? "CLI" : "SVR", key, value);
|
1338
|
-
gpr_free(key);
|
1339
|
-
gpr_free(value);
|
1340
|
-
}
|
1384
|
+
const std::string prefix = absl::StrCat(
|
1385
|
+
"HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
|
1386
|
+
md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
|
1387
|
+
gpr_log(GPR_INFO, "%s", absl::StrCat(prefix, key, ": ", value).c_str());
|
1388
|
+
});
|
1341
1389
|
}
|
1342
1390
|
|
1343
1391
|
static void perform_stream_op_locked(void* stream_op,
|
1344
|
-
|
1392
|
+
grpc_error_handle /*error_ignored*/) {
|
1345
1393
|
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1346
1394
|
|
1347
1395
|
grpc_transport_stream_op_batch* op =
|
@@ -1356,8 +1404,10 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1356
1404
|
s->context = op->payload->context;
|
1357
1405
|
s->traced = op->is_traced;
|
1358
1406
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1359
|
-
gpr_log(GPR_INFO,
|
1360
|
-
|
1407
|
+
gpr_log(GPR_INFO,
|
1408
|
+
"perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
|
1409
|
+
op, grpc_transport_stream_op_batch_string(op).c_str(),
|
1410
|
+
op->on_complete);
|
1361
1411
|
if (op->send_initial_metadata) {
|
1362
1412
|
log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
|
1363
1413
|
s->id, t->is_client, true);
|
@@ -1374,7 +1424,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1374
1424
|
// This batch has send ops. Use final_data as a barrier until enqueue time;
|
1375
1425
|
// the initial counter is dropped at the end of this function.
|
1376
1426
|
on_complete->next_data.scratch = CLOSURE_BARRIER_FIRST_REF_BIT;
|
1377
|
-
on_complete->error_data.error =
|
1427
|
+
on_complete->error_data.error = 0;
|
1378
1428
|
}
|
1379
1429
|
|
1380
1430
|
if (op->cancel_stream) {
|
@@ -1390,87 +1440,57 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1440
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1391
1441
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1392
1442
|
|
1393
|
-
/* Identify stream compression */
|
1394
|
-
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1395
|
-
.content_encoding == nullptr ||
|
1396
|
-
grpc_stream_compression_method_parse(
|
1397
|
-
GRPC_MDVALUE(
|
1398
|
-
op_payload->send_initial_metadata.send_initial_metadata->idx
|
1399
|
-
.named.content_encoding->md),
|
1400
|
-
true, &s->stream_compression_method) == 0) {
|
1401
|
-
s->stream_compression_method = GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS;
|
1402
|
-
}
|
1403
|
-
if (s->stream_compression_method !=
|
1404
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS) {
|
1405
|
-
s->uncompressed_data_size = 0;
|
1406
|
-
s->stream_compression_ctx = nullptr;
|
1407
|
-
grpc_slice_buffer_init(&s->compressed_data_buffer);
|
1408
|
-
}
|
1409
1443
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1410
1444
|
s->send_initial_metadata =
|
1411
1445
|
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
1446
|
if (t->is_client) {
|
1418
|
-
s->deadline =
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
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
|
-
}
|
1447
|
+
s->deadline = std::min(
|
1448
|
+
s->deadline,
|
1449
|
+
s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
|
1450
|
+
.value_or(grpc_core::Timestamp::InfFuture()));
|
1451
|
+
}
|
1452
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1453
|
+
s->seen_error = true;
|
1454
|
+
}
|
1455
|
+
if (!s->write_closed) {
|
1456
|
+
if (t->is_client) {
|
1457
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1458
|
+
GPR_ASSERT(s->id == 0);
|
1459
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1460
|
+
maybe_start_some_streams(t);
|
1451
1461
|
} else {
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1462
|
+
s->trailing_metadata_buffer.Set(
|
1463
|
+
grpc_core::GrpcStreamNetworkState(),
|
1464
|
+
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1465
|
+
grpc_chttp2_cancel_stream(
|
1466
|
+
t, s,
|
1467
|
+
grpc_error_set_int(
|
1468
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1469
|
+
"Transport closed", &t->closed_with_error, 1),
|
1470
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1460
1471
|
}
|
1461
1472
|
} else {
|
1462
|
-
s->
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1473
|
+
GPR_ASSERT(s->id != 0);
|
1474
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1475
|
+
if (!(op->send_message &&
|
1476
|
+
(op->payload->send_message.send_message->flags() &
|
1477
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1478
|
+
grpc_chttp2_initiate_write(
|
1479
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1480
|
+
}
|
1469
1481
|
}
|
1482
|
+
} else {
|
1483
|
+
s->send_initial_metadata = nullptr;
|
1484
|
+
grpc_chttp2_complete_closure_step(
|
1485
|
+
t, s, &s->send_initial_metadata_finished,
|
1486
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1487
|
+
"Attempt to send initial metadata after stream was closed",
|
1488
|
+
&s->write_closed_error, 1),
|
1489
|
+
"send_initial_metadata_finished");
|
1470
1490
|
}
|
1471
1491
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1472
1492
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1473
|
-
(gpr_atm)t->peer_string);
|
1493
|
+
(gpr_atm)t->peer_string.c_str());
|
1474
1494
|
}
|
1475
1495
|
}
|
1476
1496
|
|
@@ -1526,47 +1546,28 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1526
1546
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1527
1547
|
s->send_trailing_metadata =
|
1528
1548
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1549
|
+
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1550
|
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
|
-
s->seen_error = true;
|
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
|
-
}
|
1551
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1552
|
+
s->seen_error = true;
|
1553
|
+
}
|
1554
|
+
if (s->write_closed) {
|
1555
|
+
s->send_trailing_metadata = nullptr;
|
1556
|
+
s->sent_trailing_metadata_op = nullptr;
|
1557
|
+
grpc_chttp2_complete_closure_step(
|
1558
|
+
t, s, &s->send_trailing_metadata_finished,
|
1559
|
+
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1560
|
+
? GRPC_ERROR_NONE
|
1561
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1562
|
+
"Attempt to send trailing metadata after "
|
1563
|
+
"stream was closed"),
|
1564
|
+
"send_trailing_metadata_finished");
|
1565
|
+
} else if (s->id != 0) {
|
1566
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1567
|
+
// bytes before going writable
|
1568
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1569
|
+
grpc_chttp2_initiate_write(
|
1570
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
1571
|
}
|
1571
1572
|
}
|
1572
1573
|
|
@@ -1581,7 +1582,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1581
1582
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1582
1583
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1583
1584
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1584
|
-
(gpr_atm)t->peer_string);
|
1585
|
+
(gpr_atm)t->peer_string.c_str());
|
1585
1586
|
}
|
1586
1587
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1587
1588
|
}
|
@@ -1593,6 +1594,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1593
1594
|
GPR_ASSERT(!s->pending_byte_stream);
|
1594
1595
|
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1595
1596
|
s->recv_message = op_payload->recv_message.recv_message;
|
1597
|
+
s->call_failed_before_recv_message =
|
1598
|
+
op_payload->recv_message.call_failed_before_recv_message;
|
1596
1599
|
if (s->id != 0) {
|
1597
1600
|
if (!s->read_closed) {
|
1598
1601
|
before = s->frame_storage.length +
|
@@ -1602,8 +1605,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1602
1605
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
1603
1606
|
if (s->id != 0) {
|
1604
1607
|
if (!s->read_closed && s->frame_storage.length == 0) {
|
1605
|
-
size_t after = s->
|
1606
|
-
s->unprocessed_incoming_frames_buffer_cached_length;
|
1608
|
+
size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
|
1607
1609
|
s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
|
1608
1610
|
before - after);
|
1609
1611
|
grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
|
@@ -1640,19 +1642,19 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1640
1642
|
|
1641
1643
|
if (!t->is_client) {
|
1642
1644
|
if (op->send_initial_metadata) {
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1645
|
+
GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
|
1646
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1647
|
+
.has_value());
|
1646
1648
|
}
|
1647
1649
|
if (op->send_trailing_metadata) {
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1650
|
+
GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata
|
1651
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1652
|
+
.has_value());
|
1651
1653
|
}
|
1652
1654
|
}
|
1653
1655
|
|
1654
1656
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1655
|
-
gpr_log(GPR_INFO, "perform_stream_op[s=%p]: %s", s,
|
1657
|
+
gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
|
1656
1658
|
grpc_transport_stream_op_batch_string(op).c_str());
|
1657
1659
|
}
|
1658
1660
|
|
@@ -1663,9 +1665,9 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1663
1665
|
GRPC_ERROR_NONE);
|
1664
1666
|
}
|
1665
1667
|
|
1666
|
-
static void cancel_pings(grpc_chttp2_transport* t,
|
1667
|
-
|
1668
|
-
|
1668
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1669
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1670
|
+
// and maybe they hold resources that need to be freed
|
1669
1671
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1670
1672
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1671
1673
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1691,11 +1693,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1691
1693
|
GRPC_ERROR_NONE);
|
1692
1694
|
}
|
1693
1695
|
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1698
|
-
*/
|
1696
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1697
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1698
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1699
1699
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1700
1700
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1701
1701
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1709,7 +1709,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1709
1709
|
}
|
1710
1710
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1711
1711
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1712
|
-
|
1712
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1713
1713
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1714
1714
|
start_keepalive_ping_locked, t, nullptr),
|
1715
1715
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1732,14 +1732,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1732
1732
|
GRPC_ERROR_NONE);
|
1733
1733
|
}
|
1734
1734
|
|
1735
|
-
void grpc_chttp2_retry_initiate_ping(void* tp,
|
1735
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
|
1736
1736
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1737
1737
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1738
1738
|
retry_initiate_ping_locked, t, nullptr),
|
1739
1739
|
GRPC_ERROR_REF(error));
|
1740
1740
|
}
|
1741
1741
|
|
1742
|
-
static void retry_initiate_ping_locked(void* tp,
|
1742
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
|
1743
1743
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1744
1744
|
t->ping_state.is_delayed_ping_timer_set = false;
|
1745
1745
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1751,9 +1751,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1751
1751
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1752
1752
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1753
1753
|
if (pq->inflight_id != id) {
|
1754
|
-
|
1755
|
-
|
1756
|
-
gpr_free(from);
|
1754
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1755
|
+
t->peer_string.c_str(), id);
|
1757
1756
|
return;
|
1758
1757
|
}
|
1759
1758
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1763,18 +1762,120 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1763
1762
|
}
|
1764
1763
|
}
|
1765
1764
|
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1770
|
-
|
1765
|
+
namespace {
|
1766
|
+
|
1767
|
+
// Fire and forget (deletes itself on completion). Does a graceful shutdown by
|
1768
|
+
// sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
|
1769
|
+
// and waiting for an ack (effective waiting for an RTT) and then sending a
|
1770
|
+
// final GOAWAY freame with an updated last stream identifier. This helps ensure
|
1771
|
+
// that a connection can be cleanly shut down without losing requests.
|
1772
|
+
// In the event, that the client does not respond to the ping for some reason,
|
1773
|
+
// we add a 20 second deadline, after which we send the second goaway.
|
1774
|
+
class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
1775
|
+
public:
|
1776
|
+
static void Start(grpc_chttp2_transport* t) { new GracefulGoaway(t); }
|
1777
|
+
|
1778
|
+
~GracefulGoaway() override {
|
1779
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t_, "graceful goaway");
|
1780
|
+
}
|
1781
|
+
|
1782
|
+
private:
|
1783
|
+
explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
|
1784
|
+
t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
|
1785
|
+
GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
|
1786
|
+
grpc_chttp2_goaway_append((1u << 31) - 1, 0, grpc_empty_slice(), &t->qbuf);
|
1787
|
+
send_ping_locked(
|
1788
|
+
t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
|
1789
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1790
|
+
Ref().release(); // Ref for the timer
|
1791
|
+
grpc_timer_init(
|
1792
|
+
&timer_,
|
1793
|
+
grpc_core::ExecCtx::Get()->Now() + grpc_core::Duration::Seconds(20),
|
1794
|
+
GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr));
|
1795
|
+
}
|
1796
|
+
|
1797
|
+
void MaybeSendFinalGoawayLocked() {
|
1798
|
+
if (t_->sent_goaway_state != GRPC_CHTTP2_GRACEFUL_GOAWAY) {
|
1799
|
+
// We already sent the final GOAWAY.
|
1800
|
+
return;
|
1801
|
+
}
|
1802
|
+
if (t_->destroying || t_->closed_with_error != GRPC_ERROR_NONE) {
|
1803
|
+
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1804
|
+
GPR_INFO,
|
1805
|
+
"transport:%p %s peer:%s Transport already shutting down. "
|
1806
|
+
"Graceful GOAWAY abandoned.",
|
1807
|
+
t_, t_->is_client ? "CLIENT" : "SERVER", t_->peer_string.c_str()));
|
1808
|
+
return;
|
1809
|
+
}
|
1810
|
+
// Ping completed. Send final goaway.
|
1811
|
+
GRPC_CHTTP2_IF_TRACING(
|
1812
|
+
gpr_log(GPR_INFO,
|
1813
|
+
"transport:%p %s peer:%s Graceful shutdown: Ping received. "
|
1814
|
+
"Sending final GOAWAY with stream_id:%d",
|
1815
|
+
t_, t_->is_client ? "CLIENT" : "SERVER",
|
1816
|
+
t_->peer_string.c_str(), t_->last_new_stream_id));
|
1817
|
+
t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
|
1818
|
+
grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
|
1819
|
+
&t_->qbuf);
|
1820
|
+
grpc_chttp2_initiate_write(t_, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1821
|
+
}
|
1822
|
+
|
1823
|
+
static void OnPingAck(void* arg, grpc_error_handle /* error */) {
|
1824
|
+
auto* self = static_cast<GracefulGoaway*>(arg);
|
1825
|
+
self->t_->combiner->Run(
|
1826
|
+
GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
|
1827
|
+
GRPC_ERROR_NONE);
|
1828
|
+
}
|
1829
|
+
|
1830
|
+
static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
|
1831
|
+
auto* self = static_cast<GracefulGoaway*>(arg);
|
1832
|
+
grpc_timer_cancel(&self->timer_);
|
1833
|
+
self->MaybeSendFinalGoawayLocked();
|
1834
|
+
self->Unref();
|
1835
|
+
}
|
1836
|
+
|
1837
|
+
static void OnTimer(void* arg, grpc_error_handle error) {
|
1838
|
+
auto* self = static_cast<GracefulGoaway*>(arg);
|
1839
|
+
if (error != GRPC_ERROR_NONE) {
|
1840
|
+
self->Unref();
|
1841
|
+
return;
|
1842
|
+
}
|
1843
|
+
self->t_->combiner->Run(
|
1844
|
+
GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
|
1845
|
+
GRPC_ERROR_NONE);
|
1846
|
+
}
|
1847
|
+
|
1848
|
+
static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
|
1849
|
+
auto* self = static_cast<GracefulGoaway*>(arg);
|
1850
|
+
self->MaybeSendFinalGoawayLocked();
|
1851
|
+
self->Unref();
|
1852
|
+
}
|
1853
|
+
|
1854
|
+
grpc_chttp2_transport* t_;
|
1855
|
+
grpc_closure on_ping_ack_;
|
1856
|
+
grpc_timer timer_;
|
1857
|
+
grpc_closure on_timer_;
|
1858
|
+
};
|
1859
|
+
|
1860
|
+
} // namespace
|
1861
|
+
|
1862
|
+
static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1771
1863
|
grpc_http2_error_code http_error;
|
1772
|
-
|
1773
|
-
grpc_error_get_status(error,
|
1774
|
-
&http_error, nullptr);
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1864
|
+
std::string message;
|
1865
|
+
grpc_error_get_status(error, grpc_core::Timestamp::InfFuture(), nullptr,
|
1866
|
+
&message, &http_error, nullptr);
|
1867
|
+
if (!t->is_client && http_error == GRPC_HTTP2_NO_ERROR) {
|
1868
|
+
// Do a graceful shutdown.
|
1869
|
+
GracefulGoaway::Start(t);
|
1870
|
+
} else {
|
1871
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1872
|
+
gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1873
|
+
grpc_error_std_string(error).c_str());
|
1874
|
+
t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
|
1875
|
+
grpc_chttp2_goaway_append(
|
1876
|
+
t->last_new_stream_id, static_cast<uint32_t>(http_error),
|
1877
|
+
grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
|
1878
|
+
}
|
1778
1879
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1779
1880
|
GRPC_ERROR_UNREF(error);
|
1780
1881
|
}
|
@@ -1786,7 +1887,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1786
1887
|
grpc_error_set_int(
|
1787
1888
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1788
1889
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1789
|
-
|
1890
|
+
// The transport will be closed after the write is done
|
1790
1891
|
close_transport_locked(
|
1791
1892
|
t, grpc_error_set_int(
|
1792
1893
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1794,13 +1895,22 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1794
1895
|
}
|
1795
1896
|
}
|
1796
1897
|
|
1898
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
1899
|
+
if (!t->is_client) {
|
1900
|
+
t->ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
|
1901
|
+
t->ping_recv_state.ping_strikes = 0;
|
1902
|
+
}
|
1903
|
+
t->ping_state.pings_before_data_required =
|
1904
|
+
t->ping_policy.max_pings_without_data;
|
1905
|
+
}
|
1906
|
+
|
1797
1907
|
static void perform_transport_op_locked(void* stream_op,
|
1798
|
-
|
1908
|
+
grpc_error_handle /*error_ignored*/) {
|
1799
1909
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
1800
1910
|
grpc_chttp2_transport* t =
|
1801
1911
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
1802
1912
|
|
1803
|
-
if (op->goaway_error) {
|
1913
|
+
if (op->goaway_error != GRPC_ERROR_NONE) {
|
1804
1914
|
send_goaway(t, op->goaway_error);
|
1805
1915
|
}
|
1806
1916
|
|
@@ -1852,12 +1962,12 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1852
1962
|
GRPC_ERROR_NONE);
|
1853
1963
|
}
|
1854
1964
|
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1965
|
+
//
|
1966
|
+
// INPUT PROCESSING - GENERAL
|
1967
|
+
//
|
1858
1968
|
|
1859
|
-
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1860
|
-
|
1969
|
+
void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
|
1970
|
+
grpc_chttp2_stream* s) {
|
1861
1971
|
if (s->recv_initial_metadata_ready != nullptr &&
|
1862
1972
|
s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
|
1863
1973
|
if (s->seen_error) {
|
@@ -1867,15 +1977,24 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1867
1977
|
&s->unprocessed_incoming_frames_buffer);
|
1868
1978
|
}
|
1869
1979
|
}
|
1870
|
-
|
1871
|
-
|
1980
|
+
*s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
|
1981
|
+
s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
|
1982
|
+
// If we didn't receive initial metadata from the wire and instead faked a
|
1983
|
+
// status (due to stream cancellations for example), let upper layers know
|
1984
|
+
// that trailing metadata is immediately available.
|
1985
|
+
if (s->trailing_metadata_available != nullptr &&
|
1986
|
+
s->published_metadata[0] != GRPC_METADATA_PUBLISHED_FROM_WIRE &&
|
1987
|
+
s->published_metadata[1] == GRPC_METADATA_SYNTHESIZED_FROM_FAKE) {
|
1988
|
+
*s->trailing_metadata_available = true;
|
1989
|
+
s->trailing_metadata_available = nullptr;
|
1990
|
+
}
|
1872
1991
|
null_then_sched_closure(&s->recv_initial_metadata_ready);
|
1873
1992
|
}
|
1874
1993
|
}
|
1875
1994
|
|
1876
1995
|
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
1877
1996
|
grpc_chttp2_stream* s) {
|
1878
|
-
|
1997
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1879
1998
|
if (s->recv_message_ready != nullptr) {
|
1880
1999
|
*s->recv_message = nullptr;
|
1881
2000
|
if (s->final_metadata_requested && s->seen_error) {
|
@@ -1891,48 +2010,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
|
1891
2010
|
if (s->unprocessed_incoming_frames_buffer.length == 0) {
|
1892
2011
|
grpc_slice_buffer_swap(&s->unprocessed_incoming_frames_buffer,
|
1893
2012
|
&s->frame_storage);
|
1894
|
-
s->unprocessed_incoming_frames_decompressed = false;
|
1895
|
-
}
|
1896
|
-
if (!s->unprocessed_incoming_frames_decompressed &&
|
1897
|
-
s->stream_decompression_method !=
|
1898
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1899
|
-
GPR_ASSERT(s->decompressed_data_buffer.length == 0);
|
1900
|
-
bool end_of_context;
|
1901
|
-
if (!s->stream_decompression_ctx) {
|
1902
|
-
s->stream_decompression_ctx =
|
1903
|
-
grpc_stream_compression_context_create(
|
1904
|
-
s->stream_decompression_method);
|
1905
|
-
}
|
1906
|
-
if (!grpc_stream_decompress(
|
1907
|
-
s->stream_decompression_ctx,
|
1908
|
-
&s->unprocessed_incoming_frames_buffer,
|
1909
|
-
&s->decompressed_data_buffer, nullptr,
|
1910
|
-
GRPC_HEADER_SIZE_IN_BYTES - s->decompressed_header_bytes,
|
1911
|
-
&end_of_context)) {
|
1912
|
-
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
|
1913
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
1914
|
-
&s->unprocessed_incoming_frames_buffer);
|
1915
|
-
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1916
|
-
"Stream decompression error.");
|
1917
|
-
} else {
|
1918
|
-
s->decompressed_header_bytes += s->decompressed_data_buffer.length;
|
1919
|
-
if (s->decompressed_header_bytes == GRPC_HEADER_SIZE_IN_BYTES) {
|
1920
|
-
s->decompressed_header_bytes = 0;
|
1921
|
-
}
|
1922
|
-
error = grpc_deframe_unprocessed_incoming_frames(
|
1923
|
-
&s->data_parser, s, &s->decompressed_data_buffer, nullptr,
|
1924
|
-
s->recv_message);
|
1925
|
-
if (end_of_context) {
|
1926
|
-
grpc_stream_compression_context_destroy(
|
1927
|
-
s->stream_decompression_ctx);
|
1928
|
-
s->stream_decompression_ctx = nullptr;
|
1929
|
-
}
|
1930
|
-
}
|
1931
|
-
} else {
|
1932
|
-
error = grpc_deframe_unprocessed_incoming_frames(
|
1933
|
-
&s->data_parser, s, &s->unprocessed_incoming_frames_buffer,
|
1934
|
-
nullptr, s->recv_message);
|
1935
2013
|
}
|
2014
|
+
error = grpc_deframe_unprocessed_incoming_frames(
|
2015
|
+
&s->data_parser, s, &s->unprocessed_incoming_frames_buffer, nullptr,
|
2016
|
+
s->recv_message);
|
1936
2017
|
if (error != GRPC_ERROR_NONE) {
|
1937
2018
|
s->seen_error = true;
|
1938
2019
|
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
|
@@ -1952,6 +2033,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
|
1952
2033
|
null_then_sched_closure(&s->recv_message_ready);
|
1953
2034
|
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
|
1954
2035
|
*s->recv_message = nullptr;
|
2036
|
+
if (s->call_failed_before_recv_message != nullptr) {
|
2037
|
+
*s->call_failed_before_recv_message =
|
2038
|
+
(s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
|
2039
|
+
}
|
1955
2040
|
null_then_sched_closure(&s->recv_message_ready);
|
1956
2041
|
}
|
1957
2042
|
GRPC_ERROR_UNREF(error);
|
@@ -1974,58 +2059,29 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1974
2059
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1975
2060
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1976
2061
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
if (s->unprocessed_incoming_frames_buffer.length > 0) {
|
1986
|
-
s->unprocessed_incoming_frames_decompressed = true;
|
1987
|
-
pending_data = true;
|
1988
|
-
}
|
1989
|
-
} else {
|
1990
|
-
bool end_of_context;
|
1991
|
-
if (!s->stream_decompression_ctx) {
|
1992
|
-
s->stream_decompression_ctx = grpc_stream_compression_context_create(
|
1993
|
-
s->stream_decompression_method);
|
1994
|
-
}
|
1995
|
-
if (!grpc_stream_decompress(
|
1996
|
-
s->stream_decompression_ctx, &s->frame_storage,
|
1997
|
-
&s->unprocessed_incoming_frames_buffer, nullptr,
|
1998
|
-
GRPC_HEADER_SIZE_IN_BYTES, &end_of_context)) {
|
1999
|
-
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
|
2000
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
2001
|
-
&s->unprocessed_incoming_frames_buffer);
|
2002
|
-
s->seen_error = true;
|
2003
|
-
} else {
|
2004
|
-
if (s->unprocessed_incoming_frames_buffer.length > 0) {
|
2005
|
-
s->unprocessed_incoming_frames_decompressed = true;
|
2006
|
-
pending_data = true;
|
2007
|
-
}
|
2008
|
-
if (end_of_context) {
|
2009
|
-
grpc_stream_compression_context_destroy(
|
2010
|
-
s->stream_decompression_ctx);
|
2011
|
-
s->stream_decompression_ctx = nullptr;
|
2012
|
-
}
|
2013
|
-
}
|
2062
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
2063
|
+
// maybe decompress the next 5 bytes in the stream.
|
2064
|
+
grpc_slice_buffer_move_first(
|
2065
|
+
&s->frame_storage,
|
2066
|
+
std::min(s->frame_storage.length, size_t(GRPC_HEADER_SIZE_IN_BYTES)),
|
2067
|
+
&s->unprocessed_incoming_frames_buffer);
|
2068
|
+
if (s->unprocessed_incoming_frames_buffer.length > 0) {
|
2069
|
+
pending_data = true;
|
2014
2070
|
}
|
2015
2071
|
}
|
2016
2072
|
if (s->read_closed && s->frame_storage.length == 0 && !pending_data &&
|
2017
2073
|
s->recv_trailing_metadata_finished != nullptr) {
|
2018
2074
|
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
2019
2075
|
s->collecting_stats = nullptr;
|
2020
|
-
|
2021
|
-
|
2076
|
+
*s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
|
2077
|
+
s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
|
2022
2078
|
null_then_sched_closure(&s->recv_trailing_metadata_finished);
|
2023
2079
|
}
|
2024
2080
|
}
|
2025
2081
|
}
|
2026
2082
|
|
2027
2083
|
static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
2028
|
-
|
2084
|
+
grpc_error_handle error) {
|
2029
2085
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2030
2086
|
grpc_chttp2_stream_map_delete(&t->stream_map, id));
|
2031
2087
|
GPR_DEBUG_ASSERT(s);
|
@@ -2050,7 +2106,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2050
2106
|
|
2051
2107
|
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
2052
2108
|
post_benign_reclaimer(t);
|
2053
|
-
if (t->sent_goaway_state ==
|
2109
|
+
if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
|
2054
2110
|
close_transport_locked(
|
2055
2111
|
t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2056
2112
|
"Last stream closed after sending GOAWAY", &error, 1));
|
@@ -2059,6 +2115,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2059
2115
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2060
2116
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2061
2117
|
}
|
2118
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2119
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2062
2120
|
|
2063
2121
|
GRPC_ERROR_UNREF(error);
|
2064
2122
|
|
@@ -2066,7 +2124,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2066
2124
|
}
|
2067
2125
|
|
2068
2126
|
void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2069
|
-
|
2127
|
+
grpc_error_handle due_to_error) {
|
2070
2128
|
if (!t->is_client && !s->sent_trailing_metadata &&
|
2071
2129
|
grpc_error_has_clear_grpc_status(due_to_error)) {
|
2072
2130
|
close_from_api(t, s, due_to_error);
|
@@ -2090,35 +2148,27 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2090
2148
|
}
|
2091
2149
|
|
2092
2150
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2093
|
-
|
2151
|
+
grpc_error_handle error) {
|
2094
2152
|
grpc_status_code status;
|
2095
|
-
|
2096
|
-
grpc_error_get_status(error, s->deadline, &status, &
|
2153
|
+
std::string message;
|
2154
|
+
grpc_error_get_status(error, s->deadline, &status, &message, nullptr,
|
2155
|
+
nullptr);
|
2097
2156
|
if (status != GRPC_STATUS_OK) {
|
2098
2157
|
s->seen_error = true;
|
2099
2158
|
}
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2159
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2160
|
+
// last chance replacement: we've received trailing metadata,
|
2161
|
+
// but something more important has become available to signal
|
2162
|
+
// to the upper layers - drop what we've got, and then publish
|
2163
|
+
// what we want - which is safe because we haven't told anyone
|
2164
|
+
// about the metadata yet
|
2106
2165
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2107
2166
|
s->recv_trailing_metadata_finished != nullptr) {
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
grpc_mdelem_from_slices(
|
2114
|
-
GRPC_MDSTR_GRPC_STATUS,
|
2115
|
-
grpc_core::UnmanagedMemorySlice(status_string))));
|
2116
|
-
if (!GRPC_SLICE_IS_EMPTY(slice)) {
|
2117
|
-
GRPC_LOG_IF_ERROR(
|
2118
|
-
"add_status_message",
|
2119
|
-
grpc_chttp2_incoming_metadata_buffer_replace_or_add(
|
2120
|
-
&s->metadata_buffer[1],
|
2121
|
-
grpc_mdelem_create(GRPC_MDSTR_GRPC_MESSAGE, slice, nullptr)));
|
2167
|
+
s->trailing_metadata_buffer.Set(grpc_core::GrpcStatusMetadata(), status);
|
2168
|
+
if (!message.empty()) {
|
2169
|
+
s->trailing_metadata_buffer.Set(
|
2170
|
+
grpc_core::GrpcMessageMetadata(),
|
2171
|
+
grpc_core::Slice::FromCopiedBuffer(message));
|
2122
2172
|
}
|
2123
2173
|
s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
|
2124
2174
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
@@ -2127,7 +2177,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2127
2177
|
GRPC_ERROR_UNREF(error);
|
2128
2178
|
}
|
2129
2179
|
|
2130
|
-
static void add_error(
|
2180
|
+
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2181
|
+
size_t* nrefs) {
|
2131
2182
|
if (error == GRPC_ERROR_NONE) return;
|
2132
2183
|
for (size_t i = 0; i < *nrefs; i++) {
|
2133
2184
|
if (error == refs[i]) {
|
@@ -2138,16 +2189,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2138
2189
|
++*nrefs;
|
2139
2190
|
}
|
2140
2191
|
|
2141
|
-
static
|
2142
|
-
|
2143
|
-
|
2192
|
+
static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
2193
|
+
grpc_chttp2_stream* s,
|
2194
|
+
const char* main_error_msg) {
|
2195
|
+
grpc_error_handle refs[3];
|
2144
2196
|
size_t nrefs = 0;
|
2145
2197
|
add_error(s->read_closed_error, refs, &nrefs);
|
2146
2198
|
add_error(s->write_closed_error, refs, &nrefs);
|
2147
2199
|
add_error(extra_error, refs, &nrefs);
|
2148
|
-
|
2200
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2149
2201
|
if (nrefs > 0) {
|
2150
|
-
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2202
|
+
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2151
2203
|
refs, nrefs);
|
2152
2204
|
}
|
2153
2205
|
GRPC_ERROR_UNREF(extra_error);
|
@@ -2155,7 +2207,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2155
2207
|
}
|
2156
2208
|
|
2157
2209
|
static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2158
|
-
grpc_chttp2_write_cb** list,
|
2210
|
+
grpc_chttp2_write_cb** list,
|
2211
|
+
grpc_error_handle error) {
|
2159
2212
|
while (*list) {
|
2160
2213
|
grpc_chttp2_write_cb* cb = *list;
|
2161
2214
|
*list = cb->next;
|
@@ -2168,7 +2221,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2168
2221
|
}
|
2169
2222
|
|
2170
2223
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
2171
|
-
grpc_chttp2_stream* s,
|
2224
|
+
grpc_chttp2_stream* s,
|
2225
|
+
grpc_error_handle error) {
|
2172
2226
|
error =
|
2173
2227
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2174
2228
|
s->send_initial_metadata = nullptr;
|
@@ -2177,6 +2231,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2177
2231
|
"send_initial_metadata_finished");
|
2178
2232
|
|
2179
2233
|
s->send_trailing_metadata = nullptr;
|
2234
|
+
s->sent_trailing_metadata_op = nullptr;
|
2180
2235
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2181
2236
|
GRPC_ERROR_REF(error),
|
2182
2237
|
"send_trailing_metadata_finished");
|
@@ -2191,11 +2246,14 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2191
2246
|
|
2192
2247
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2193
2248
|
grpc_chttp2_stream* s, int close_reads,
|
2194
|
-
int close_writes,
|
2249
|
+
int close_writes, grpc_error_handle error) {
|
2195
2250
|
if (s->read_closed && s->write_closed) {
|
2196
|
-
|
2251
|
+
// already closed, but we should still fake the status if needed.
|
2252
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2253
|
+
if (overall_error != GRPC_ERROR_NONE) {
|
2254
|
+
grpc_chttp2_fake_status(t, s, overall_error);
|
2255
|
+
}
|
2197
2256
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2198
|
-
GRPC_ERROR_UNREF(error);
|
2199
2257
|
return;
|
2200
2258
|
}
|
2201
2259
|
bool closed_read = false;
|
@@ -2212,12 +2270,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2212
2270
|
}
|
2213
2271
|
if (s->read_closed && s->write_closed) {
|
2214
2272
|
became_closed = true;
|
2215
|
-
|
2273
|
+
grpc_error_handle overall_error =
|
2216
2274
|
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2217
2275
|
if (s->id != 0) {
|
2218
2276
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2219
2277
|
} else {
|
2220
|
-
|
2278
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2221
2279
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2222
2280
|
}
|
2223
2281
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2241,7 +2299,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2241
2299
|
}
|
2242
2300
|
|
2243
2301
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2244
|
-
|
2302
|
+
grpc_error_handle error) {
|
2245
2303
|
grpc_slice hdr;
|
2246
2304
|
grpc_slice status_hdr;
|
2247
2305
|
grpc_slice http_status_hdr;
|
@@ -2250,18 +2308,18 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2250
2308
|
uint8_t* p;
|
2251
2309
|
uint32_t len = 0;
|
2252
2310
|
grpc_status_code grpc_status;
|
2253
|
-
|
2254
|
-
grpc_error_get_status(error, s->deadline, &grpc_status, &
|
2311
|
+
std::string message;
|
2312
|
+
grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
|
2255
2313
|
nullptr);
|
2256
2314
|
|
2257
2315
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2258
2316
|
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2317
|
+
// Hand roll a header block.
|
2318
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2319
|
+
// elegant solution.
|
2320
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2321
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2322
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2265
2323
|
if (!s->sent_initial_metadata) {
|
2266
2324
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2267
2325
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2344,10 +2402,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2344
2402
|
GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
|
2345
2403
|
len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
|
2346
2404
|
|
2347
|
-
size_t msg_len =
|
2405
|
+
size_t msg_len = message.length();
|
2348
2406
|
GPR_ASSERT(msg_len <= UINT32_MAX);
|
2349
|
-
|
2350
|
-
message_pfx = GRPC_SLICE_MALLOC(14 +
|
2407
|
+
grpc_core::VarintWriter<1> msg_len_writer(msg_len);
|
2408
|
+
message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
|
2351
2409
|
p = GRPC_SLICE_START_PTR(message_pfx);
|
2352
2410
|
*p++ = 0x00; /* literal header, not indexed */
|
2353
2411
|
*p++ = 12; /* len(grpc-message) */
|
@@ -2363,8 +2421,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2363
2421
|
*p++ = 'a';
|
2364
2422
|
*p++ = 'g';
|
2365
2423
|
*p++ = 'e';
|
2366
|
-
|
2367
|
-
p +=
|
2424
|
+
msg_len_writer.Write(0, p);
|
2425
|
+
p += msg_len_writer.length();
|
2368
2426
|
GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
|
2369
2427
|
len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
|
2370
2428
|
len += static_cast<uint32_t>(msg_len);
|
@@ -2389,7 +2447,9 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2389
2447
|
}
|
2390
2448
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2391
2449
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2392
|
-
grpc_slice_buffer_add(&t->qbuf,
|
2450
|
+
grpc_slice_buffer_add(&t->qbuf,
|
2451
|
+
grpc_slice_from_cpp_string(std::move(message)));
|
2452
|
+
grpc_chttp2_reset_ping_clock(t);
|
2393
2453
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2394
2454
|
&s->stats.outgoing);
|
2395
2455
|
|
@@ -2398,7 +2458,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2398
2458
|
}
|
2399
2459
|
|
2400
2460
|
struct cancel_stream_cb_args {
|
2401
|
-
|
2461
|
+
grpc_error_handle error;
|
2402
2462
|
grpc_chttp2_transport* t;
|
2403
2463
|
};
|
2404
2464
|
|
@@ -2408,7 +2468,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
|
2408
2468
|
grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
|
2409
2469
|
}
|
2410
2470
|
|
2411
|
-
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2471
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2472
|
+
grpc_error_handle error) {
|
2412
2473
|
intptr_t http2_error;
|
2413
2474
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2414
2475
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
@@ -2416,14 +2477,15 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2416
2477
|
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
|
2417
2478
|
GRPC_STATUS_UNAVAILABLE);
|
2418
2479
|
}
|
2480
|
+
cancel_unstarted_streams(t, GRPC_ERROR_REF(error));
|
2419
2481
|
cancel_stream_cb_args args = {error, t};
|
2420
2482
|
grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
|
2421
2483
|
GRPC_ERROR_UNREF(error);
|
2422
2484
|
}
|
2423
2485
|
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2486
|
+
//
|
2487
|
+
// INPUT PROCESSING - PARSING
|
2488
|
+
//
|
2427
2489
|
|
2428
2490
|
template <class F>
|
2429
2491
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2434,7 +2496,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
|
|
2434
2496
|
break;
|
2435
2497
|
case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
|
2436
2498
|
grpc_chttp2_initiate_write(t, reason);
|
2437
|
-
|
2499
|
+
ABSL_FALLTHROUGH_INTENDED;
|
2438
2500
|
case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
|
2439
2501
|
action();
|
2440
2502
|
break;
|
@@ -2462,15 +2524,15 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2462
2524
|
});
|
2463
2525
|
}
|
2464
2526
|
|
2465
|
-
static
|
2527
|
+
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2466
2528
|
grpc_http_parser parser;
|
2467
2529
|
size_t i = 0;
|
2468
|
-
|
2530
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2469
2531
|
grpc_http_response response;
|
2470
2532
|
|
2471
2533
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2472
2534
|
|
2473
|
-
|
2535
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
2474
2536
|
for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
|
2475
2537
|
parse_error =
|
2476
2538
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
@@ -2491,40 +2553,35 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2491
2553
|
return error;
|
2492
2554
|
}
|
2493
2555
|
|
2494
|
-
static void read_action(void* tp,
|
2556
|
+
static void read_action(void* tp, grpc_error_handle error) {
|
2495
2557
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2496
2558
|
t->combiner->Run(
|
2497
2559
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2498
2560
|
GRPC_ERROR_REF(error));
|
2499
2561
|
}
|
2500
2562
|
|
2501
|
-
static void read_action_locked(void* tp,
|
2563
|
+
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2502
2564
|
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2503
2565
|
|
2504
2566
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2505
2567
|
|
2506
|
-
GRPC_ERROR_REF(error);
|
2568
|
+
(void)GRPC_ERROR_REF(error);
|
2507
2569
|
|
2508
|
-
|
2570
|
+
grpc_error_handle err = error;
|
2509
2571
|
if (err != GRPC_ERROR_NONE) {
|
2510
2572
|
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2511
2573
|
"Endpoint read failed", &err, 1),
|
2512
2574
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2513
2575
|
t->write_state);
|
2514
2576
|
}
|
2515
|
-
|
2577
|
+
std::swap(err, error);
|
2516
2578
|
GRPC_ERROR_UNREF(err);
|
2517
2579
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2518
2580
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2519
2581
|
size_t i = 0;
|
2520
|
-
|
2521
|
-
|
2582
|
+
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2583
|
+
GRPC_ERROR_NONE};
|
2522
2584
|
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
2585
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2529
2586
|
}
|
2530
2587
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2558,8 +2615,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2558
2615
|
"Transport closed", &t->closed_with_error, 1);
|
2559
2616
|
}
|
2560
2617
|
if (error != GRPC_ERROR_NONE) {
|
2561
|
-
|
2562
|
-
|
2618
|
+
// If a goaway frame was received, this might be the reason why the read
|
2619
|
+
// failed. Add this info to the error
|
2563
2620
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2564
2621
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2565
2622
|
}
|
@@ -2568,7 +2625,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2568
2625
|
t->endpoint_reading = 0;
|
2569
2626
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2570
2627
|
keep_reading = true;
|
2571
|
-
|
2628
|
+
// Since we have read a byte, reset the keepalive timer
|
2572
2629
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2573
2630
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2574
2631
|
}
|
@@ -2603,7 +2660,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2603
2660
|
|
2604
2661
|
// t is reffed prior to calling the first time, and once the callback chain
|
2605
2662
|
// that kicks off finishes, it's unreffed
|
2606
|
-
|
2663
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2607
2664
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2608
2665
|
send_ping_locked(
|
2609
2666
|
t,
|
@@ -2611,25 +2668,26 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2611
2668
|
grpc_schedule_on_exec_ctx),
|
2612
2669
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2613
2670
|
grpc_schedule_on_exec_ctx));
|
2671
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2614
2672
|
}
|
2615
2673
|
|
2616
|
-
static void start_bdp_ping(void* tp,
|
2674
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
2617
2675
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2618
2676
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2619
2677
|
start_bdp_ping_locked, t, nullptr),
|
2620
2678
|
GRPC_ERROR_REF(error));
|
2621
2679
|
}
|
2622
2680
|
|
2623
|
-
static void start_bdp_ping_locked(void* tp,
|
2681
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2624
2682
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2625
2683
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2626
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2627
|
-
|
2684
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2685
|
+
grpc_error_std_string(error).c_str());
|
2628
2686
|
}
|
2629
2687
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2630
2688
|
return;
|
2631
2689
|
}
|
2632
|
-
|
2690
|
+
// Reset the keepalive ping timer
|
2633
2691
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2634
2692
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2635
2693
|
}
|
@@ -2637,33 +2695,34 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2637
2695
|
t->bdp_ping_started = true;
|
2638
2696
|
}
|
2639
2697
|
|
2640
|
-
static void finish_bdp_ping(void* tp,
|
2698
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
2641
2699
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2642
2700
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2643
2701
|
finish_bdp_ping_locked, t, nullptr),
|
2644
2702
|
GRPC_ERROR_REF(error));
|
2645
2703
|
}
|
2646
2704
|
|
2647
|
-
static void finish_bdp_ping_locked(void* tp,
|
2705
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2648
2706
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2649
2707
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2650
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2651
|
-
|
2708
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2709
|
+
grpc_error_std_string(error).c_str());
|
2652
2710
|
}
|
2653
2711
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2654
2712
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2655
2713
|
return;
|
2656
2714
|
}
|
2657
2715
|
if (!t->bdp_ping_started) {
|
2658
|
-
|
2659
|
-
|
2716
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2717
|
+
// finish_bdp_ping_locked to be run later.
|
2660
2718
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2661
2719
|
finish_bdp_ping_locked, t, nullptr),
|
2662
2720
|
GRPC_ERROR_REF(error));
|
2663
2721
|
return;
|
2664
2722
|
}
|
2665
2723
|
t->bdp_ping_started = false;
|
2666
|
-
|
2724
|
+
grpc_core::Timestamp next_ping =
|
2725
|
+
t->flow_control->bdp_estimator()->CompletePing();
|
2667
2726
|
grpc_chttp2_act_on_flowctl_action(t->flow_control->PeriodicUpdate(), t,
|
2668
2727
|
nullptr);
|
2669
2728
|
GPR_ASSERT(!t->have_next_bdp_ping_timer);
|
@@ -2674,7 +2733,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2674
2733
|
&t->next_bdp_ping_timer_expired_locked);
|
2675
2734
|
}
|
2676
2735
|
|
2677
|
-
static void next_bdp_ping_timer_expired(void* tp,
|
2736
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
|
2678
2737
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2679
2738
|
t->combiner->Run(
|
2680
2739
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
@@ -2682,7 +2741,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
|
|
2682
2741
|
GRPC_ERROR_REF(error));
|
2683
2742
|
}
|
2684
2743
|
|
2685
|
-
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2744
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2745
|
+
grpc_error_handle error) {
|
2686
2746
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2687
2747
|
GPR_ASSERT(t->have_next_bdp_ping_timer);
|
2688
2748
|
t->have_next_bdp_ping_timer = false;
|
@@ -2690,7 +2750,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2690
2750
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2691
2751
|
return;
|
2692
2752
|
}
|
2693
|
-
|
2753
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2754
|
+
// Block the bdp ping till we receive more data.
|
2755
|
+
t->bdp_ping_blocked = true;
|
2756
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2757
|
+
} else {
|
2758
|
+
schedule_bdp_ping_locked(t);
|
2759
|
+
}
|
2694
2760
|
}
|
2695
2761
|
|
2696
2762
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2739,14 +2805,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2739
2805
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2740
2806
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2741
2807
|
&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
2808
|
} else if (0 ==
|
2751
2809
|
strcmp(
|
2752
2810
|
args->args[i].key,
|
@@ -2760,14 +2818,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2760
2818
|
}
|
2761
2819
|
}
|
2762
2820
|
|
2763
|
-
static void init_keepalive_ping(void* arg,
|
2821
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error) {
|
2764
2822
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2765
2823
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2766
2824
|
init_keepalive_ping_locked, t, nullptr),
|
2767
2825
|
GRPC_ERROR_REF(error));
|
2768
2826
|
}
|
2769
2827
|
|
2770
|
-
static void init_keepalive_ping_locked(void* arg,
|
2828
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2771
2829
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2772
2830
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2773
2831
|
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2789,7 +2847,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2789
2847
|
&t->init_keepalive_ping_locked);
|
2790
2848
|
}
|
2791
2849
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2792
|
-
|
2850
|
+
// The keepalive ping timer may be cancelled by bdp
|
2793
2851
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2794
2852
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2795
2853
|
grpc_schedule_on_exec_ctx);
|
@@ -2800,14 +2858,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2800
2858
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2801
2859
|
}
|
2802
2860
|
|
2803
|
-
static void start_keepalive_ping(void* arg,
|
2861
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
2804
2862
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2805
2863
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2806
2864
|
start_keepalive_ping_locked, t, nullptr),
|
2807
2865
|
GRPC_ERROR_REF(error));
|
2808
2866
|
}
|
2809
2867
|
|
2810
|
-
static void start_keepalive_ping_locked(void* arg,
|
2868
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2811
2869
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2812
2870
|
if (error != GRPC_ERROR_NONE) {
|
2813
2871
|
return;
|
@@ -2817,7 +2875,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2817
2875
|
}
|
2818
2876
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2819
2877
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2820
|
-
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
|
2878
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2821
2879
|
}
|
2822
2880
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2823
2881
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2828,24 +2886,24 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2828
2886
|
t->keepalive_ping_started = true;
|
2829
2887
|
}
|
2830
2888
|
|
2831
|
-
static void finish_keepalive_ping(void* arg,
|
2889
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
2832
2890
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2833
2891
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2834
2892
|
finish_keepalive_ping_locked, t, nullptr),
|
2835
2893
|
GRPC_ERROR_REF(error));
|
2836
2894
|
}
|
2837
2895
|
|
2838
|
-
static void finish_keepalive_ping_locked(void* arg,
|
2896
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2839
2897
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2840
2898
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2841
2899
|
if (error == GRPC_ERROR_NONE) {
|
2842
2900
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2843
2901
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2844
|
-
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
|
2902
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2845
2903
|
}
|
2846
2904
|
if (!t->keepalive_ping_started) {
|
2847
|
-
|
2848
|
-
|
2905
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2906
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2849
2907
|
t->combiner->Run(
|
2850
2908
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2851
2909
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2866,7 +2924,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2866
2924
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2867
2925
|
}
|
2868
2926
|
|
2869
|
-
static void keepalive_watchdog_fired(void* arg,
|
2927
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
|
2870
2928
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2871
2929
|
t->combiner->Run(
|
2872
2930
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2874,12 +2932,13 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
|
|
2874
2932
|
GRPC_ERROR_REF(error));
|
2875
2933
|
}
|
2876
2934
|
|
2877
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
2935
|
+
static void keepalive_watchdog_fired_locked(void* arg,
|
2936
|
+
grpc_error_handle error) {
|
2878
2937
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2879
2938
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2880
2939
|
if (error == GRPC_ERROR_NONE) {
|
2881
|
-
gpr_log(
|
2882
|
-
t->peer_string);
|
2940
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2941
|
+
t->peer_string.c_str());
|
2883
2942
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2884
2943
|
close_transport_locked(
|
2885
2944
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2888,8 +2947,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2888
2947
|
GRPC_STATUS_UNAVAILABLE));
|
2889
2948
|
}
|
2890
2949
|
} else {
|
2891
|
-
|
2892
|
-
|
2950
|
+
// The watchdog timer should have been cancelled by
|
2951
|
+
// finish_keepalive_ping_locked.
|
2893
2952
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2894
2953
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2895
2954
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2898,21 +2957,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2898
2957
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2899
2958
|
}
|
2900
2959
|
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2960
|
+
//
|
2961
|
+
// CALLBACK LOOP
|
2962
|
+
//
|
2904
2963
|
|
2905
2964
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2906
2965
|
grpc_connectivity_state state,
|
2966
|
+
const absl::Status& status,
|
2907
2967
|
const char* reason) {
|
2908
2968
|
GRPC_CHTTP2_IF_TRACING(
|
2909
2969
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2910
|
-
t->state_tracker.SetState(state, reason);
|
2970
|
+
t->state_tracker.SetState(state, status, reason);
|
2911
2971
|
}
|
2912
2972
|
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2973
|
+
//
|
2974
|
+
// POLLSET STUFF
|
2975
|
+
//
|
2916
2976
|
|
2917
2977
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2918
2978
|
grpc_pollset* pollset) {
|
@@ -2926,11 +2986,11 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2926
2986
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2927
2987
|
}
|
2928
2988
|
|
2929
|
-
|
2930
|
-
|
2931
|
-
|
2989
|
+
//
|
2990
|
+
// BYTE STREAM
|
2991
|
+
//
|
2932
2992
|
|
2933
|
-
static void reset_byte_stream(void* arg,
|
2993
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error) {
|
2934
2994
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
2935
2995
|
s->pending_byte_stream = false;
|
2936
2996
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2961,8 +3021,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
|
|
2961
3021
|
stream->byte_stream_error = GRPC_ERROR_NONE;
|
2962
3022
|
}
|
2963
3023
|
|
2964
|
-
void Chttp2IncomingByteStream::OrphanLocked(
|
2965
|
-
|
3024
|
+
void Chttp2IncomingByteStream::OrphanLocked(
|
3025
|
+
void* arg, grpc_error_handle /*error_ignored*/) {
|
2966
3026
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2967
3027
|
grpc_chttp2_stream* s = bs->stream_;
|
2968
3028
|
grpc_chttp2_transport* t = s->t;
|
@@ -2981,7 +3041,7 @@ void Chttp2IncomingByteStream::Orphan() {
|
|
2981
3041
|
}
|
2982
3042
|
|
2983
3043
|
void Chttp2IncomingByteStream::NextLocked(void* arg,
|
2984
|
-
|
3044
|
+
grpc_error_handle /*error_ignored*/) {
|
2985
3045
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2986
3046
|
grpc_chttp2_transport* t = bs->transport_;
|
2987
3047
|
grpc_chttp2_stream* s = bs->stream_;
|
@@ -2995,12 +3055,10 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
2995
3055
|
if (s->frame_storage.length > 0) {
|
2996
3056
|
grpc_slice_buffer_swap(&s->frame_storage,
|
2997
3057
|
&s->unprocessed_incoming_frames_buffer);
|
2998
|
-
|
2999
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
|
3000
|
-
GRPC_ERROR_NONE);
|
3058
|
+
ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete, GRPC_ERROR_NONE);
|
3001
3059
|
} else if (s->byte_stream_error != GRPC_ERROR_NONE) {
|
3002
|
-
|
3003
|
-
|
3060
|
+
ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
|
3061
|
+
GRPC_ERROR_REF(s->byte_stream_error));
|
3004
3062
|
if (s->data_parser.parsing_frame != nullptr) {
|
3005
3063
|
s->data_parser.parsing_frame->Unref();
|
3006
3064
|
s->data_parser.parsing_frame = nullptr;
|
@@ -3009,14 +3067,14 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3009
3067
|
if (bs->remaining_bytes_ != 0) {
|
3010
3068
|
s->byte_stream_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
3011
3069
|
"Truncated message", &s->read_closed_error, 1);
|
3012
|
-
|
3013
|
-
|
3070
|
+
ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
|
3071
|
+
GRPC_ERROR_REF(s->byte_stream_error));
|
3014
3072
|
if (s->data_parser.parsing_frame != nullptr) {
|
3015
3073
|
s->data_parser.parsing_frame->Unref();
|
3016
3074
|
s->data_parser.parsing_frame = nullptr;
|
3017
3075
|
}
|
3018
3076
|
} else {
|
3019
|
-
|
3077
|
+
// Should never reach here.
|
3020
3078
|
GPR_ASSERT(false);
|
3021
3079
|
}
|
3022
3080
|
} else {
|
@@ -3042,45 +3100,10 @@ bool Chttp2IncomingByteStream::Next(size_t max_size_hint,
|
|
3042
3100
|
}
|
3043
3101
|
}
|
3044
3102
|
|
3045
|
-
|
3046
|
-
GPR_DEBUG_ASSERT(stream_->stream_decompression_method !=
|
3047
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS);
|
3048
|
-
if (!stream_->stream_decompression_ctx) {
|
3049
|
-
stream_->stream_decompression_ctx = grpc_stream_compression_context_create(
|
3050
|
-
stream_->stream_decompression_method);
|
3051
|
-
}
|
3052
|
-
}
|
3053
|
-
|
3054
|
-
grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3103
|
+
grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3055
3104
|
GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
|
3056
|
-
|
3105
|
+
grpc_error_handle error;
|
3057
3106
|
if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
|
3058
|
-
if (!stream_->unprocessed_incoming_frames_decompressed &&
|
3059
|
-
stream_->stream_decompression_method !=
|
3060
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
3061
|
-
bool end_of_context;
|
3062
|
-
MaybeCreateStreamDecompressionCtx();
|
3063
|
-
if (!grpc_stream_decompress(stream_->stream_decompression_ctx,
|
3064
|
-
&stream_->unprocessed_incoming_frames_buffer,
|
3065
|
-
&stream_->decompressed_data_buffer, nullptr,
|
3066
|
-
MAX_SIZE_T, &end_of_context)) {
|
3067
|
-
error =
|
3068
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream decompression error.");
|
3069
|
-
return error;
|
3070
|
-
}
|
3071
|
-
GPR_ASSERT(stream_->unprocessed_incoming_frames_buffer.length == 0);
|
3072
|
-
grpc_slice_buffer_swap(&stream_->unprocessed_incoming_frames_buffer,
|
3073
|
-
&stream_->decompressed_data_buffer);
|
3074
|
-
stream_->unprocessed_incoming_frames_decompressed = true;
|
3075
|
-
if (end_of_context) {
|
3076
|
-
grpc_stream_compression_context_destroy(
|
3077
|
-
stream_->stream_decompression_ctx);
|
3078
|
-
stream_->stream_decompression_ctx = nullptr;
|
3079
|
-
}
|
3080
|
-
if (stream_->unprocessed_incoming_frames_buffer.length == 0) {
|
3081
|
-
*slice = grpc_empty_slice();
|
3082
|
-
}
|
3083
|
-
}
|
3084
3107
|
error = grpc_deframe_unprocessed_incoming_frames(
|
3085
3108
|
&stream_->data_parser, stream_,
|
3086
3109
|
&stream_->unprocessed_incoming_frames_buffer, slice, nullptr);
|
@@ -3096,20 +3119,19 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
|
3096
3119
|
return GRPC_ERROR_NONE;
|
3097
3120
|
}
|
3098
3121
|
|
3099
|
-
void Chttp2IncomingByteStream::PublishError(
|
3122
|
+
void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
|
3100
3123
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
3101
|
-
|
3102
|
-
GRPC_ERROR_REF(error));
|
3124
|
+
ExecCtx::Run(DEBUG_LOCATION, stream_->on_next, GRPC_ERROR_REF(error));
|
3103
3125
|
stream_->on_next = nullptr;
|
3104
3126
|
GRPC_ERROR_UNREF(stream_->byte_stream_error);
|
3105
3127
|
stream_->byte_stream_error = GRPC_ERROR_REF(error);
|
3106
3128
|
grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
|
3107
3129
|
}
|
3108
3130
|
|
3109
|
-
|
3110
|
-
|
3131
|
+
grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
3132
|
+
grpc_slice* slice_out) {
|
3111
3133
|
if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
|
3112
|
-
|
3134
|
+
grpc_error_handle error =
|
3113
3135
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
|
3114
3136
|
transport_->combiner->Run(&stream_->reset_byte_stream,
|
3115
3137
|
GRPC_ERROR_REF(error));
|
@@ -3124,8 +3146,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
|
3124
3146
|
}
|
3125
3147
|
}
|
3126
3148
|
|
3127
|
-
|
3128
|
-
|
3149
|
+
grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
|
3150
|
+
bool reset_on_error) {
|
3129
3151
|
if (error == GRPC_ERROR_NONE) {
|
3130
3152
|
if (remaining_bytes_ != 0) {
|
3131
3153
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
|
@@ -3139,24 +3161,33 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
|
|
3139
3161
|
return error;
|
3140
3162
|
}
|
3141
3163
|
|
3142
|
-
void Chttp2IncomingByteStream::Shutdown(
|
3164
|
+
void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
|
3143
3165
|
GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
|
3144
3166
|
}
|
3145
3167
|
|
3146
3168
|
} // namespace grpc_core
|
3147
3169
|
|
3148
|
-
|
3149
|
-
|
3150
|
-
|
3170
|
+
//
|
3171
|
+
// RESOURCE QUOTAS
|
3172
|
+
//
|
3151
3173
|
|
3152
3174
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3153
3175
|
if (!t->benign_reclaimer_registered) {
|
3154
3176
|
t->benign_reclaimer_registered = true;
|
3155
3177
|
GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3178
|
+
t->memory_owner.PostReclaimer(
|
3179
|
+
grpc_core::ReclamationPass::kBenign,
|
3180
|
+
[t](absl::optional<grpc_core::ReclamationSweep> sweep) {
|
3181
|
+
if (sweep.has_value()) {
|
3182
|
+
GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3183
|
+
benign_reclaimer_locked, t,
|
3184
|
+
grpc_schedule_on_exec_ctx);
|
3185
|
+
t->active_reclamation = std::move(*sweep);
|
3186
|
+
t->combiner->Run(&t->benign_reclaimer_locked, GRPC_ERROR_NONE);
|
3187
|
+
} else {
|
3188
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3189
|
+
}
|
3190
|
+
});
|
3160
3191
|
}
|
3161
3192
|
}
|
3162
3193
|
|
@@ -3164,29 +3195,31 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
3164
3195
|
if (!t->destructive_reclaimer_registered) {
|
3165
3196
|
t->destructive_reclaimer_registered = true;
|
3166
3197
|
GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
3170
|
-
|
3198
|
+
t->memory_owner.PostReclaimer(
|
3199
|
+
grpc_core::ReclamationPass::kDestructive,
|
3200
|
+
[t](absl::optional<grpc_core::ReclamationSweep> sweep) {
|
3201
|
+
if (sweep.has_value()) {
|
3202
|
+
GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3203
|
+
destructive_reclaimer_locked, t,
|
3204
|
+
grpc_schedule_on_exec_ctx);
|
3205
|
+
t->active_reclamation = std::move(*sweep);
|
3206
|
+
t->combiner->Run(&t->destructive_reclaimer_locked, GRPC_ERROR_NONE);
|
3207
|
+
} else {
|
3208
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3209
|
+
}
|
3210
|
+
});
|
3171
3211
|
}
|
3172
3212
|
}
|
3173
3213
|
|
3174
|
-
static void
|
3175
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3176
|
-
t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3177
|
-
benign_reclaimer_locked, t, nullptr),
|
3178
|
-
GRPC_ERROR_REF(error));
|
3179
|
-
}
|
3180
|
-
|
3181
|
-
static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
3214
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3182
3215
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3183
3216
|
if (error == GRPC_ERROR_NONE &&
|
3184
3217
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3185
|
-
|
3186
|
-
|
3218
|
+
// Channel with no active streams: send a goaway to try and make it
|
3219
|
+
// disconnect cleanly
|
3187
3220
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3188
3221
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3189
|
-
t->peer_string);
|
3222
|
+
t->peer_string.c_str());
|
3190
3223
|
}
|
3191
3224
|
send_goaway(t,
|
3192
3225
|
grpc_error_set_int(
|
@@ -3197,24 +3230,17 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3197
3230
|
gpr_log(GPR_INFO,
|
3198
3231
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3199
3232
|
" streams",
|
3200
|
-
t->peer_string
|
3233
|
+
t->peer_string.c_str(),
|
3234
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3201
3235
|
}
|
3202
3236
|
t->benign_reclaimer_registered = false;
|
3203
3237
|
if (error != GRPC_ERROR_CANCELLED) {
|
3204
|
-
|
3205
|
-
grpc_endpoint_get_resource_user(t->ep));
|
3238
|
+
t->active_reclamation.Finish();
|
3206
3239
|
}
|
3207
3240
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3208
3241
|
}
|
3209
3242
|
|
3210
|
-
static void
|
3211
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3212
|
-
t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3213
|
-
destructive_reclaimer_locked, t, nullptr),
|
3214
|
-
GRPC_ERROR_REF(error));
|
3215
|
-
}
|
3216
|
-
|
3217
|
-
static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
3243
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3218
3244
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3219
3245
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3220
3246
|
t->destructive_reclaimer_registered = false;
|
@@ -3222,8 +3248,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3222
3248
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3223
3249
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3224
3250
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3225
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3226
|
-
s->id);
|
3251
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3252
|
+
t->peer_string.c_str(), s->id);
|
3227
3253
|
}
|
3228
3254
|
grpc_chttp2_cancel_stream(
|
3229
3255
|
t, s,
|
@@ -3231,23 +3257,22 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3231
3257
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3232
3258
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3233
3259
|
if (n > 1) {
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
-
|
3260
|
+
// Since we cancel one stream per destructive reclamation, if
|
3261
|
+
// there are more streams left, we can immediately post a new
|
3262
|
+
// reclaimer in case the resource quota needs to free more
|
3263
|
+
// memory
|
3238
3264
|
post_destructive_reclaimer(t);
|
3239
3265
|
}
|
3240
3266
|
}
|
3241
3267
|
if (error != GRPC_ERROR_CANCELLED) {
|
3242
|
-
|
3243
|
-
grpc_endpoint_get_resource_user(t->ep));
|
3268
|
+
t->active_reclamation.Finish();
|
3244
3269
|
}
|
3245
3270
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3246
3271
|
}
|
3247
3272
|
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3273
|
+
//
|
3274
|
+
// MONITORING
|
3275
|
+
//
|
3251
3276
|
|
3252
3277
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3253
3278
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3278,12 +3303,16 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3278
3303
|
return "TRANSPORT_FLOW_CONTROL";
|
3279
3304
|
case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
|
3280
3305
|
return "SEND_SETTINGS";
|
3306
|
+
case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
|
3307
|
+
return "SETTINGS_ACK";
|
3281
3308
|
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
|
3282
3309
|
return "FLOW_CONTROL_UNSTALLED_BY_SETTING";
|
3283
3310
|
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE:
|
3284
3311
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3285
3312
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3286
3313
|
return "APPLICATION_PING";
|
3314
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3315
|
+
return "BDP_PING";
|
3287
3316
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3288
3317
|
return "KEEPALIVE_PING";
|
3289
3318
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|
@@ -3303,6 +3332,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
|
|
3303
3332
|
static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
|
3304
3333
|
"chttp2",
|
3305
3334
|
init_stream,
|
3335
|
+
nullptr,
|
3306
3336
|
set_pollset,
|
3307
3337
|
set_pollset_set,
|
3308
3338
|
perform_stream_op,
|
@@ -3321,16 +3351,14 @@ grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
|
|
3321
3351
|
}
|
3322
3352
|
|
3323
3353
|
grpc_transport* grpc_create_chttp2_transport(
|
3324
|
-
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client
|
3325
|
-
|
3326
|
-
auto t =
|
3327
|
-
new grpc_chttp2_transport(channel_args, ep, is_client, resource_user);
|
3354
|
+
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client) {
|
3355
|
+
auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
|
3328
3356
|
return &t->base;
|
3329
3357
|
}
|
3330
3358
|
|
3331
3359
|
void grpc_chttp2_transport_start_reading(
|
3332
3360
|
grpc_transport* transport, grpc_slice_buffer* read_buffer,
|
3333
|
-
grpc_closure* notify_on_receive_settings) {
|
3361
|
+
grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
|
3334
3362
|
grpc_chttp2_transport* t =
|
3335
3363
|
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
3336
3364
|
GRPC_CHTTP2_REF_TRANSPORT(
|
@@ -3340,6 +3368,7 @@ void grpc_chttp2_transport_start_reading(
|
|
3340
3368
|
gpr_free(read_buffer);
|
3341
3369
|
}
|
3342
3370
|
t->notify_on_receive_settings = notify_on_receive_settings;
|
3371
|
+
t->notify_on_close = notify_on_close;
|
3343
3372
|
t->combiner->Run(
|
3344
3373
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
3345
3374
|
GRPC_ERROR_NONE);
|