grpc 1.48.0 → 1.56.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +501 -260
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +99 -36
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +44 -3
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -13
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
- data/include/grpc/impl/codegen/atm_windows.h +3 -108
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -790
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -766
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +838 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +7 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/json.h +218 -0
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +31 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +164 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +34 -28
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +7 -6
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +4 -4
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -1
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +30 -41
- data/src/core/ext/filters/client_channel/backup_poller.h +24 -27
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
- data/src/core/ext/filters/client_channel/client_channel.cc +1135 -1201
- data/src/core/ext/filters/client_channel/client_channel.h +170 -195
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +36 -37
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +22 -22
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -46
- data/src/core/ext/filters/client_channel/client_channel_factory.h +5 -13
- data/src/core/ext/filters/client_channel/client_channel_internal.h +77 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -34
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -26
- data/src/core/ext/filters/client_channel/config_selector.h +34 -56
- data/src/core/ext/filters/client_channel/connector.h +13 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +10 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +21 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +125 -112
- data/src/core/ext/filters/client_channel/http_proxy.h +36 -32
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +29 -21
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +27 -18
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +66 -132
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +40 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +325 -360
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +9 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +21 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +19 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +22 -24
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +30 -104
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +436 -311
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +69 -8
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +61 -56
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +261 -401
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +288 -310
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +32 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +561 -626
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +60 -53
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +94 -57
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +198 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +1002 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +176 -186
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +166 -176
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +159 -262
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +183 -215
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +391 -444
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +814 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +363 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +21 -21
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +13 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +456 -286
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +42 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +92 -87
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +303 -232
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +69 -57
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +549 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -46
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -20
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +15 -4
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +127 -246
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +122 -67
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +25 -18
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +8 -19
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +431 -341
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +19 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +220 -295
- data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
- data/src/core/ext/filters/client_channel/retry_service_config.cc +195 -225
- data/src/core/ext/filters/client_channel/retry_service_config.h +22 -28
- data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
- data/src/core/ext/filters/client_channel/retry_throttle.h +29 -28
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -53
- data/src/core/ext/filters/client_channel/subchannel.cc +211 -450
- data/src/core/ext/filters/client_channel/subchannel.h +42 -96
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +4 -4
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +37 -46
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +38 -42
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +11 -8
- data/src/core/ext/filters/deadline/deadline_filter.cc +78 -69
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -13
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +26 -20
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +12 -8
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -13
- data/src/core/ext/filters/http/client/http_client_filter.cc +48 -46
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +20 -21
- data/src/core/ext/filters/http/client_authority_filter.h +22 -22
- data/src/core/ext/filters/http/http_filters_plugin.cc +30 -57
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +323 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +55 -55
- data/src/core/ext/filters/http/server/http_server_filter.h +22 -22
- data/src/core/ext/filters/message_size/message_size_filter.cc +183 -290
- data/src/core/ext/filters/message_size/message_size_filter.h +72 -23
- data/src/core/ext/filters/rbac/rbac_filter.cc +16 -15
- data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +831 -536
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +7 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -11
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +15 -21
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +220 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +81 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +108 -130
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +30 -24
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +221 -242
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +25 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -33
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +42 -38
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +35 -31
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +808 -730
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +45 -24
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +180 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -45
- data/src/core/ext/transport/chttp2/transport/frame.h +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -32
- data/src/core/ext/transport/chttp2/transport/frame_data.h +27 -27
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +38 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +28 -33
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +21 -24
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +30 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +39 -37
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +22 -22
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +24 -21
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +21 -21
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +212 -365
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +328 -160
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +13 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +500 -754
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +42 -47
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +41 -28
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -37
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
- data/src/core/ext/transport/chttp2/transport/internal.h +224 -193
- data/src/core/ext/transport/chttp2/transport/parsing.cc +307 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +33 -33
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +37 -34
- data/src/core/ext/transport/chttp2/transport/writing.cc +94 -84
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +184 -232
- data/src/core/ext/transport/inproc/inproc_transport.h +21 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +435 -182
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -59
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +502 -220
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +93 -377
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +468 -1881
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +535 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +2796 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +152 -47
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +176 -49
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +82 -38
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +52 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +52 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +574 -244
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +49 -30
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +49 -30
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +795 -406
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -256
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1954 -858
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +298 -148
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +537 -348
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2136 -1171
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +49 -30
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +351 -232
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +948 -480
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +154 -72
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +631 -213
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +54 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -219
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1263 -598
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +694 -292
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +41 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +152 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +841 -440
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +222 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1152 -485
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +64 -37
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -207
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1156 -620
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +44 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +179 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +127 -57
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +48 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +193 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +147 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +55 -37
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +277 -127
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +147 -84
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +479 -227
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +579 -227
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +39 -26
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +198 -94
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +1072 -358
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +893 -375
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +49 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +186 -89
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +95 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +75 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +521 -249
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +542 -246
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +263 -121
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1083 -374
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +83 -48
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +656 -232
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1317 -722
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5948 -2306
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +177 -85
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +223 -117
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +847 -369
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +57 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +49 -30
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +78 -49
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +114 -43
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +263 -100
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +122 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +39 -26
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +116 -70
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +8 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -15
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +118 -75
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +104 -46
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +77 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +170 -108
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +369 -167
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +47 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -58
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -18
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +257 -67
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +75 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +476 -283
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2259 -1015
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +246 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +36 -17
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +148 -55
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +39 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -94
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +948 -349
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +162 -101
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -109
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +855 -408
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +118 -54
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +325 -85
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1705 -299
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +197 -76
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +131 -84
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +531 -239
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +59 -34
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +141 -69
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +60 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +146 -51
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +141 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +95 -40
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +54 -32
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +41 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +113 -70
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +117 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +170 -76
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +123 -57
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +151 -91
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +228 -121
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +228 -131
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +86 -53
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +32 -18
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +63 -34
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +103 -53
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +16 -9
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +52 -26
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +65 -41
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +979 -451
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +995 -484
- data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
- data/src/core/ext/upb-generated/google/api/http.upb.h +297 -121
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +99 -37
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +42 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1037 -442
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3972 -1411
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +42 -22
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +220 -103
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +42 -22
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +193 -107
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +99 -37
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +170 -92
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +122 -60
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +960 -416
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +84 -51
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +53 -30
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +442 -218
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +161 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +884 -299
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +167 -104
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +59 -34
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +59 -34
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +49 -30
- data/src/core/ext/upb-generated/validate/validate.upb.c +846 -456
- data/src/core/ext/upb-generated/validate/validate.upb.h +4439 -1908
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +167 -104
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +59 -34
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +153 -91
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +49 -30
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +32 -18
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +56 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +122 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +104 -63
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +56 -29
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +49 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +66 -42
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +177 -79
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +69 -38
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +86 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +227 -54
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -13
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +93 -34
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +75 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +270 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +39 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +78 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +78 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +289 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +539 -295
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +160 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +740 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +61 -37
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +170 -76
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +82 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +240 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +85 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +246 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -13
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +49 -30
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +55 -54
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +68 -275
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -90
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +126 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +108 -108
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +251 -236
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +233 -223
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +96 -76
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +188 -184
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +82 -76
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +194 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +32 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +8 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +17 -17
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +72 -67
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +161 -131
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +26 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +55 -42
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -32
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +162 -129
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +21 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +83 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +8 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +744 -668
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +26 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +151 -140
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +17 -15
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +21 -19
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +47 -26
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +54 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +497 -468
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -133
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +151 -147
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +157 -85
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +41 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -114
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +30 -29
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +328 -270
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +10 -10
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +61 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +41 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +46 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -8
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
- data/src/core/ext/xds/certificate_provider_store.cc +58 -3
- data/src/core/ext/xds/certificate_provider_store.h +12 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +36 -50
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +18 -13
- data/src/core/ext/xds/upb_utils.h +4 -25
- data/src/core/ext/xds/xds_api.cc +117 -198
- data/src/core/ext/xds/xds_api.h +32 -36
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap.cc +7 -552
- data/src/core/ext/xds/xds_bootstrap.h +41 -94
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +374 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +189 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_certificate_provider.h +13 -4
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +7 -7
- data/src/core/ext/xds/xds_channel_stack_modifier.h +12 -4
- data/src/core/ext/xds/xds_client.cc +830 -1348
- data/src/core/ext/xds/xds_client.h +46 -64
- data/src/core/ext/xds/xds_client_grpc.cc +235 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +50 -36
- data/src/core/ext/xds/xds_client_stats.h +46 -41
- data/src/core/ext/xds/xds_cluster.cc +396 -246
- data/src/core/ext/xds/xds_cluster.h +60 -43
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +62 -77
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +50 -25
- data/src/core/ext/xds/xds_common_types.cc +234 -130
- data/src/core/ext/xds/xds_common_types.h +24 -19
- data/src/core/ext/xds/xds_endpoint.cc +263 -164
- data/src/core/ext/xds/xds_endpoint.h +19 -15
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +109 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +72 -62
- data/src/core/ext/xds/xds_http_fault_filter.h +21 -28
- data/src/core/ext/xds/xds_http_filters.cc +65 -73
- data/src/core/ext/xds/xds_http_filters.h +78 -27
- data/src/core/ext/xds/xds_http_rbac_filter.cc +307 -295
- data/src/core/ext/xds/xds_http_rbac_filter.h +21 -23
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +222 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +59 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +215 -171
- data/src/core/ext/xds/xds_lb_policy_registry.h +15 -16
- data/src/core/ext/xds/xds_listener.cc +549 -478
- data/src/core/ext/xds/xds_listener.h +51 -54
- data/src/core/ext/xds/xds_resource_type.h +28 -22
- data/src/core/ext/xds/xds_resource_type_impl.h +13 -16
- data/src/core/ext/xds/xds_route_config.cc +610 -576
- data/src/core/ext/xds/xds_route_config.h +69 -44
- data/src/core/ext/xds/xds_routing.cc +7 -9
- data/src/core/ext/xds/xds_routing.h +12 -12
- data/src/core/ext/xds/xds_server_config_fetcher.cc +184 -184
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +358 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +49 -46
- data/src/core/lib/address_utils/parse_address.h +43 -40
- data/src/core/lib/address_utils/sockaddr_utils.cc +30 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +36 -36
- data/src/core/lib/avl/avl.h +59 -32
- data/src/core/lib/backoff/backoff.cc +19 -21
- data/src/core/lib/backoff/backoff.h +20 -20
- data/src/core/lib/backoff/random_early_detection.cc +31 -0
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +5 -7
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +106 -34
- data/src/core/lib/channel/channel_args.cc +188 -61
- data/src/core/lib/channel/channel_args.h +318 -112
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_fwd.h +3 -3
- data/src/core/lib/channel/channel_stack.cc +60 -58
- data/src/core/lib/channel/channel_stack.h +148 -135
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +17 -9
- data/src/core/lib/channel/channel_stack_builder_impl.cc +55 -26
- data/src/core/lib/channel/channel_stack_builder_impl.h +5 -3
- data/src/core/lib/channel/channel_trace.cc +40 -38
- data/src/core/lib/channel/channel_trace.h +22 -22
- data/src/core/lib/channel/channelz.cc +190 -173
- data/src/core/lib/channel/channelz.h +80 -64
- data/src/core/lib/channel/channelz_registry.cc +41 -37
- data/src/core/lib/channel/channelz_registry.h +21 -21
- data/src/core/lib/channel/connected_channel.cc +764 -67
- data/src/core/lib/channel/connected_channel.h +20 -24
- data/src/core/lib/channel/context.h +33 -22
- data/src/core/lib/channel/promise_based_filter.cc +1607 -295
- data/src/core/lib/channel/promise_based_filter.h +485 -104
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/channel/status_util.cc +62 -17
- data/src/core/lib/channel/status_util.h +39 -22
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +38 -48
- data/src/core/lib/compression/compression_internal.h +25 -25
- data/src/core/lib/compression/message_compress.cc +26 -26
- data/src/core/lib/compression/message_compress.h +27 -27
- data/src/core/lib/config/config_vars.cc +153 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +84 -38
- data/src/core/lib/config/load_config.cc +79 -0
- data/src/core/lib/config/load_config.h +55 -0
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/debug/histogram_view.h +37 -0
- data/src/core/lib/debug/stats.cc +47 -151
- data/src/core/lib/debug/stats.h +49 -57
- data/src/core/lib/debug/stats_data.cc +302 -646
- data/src/core/lib/debug/stats_data.h +295 -543
- data/src/core/lib/debug/trace.cc +56 -81
- data/src/core/lib/debug/trace.h +37 -54
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +15 -18
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -10
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +111 -0
- data/src/core/lib/event_engine/default_event_engine.h +73 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +32 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine_factory.h} +4 -12
- data/src/core/lib/event_engine/event_engine.cc +29 -36
- data/src/core/lib/event_engine/forkable.cc +106 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +12 -20
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/poller.h +62 -0
- data/src/core/lib/event_engine/posix.h +162 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +895 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +68 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +254 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1338 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +726 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +637 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +292 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +278 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +867 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +51 -52
- data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +29 -29
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/resolved_address.cc +21 -1
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +64 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +8 -7
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +256 -0
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +137 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +40 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → thready_event_engine/thready_event_engine.h} +51 -65
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/trace.cc +7 -0
- data/src/core/lib/event_engine/trace.h +22 -3
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +44 -0
- data/src/core/lib/event_engine/windows/iocp.cc +141 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +218 -0
- data/src/core/lib/event_engine/windows/win_socket.h +129 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +379 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +411 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +164 -0
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +156 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +185 -0
- data/src/core/lib/experiments/config.h +69 -0
- data/src/core/lib/experiments/experiments.cc +138 -0
- data/src/core/lib/experiments/experiments.h +134 -0
- data/src/core/lib/gpr/alloc.cc +19 -25
- data/src/core/lib/gpr/alloc.h +20 -20
- data/src/core/lib/gpr/{log_android.cc → android/log.cc} +22 -20
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/iphone/cpu.cc +44 -0
- data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +28 -23
- data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +24 -24
- data/src/core/lib/gpr/log.cc +42 -47
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +21 -20
- data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +23 -22
- data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +20 -19
- data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +24 -24
- data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +22 -34
- data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +40 -36
- data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +22 -20
- data/src/core/lib/gpr/spinlock.h +20 -20
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +61 -61
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +36 -40
- data/src/core/lib/gpr/time.cc +34 -30
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +21 -22
- data/src/core/lib/gpr/tmpfile.h +24 -24
- data/src/core/lib/gpr/useful.h +83 -30
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc → lib/gpr/windows/cpu.cc} +16 -11
- data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +25 -25
- data/src/core/lib/gpr/windows/string.cc +69 -0
- data/src/core/lib/gpr/windows/string_util.cc +55 -0
- data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +29 -27
- data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +25 -22
- data/src/core/lib/gpr/windows/tmpfile.cc +68 -0
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +20 -20
- data/src/core/lib/gprpp/bitset.h +30 -16
- data/src/core/lib/gprpp/chunked_vector.h +3 -3
- data/src/core/lib/gprpp/construct_destruct.h +3 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
- data/src/core/lib/gprpp/crash.cc +43 -0
- data/src/core/lib/gprpp/crash.h +37 -0
- data/src/core/lib/gprpp/debug_location.h +60 -31
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +53 -0
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +21 -21
- data/src/core/lib/gprpp/fork.cc +63 -61
- data/src/core/lib/gprpp/fork.h +29 -35
- data/src/core/lib/gprpp/host_port.cc +28 -26
- data/src/core/lib/gprpp/host_port.h +32 -31
- data/src/core/lib/gprpp/linux/env.cc +80 -0
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +21 -21
- data/src/core/lib/gprpp/match.h +3 -3
- data/src/core/lib/gprpp/memory.h +21 -21
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +21 -21
- data/src/core/lib/gprpp/no_destruct.h +95 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/orphanable.h +25 -24
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +75 -0
- data/src/core/lib/gprpp/posix/env.cc +47 -0
- data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +5 -4
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +75 -64
- data/src/core/lib/gprpp/ref_counted.h +54 -55
- data/src/core/lib/gprpp/ref_counted_ptr.h +41 -54
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/status_helper.cc +6 -4
- data/src/core/lib/gprpp/status_helper.h +9 -5
- data/src/core/lib/gprpp/strerror.cc +43 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +23 -23
- data/src/core/lib/gprpp/table.h +12 -4
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/thd.h +39 -23
- data/src/core/lib/gprpp/time.cc +37 -8
- data/src/core/lib/gprpp/time.h +69 -4
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +23 -25
- data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
- data/src/core/lib/gprpp/time_util.h +4 -4
- data/src/core/lib/gprpp/unique_type_name.h +21 -21
- data/src/core/lib/gprpp/validation_errors.cc +66 -0
- data/src/core/lib/gprpp/validation_errors.h +134 -0
- data/src/core/lib/gprpp/windows/env.cc +56 -0
- data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +4 -2
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +28 -28
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/handshaker/proxy_mapper.h +53 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/format_request.cc +19 -18
- data/src/core/lib/http/format_request.h +20 -20
- data/src/core/lib/http/httpcli.cc +69 -84
- data/src/core/lib/http/httpcli.h +29 -29
- data/src/core/lib/http/httpcli_security_connector.cc +33 -36
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
- data/src/core/lib/http/parser.cc +76 -87
- data/src/core/lib/http/parser.h +35 -35
- data/src/core/lib/iomgr/block_annotate.h +23 -23
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +122 -101
- data/src/core/lib/iomgr/call_combiner.cc +32 -64
- data/src/core/lib/iomgr/call_combiner.h +26 -27
- data/src/core/lib/iomgr/cfstream_handle.cc +34 -37
- data/src/core/lib/iomgr/cfstream_handle.h +25 -25
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +95 -58
- data/src/core/lib/iomgr/combiner.cc +20 -39
- data/src/core/lib/iomgr/combiner.h +20 -20
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +49 -49
- data/src/core/lib/iomgr/endpoint_cfstream.cc +58 -53
- data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
- data/src/core/lib/iomgr/endpoint_pair.h +22 -22
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +36 -30
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +31 -22
- data/src/core/lib/iomgr/error.cc +49 -834
- data/src/core/lib/iomgr/error.h +45 -321
- data/src/core/lib/iomgr/error_cfstream.cc +18 -23
- data/src/core/lib/iomgr/error_cfstream.h +21 -21
- data/src/core/lib/iomgr/ev_apple.cc +33 -33
- data/src/core/lib/iomgr/ev_apple.h +21 -21
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +219 -236
- data/src/core/lib/iomgr/ev_epoll1_linux.h +20 -20
- data/src/core/lib/iomgr/ev_poll_posix.cc +231 -231
- data/src/core/lib/iomgr/ev_poll_posix.h +20 -20
- data/src/core/lib/iomgr/ev_posix.cc +47 -79
- data/src/core/lib/iomgr/ev_posix.h +88 -87
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +471 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.cc +34 -56
- data/src/core/lib/iomgr/exec_ctx.h +151 -175
- data/src/core/lib/iomgr/executor.cc +21 -31
- data/src/core/lib/iomgr/executor.h +27 -30
- data/src/core/lib/iomgr/fork_posix.cc +29 -26
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +20 -20
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/internal_errqueue.h +83 -83
- data/src/core/lib/iomgr/iocp_windows.cc +47 -26
- data/src/core/lib/iomgr/iocp_windows.h +32 -21
- data/src/core/lib/iomgr/iomgr.cc +29 -34
- data/src/core/lib/iomgr/iomgr.h +35 -35
- data/src/core/lib/iomgr/iomgr_fwd.h +4 -3
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +28 -28
- data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -20
- data/src/core/lib/iomgr/iomgr_windows.cc +32 -24
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +22 -22
- data/src/core/lib/iomgr/lockfree_event.cc +114 -131
- data/src/core/lib/iomgr/lockfree_event.h +23 -23
- data/src/core/lib/iomgr/nameser.h +86 -86
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +29 -29
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +55 -55
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +25 -26
- data/src/core/lib/iomgr/pollset_set_windows.cc +27 -27
- data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
- data/src/core/lib/iomgr/pollset_windows.cc +33 -32
- data/src/core/lib/iomgr/pollset_windows.h +24 -24
- data/src/core/lib/iomgr/port.h +34 -31
- data/src/core/lib/iomgr/python_util.h +24 -24
- data/src/core/lib/iomgr/resolve_address.cc +26 -20
- data/src/core/lib/iomgr/resolve_address.h +54 -31
- data/src/core/lib/iomgr/resolve_address_impl.h +5 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +74 -49
- data/src/core/lib/iomgr/resolve_address_posix.h +23 -10
- data/src/core/lib/iomgr/resolve_address_windows.cc +59 -26
- data/src/core/lib/iomgr/resolve_address_windows.h +23 -10
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +23 -23
- data/src/core/lib/iomgr/sockaddr_posix.h +21 -21
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +20 -18
- data/src/core/lib/iomgr/sockaddr_windows.h +21 -21
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +39 -39
- data/src/core/lib/iomgr/socket_utils.h +27 -27
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +99 -104
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +106 -19
- data/src/core/lib/iomgr/socket_utils_posix.h +179 -84
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +97 -42
- data/src/core/lib/iomgr/socket_windows.h +68 -63
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- data/src/core/lib/iomgr/tcp_client.cc +23 -24
- data/src/core/lib/iomgr/tcp_client.h +39 -39
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +43 -35
- data/src/core/lib/iomgr/tcp_client_posix.cc +117 -100
- data/src/core/lib/iomgr/tcp_client_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_client_windows.cc +57 -48
- data/src/core/lib/iomgr/tcp_posix.cc +448 -350
- data/src/core/lib/iomgr/tcp_posix.h +32 -30
- data/src/core/lib/iomgr/tcp_server.cc +33 -24
- data/src/core/lib/iomgr/tcp_server.h +78 -69
- data/src/core/lib/iomgr/tcp_server_posix.cc +390 -126
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +93 -58
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +280 -123
- data/src/core/lib/iomgr/tcp_windows.cc +121 -102
- data/src/core/lib/iomgr/tcp_windows.h +34 -35
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +68 -68
- data/src/core/lib/iomgr/timer_generic.cc +142 -150
- data/src/core/lib/iomgr/timer_generic.h +21 -21
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +22 -22
- data/src/core/lib/iomgr/timer_manager.cc +31 -31
- data/src/core/lib/iomgr/timer_manager.h +27 -27
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -52
- data/src/core/lib/json/json.h +21 -240
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/json/json_args.h} +13 -11
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +216 -0
- data/src/core/lib/json/json_object_loader.h +646 -0
- data/src/core/lib/json/json_reader.cc +181 -129
- data/src/core/lib/json/json_reader.h +34 -0
- data/src/core/lib/json/json_util.cc +23 -55
- data/src/core/lib/json/json_util.h +12 -11
- data/src/core/lib/json/json_writer.cc +80 -81
- data/src/core/{ext/xds/xds_resource_type.cc → lib/json/json_writer.h} +11 -11
- data/src/core/lib/load_balancing/lb_policy.cc +98 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +49 -36
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +143 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +9 -14
- data/src/core/lib/matchers/matchers.cc +10 -9
- data/src/core/lib/matchers/matchers.h +5 -4
- data/src/core/lib/promise/activity.cc +43 -6
- data/src/core/lib/promise/activity.h +159 -48
- data/src/core/lib/promise/arena_promise.h +105 -72
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/context.h +17 -10
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +28 -33
- data/src/core/lib/promise/detail/promise_factory.h +66 -14
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +31 -3
- data/src/core/lib/promise/detail/switch.h +21 -21
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +204 -0
- data/src/core/lib/promise/interceptor_list.h +329 -0
- data/src/core/lib/promise/latch.h +197 -23
- data/src/core/lib/promise/loop.h +22 -16
- data/src/core/lib/promise/map.h +11 -6
- data/src/core/lib/promise/party.cc +304 -0
- data/src/core/lib/promise/party.h +508 -0
- data/src/core/lib/promise/pipe.h +762 -0
- data/src/core/lib/promise/poll.h +177 -11
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/promise.h +6 -7
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +32 -12
- data/src/core/lib/promise/sleep.cc +53 -43
- data/src/core/lib/promise/sleep.h +34 -26
- data/src/core/lib/promise/trace.cc +20 -0
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +39 -21
- data/src/core/lib/resolver/resolver.cc +17 -64
- data/src/core/lib/resolver/resolver.h +18 -18
- data/src/core/lib/resolver/resolver_factory.h +6 -7
- data/src/core/lib/resolver/resolver_registry.cc +16 -1
- data/src/core/lib/resolver/resolver_registry.h +5 -6
- data/src/core/lib/resolver/server_address.cc +29 -39
- data/src/core/lib/resolver/server_address.h +25 -37
- data/src/core/lib/resource_quota/api.cc +10 -2
- data/src/core/lib/resource_quota/api.h +10 -4
- data/src/core/lib/resource_quota/arena.cc +101 -21
- data/src/core/lib/resource_quota/arena.h +310 -23
- data/src/core/lib/resource_quota/memory_quota.cc +280 -59
- data/src/core/lib/resource_quota/memory_quota.h +165 -36
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/resource_quota/resource_quota.h +4 -4
- data/src/core/lib/resource_quota/thread_quota.h +3 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -4
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -4
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +21 -4
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -4
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -4
- data/src/core/lib/security/authorization/matchers.cc +38 -32
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +39 -8
- data/src/core/lib/security/authorization/rbac_policy.h +22 -5
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +11 -7
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +50 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +76 -0
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +43 -33
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +19 -20
- data/src/core/lib/security/credentials/alts/alts_credentials.h +56 -57
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +25 -29
- data/src/core/lib/security/credentials/composite/composite_credentials.h +25 -28
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +53 -48
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +131 -120
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +121 -121
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +40 -43
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +51 -54
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -31
- data/src/core/lib/security/credentials/fake/fake_credentials.h +37 -42
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +22 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +105 -156
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +22 -25
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +19 -18
- data/src/core/lib/security/credentials/iam/iam_credentials.h +20 -20
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +6 -7
- data/src/core/lib/security/credentials/jwt/json_token.cc +54 -43
- data/src/core/lib/security/credentials/jwt/json_token.h +35 -35
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +27 -26
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +22 -22
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +125 -124
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +47 -47
- data/src/core/lib/security/credentials/local/local_credentials.cc +20 -21
- data/src/core/lib/security/credentials/local/local_credentials.h +26 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +89 -91
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -24
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -25
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +31 -40
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +23 -24
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +7 -14
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +48 -47
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -43
- data/src/core/lib/security/credentials/tls/tls_credentials.h +24 -25
- data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
- data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +6 -6
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +43 -61
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +43 -44
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +58 -78
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +24 -25
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -15
- data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +24 -31
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +22 -23
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +43 -45
- data/src/core/lib/security/security_connector/local/local_security_connector.h +44 -45
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +40 -39
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +40 -43
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/ssl_utils.cc +48 -64
- data/src/core/lib/security/security_connector/ssl_utils.h +35 -35
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +59 -53
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +26 -26
- data/src/core/lib/security/transport/auth_filters.h +46 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +36 -26
- data/src/core/lib/security/transport/secure_endpoint.cc +58 -62
- data/src/core/lib/security/transport/secure_endpoint.h +25 -25
- data/src/core/lib/security/transport/security_handshaker.cc +111 -114
- data/src/core/lib/security/transport/security_handshaker.h +24 -23
- data/src/core/lib/security/transport/server_auth_filter.cc +160 -274
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +20 -20
- data/src/core/lib/security/util/json_util.cc +27 -27
- data/src/core/lib/security/util/json_util.h +20 -20
- data/src/core/lib/service_config/service_config.h +15 -4
- data/src/core/lib/service_config/service_config_call_data.h +54 -19
- data/src/core/lib/service_config/service_config_impl.cc +113 -152
- data/src/core/lib/service_config/service_config_impl.h +19 -24
- data/src/core/lib/service_config/service_config_parser.cc +10 -28
- data/src/core/lib/service_config/service_config_parser.h +13 -21
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +32 -32
- data/src/core/lib/slice/percent_encoding.cc +21 -30
- data/src/core/lib/slice/percent_encoding.h +28 -28
- data/src/core/lib/slice/slice.cc +58 -46
- data/src/core/lib/slice/slice.h +59 -18
- data/src/core/lib/slice/slice_buffer.cc +63 -59
- data/src/core/lib/slice/slice_buffer.h +35 -4
- data/src/core/lib/slice/slice_internal.h +34 -42
- data/src/core/lib/slice/slice_refcount.cc +3 -18
- data/src/core/lib/slice/slice_refcount.h +53 -18
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +21 -21
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +25 -25
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/byte_buffer.cc +22 -23
- data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
- data/src/core/lib/surface/call.cc +2305 -547
- data/src/core/lib/surface/call.h +123 -42
- data/src/core/lib/surface/call_details.cc +20 -21
- data/src/core/lib/surface/call_log_batch.cc +19 -18
- data/src/core/lib/surface/call_test_only.h +33 -33
- data/src/core/lib/surface/call_trace.cc +123 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +65 -69
- data/src/core/lib/surface/channel.h +43 -35
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +20 -20
- data/src/core/lib/surface/channel_ping.cc +19 -19
- data/src/core/lib/surface/channel_stack_type.cc +21 -17
- data/src/core/lib/surface/channel_stack_type.h +22 -20
- data/src/core/lib/surface/completion_queue.cc +195 -221
- data/src/core/lib/surface/completion_queue.h +37 -40
- data/src/core/lib/surface/completion_queue_factory.cc +33 -28
- data/src/core/lib/surface/completion_queue_factory.h +22 -22
- data/src/core/lib/surface/event_string.cc +18 -17
- data/src/core/lib/surface/event_string.h +22 -22
- data/src/core/lib/surface/init.cc +44 -72
- data/src/core/lib/surface/init.h +20 -20
- data/src/core/lib/surface/init_internally.cc +25 -0
- data/src/core/lib/surface/init_internally.h +37 -0
- data/src/core/lib/surface/lame_client.cc +33 -29
- data/src/core/lib/surface/lame_client.h +22 -22
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +371 -130
- data/src/core/lib/surface/server.h +20 -21
- data/src/core/lib/surface/validate_metadata.cc +64 -74
- data/src/core/lib/surface/validate_metadata.h +30 -21
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/batch_builder.cc +182 -0
- data/src/core/lib/transport/batch_builder.h +480 -0
- data/src/core/lib/transport/bdp_estimator.cc +25 -27
- data/src/core/lib/transport/bdp_estimator.h +31 -28
- data/src/core/lib/transport/connectivity_state.cc +19 -20
- data/src/core/lib/transport/connectivity_state.h +23 -23
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/error_utils.cc +51 -81
- data/src/core/lib/transport/error_utils.h +24 -24
- data/src/core/lib/transport/handshaker.cc +66 -54
- data/src/core/lib/transport/handshaker.h +51 -47
- data/src/core/lib/transport/handshaker_factory.h +49 -24
- data/src/core/lib/transport/handshaker_registry.cc +27 -20
- data/src/core/lib/transport/handshaker_registry.h +25 -28
- data/src/core/lib/transport/http2_errors.h +22 -22
- data/src/core/lib/transport/http_connect_handshaker.cc +56 -57
- data/src/core/lib/transport/http_connect_handshaker.h +21 -21
- data/src/core/lib/transport/metadata_batch.cc +31 -10
- data/src/core/lib/transport/metadata_batch.h +252 -65
- data/src/core/lib/transport/metadata_compression_traits.h +67 -0
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +23 -11
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +27 -27
- data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
- data/src/core/lib/transport/status_conversion.cc +23 -25
- data/src/core/lib/transport/status_conversion.h +22 -22
- data/src/core/lib/transport/tcp_connect_handshaker.cc +34 -42
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +28 -23
- data/src/core/lib/transport/timeout_encoding.h +20 -20
- data/src/core/lib/transport/transport.cc +113 -43
- data/src/core/lib/transport/transport.h +275 -218
- data/src/core/lib/transport/transport_fwd.h +3 -3
- data/src/core/lib/transport/transport_impl.h +53 -47
- data/src/core/lib/transport/transport_op_string.cc +75 -63
- data/src/core/lib/uri/uri_parser.cc +1 -1
- data/src/core/lib/uri/uri_parser.h +3 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +55 -79
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +22 -39
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +336 -336
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +73 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +137 -100
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +109 -104
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +52 -44
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
- data/src/core/tsi/fake_transport_security.cc +133 -109
- data/src/core/tsi/fake_transport_security.h +33 -33
- data/src/core/tsi/local_transport_security.cc +43 -38
- data/src/core/tsi/local_transport_security.h +33 -33
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +31 -22
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +302 -371
- data/src/core/tsi/ssl_transport_security.h +206 -203
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +27 -27
- data/src/core/tsi/transport_security.cc +44 -32
- data/src/core/tsi/transport_security.h +49 -48
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +41 -41
- data/src/core/tsi/transport_security_interface.h +344 -332
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +57 -11
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/channel_spec.rb +5 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
- data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
- data/third_party/abseil-cpp/absl/base/config.h +45 -4
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
- data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +26 -0
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
- data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
- data/third_party/abseil-cpp/absl/status/status.cc +19 -12
- data/third_party/abseil-cpp/absl/status/status.h +2 -2
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
- data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +330 -70
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +253 -158
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/span.h +29 -7
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +177 -196
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +135 -90
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +797 -793
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +529 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +17 -11
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +37 -51
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +13 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +40 -27
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +34 -37
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +22 -11
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-ppc64le.c → cpu_arm_openbsd.c} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +22 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +229 -102
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +31 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +36 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +24 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +49 -49
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +92 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +108 -86
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +55 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +55 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +72 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +62 -51
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +12 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +44 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +3 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +170 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +69 -61
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +22 -68
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +42 -314
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +244 -139
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +144 -205
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +593 -421
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +52 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +192 -18
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +391 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +91 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +204 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +833 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +633 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/{asn1/a_print.c → rsa_extra/internal.h} +15 -21
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +128 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +418 -133
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +116 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +701 -87
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +63 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +285 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +68 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +132 -151
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +790 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +220 -254
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +136 -270
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +528 -616
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +164 -181
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +186 -203
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1864 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +380 -480
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +266 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +329 -416
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +79 -171
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +294 -344
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +342 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +120 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +228 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +130 -135
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +652 -691
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +90 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1063 -1145
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +217 -191
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +50 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +29 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +69 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +7 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +98 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +18 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +285 -92
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +381 -287
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +9 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +57 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2075 -1407
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +242 -214
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -35
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +53 -34
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +200 -121
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -12
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +47 -69
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +217 -226
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +78 -101
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +106 -142
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -35
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +167 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +41 -32
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +7 -44
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +25 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- data/third_party/upb/upb/alloc.h +36 -0
- data/third_party/upb/upb/arena.h +36 -0
- data/third_party/upb/upb/array.h +36 -0
- data/third_party/upb/upb/base/descriptor_constants.h +104 -0
- data/third_party/upb/upb/base/log2.h +57 -0
- data/third_party/upb/upb/base/status.c +81 -0
- data/third_party/upb/upb/base/status.h +66 -0
- data/third_party/upb/upb/base/string_view.h +75 -0
- data/third_party/upb/upb/collections/array.c +145 -0
- data/third_party/upb/upb/collections/array.h +85 -0
- data/third_party/upb/upb/collections/array_internal.h +135 -0
- data/third_party/upb/upb/collections/map.c +135 -0
- data/third_party/upb/upb/collections/map.h +135 -0
- data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
- data/third_party/upb/upb/collections/map_internal.h +170 -0
- data/third_party/upb/upb/collections/map_sorter.c +166 -0
- data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
- data/third_party/upb/upb/collections/message_value.h +65 -0
- data/third_party/upb/upb/decode.h +3 -61
- data/third_party/upb/upb/def.h +4 -377
- data/third_party/upb/upb/def.hpp +3 -408
- data/third_party/upb/upb/encode.h +3 -38
- data/third_party/upb/upb/extension_registry.h +35 -0
- data/third_party/upb/upb/{table.c → hash/common.c} +51 -109
- data/third_party/upb/upb/hash/common.h +199 -0
- data/third_party/upb/upb/hash/int_table.h +102 -0
- data/third_party/upb/upb/hash/str_table.h +161 -0
- data/third_party/upb/upb/json/decode.c +1477 -0
- data/third_party/upb/upb/json/decode.h +52 -0
- data/third_party/upb/upb/{json_encode.c → json/encode.c} +74 -46
- data/third_party/upb/upb/json/encode.h +70 -0
- data/third_party/upb/upb/json_decode.h +36 -0
- data/third_party/upb/upb/json_encode.h +4 -30
- data/third_party/upb/upb/lex/atoi.c +68 -0
- data/third_party/upb/upb/lex/atoi.h +53 -0
- data/third_party/upb/upb/lex/round_trip.c +67 -0
- data/third_party/upb/upb/{upb_internal.h → lex/round_trip.h} +17 -30
- data/third_party/upb/upb/lex/strtod.c +97 -0
- data/third_party/upb/upb/lex/strtod.h +46 -0
- data/third_party/upb/upb/lex/unicode.c +57 -0
- data/third_party/upb/upb/lex/unicode.h +77 -0
- data/third_party/upb/upb/map.h +36 -0
- data/third_party/upb/upb/mem/alloc.c +47 -0
- data/third_party/upb/upb/mem/alloc.h +98 -0
- data/third_party/upb/upb/mem/arena.c +367 -0
- data/third_party/upb/upb/mem/arena.h +160 -0
- data/third_party/upb/upb/mem/arena_internal.h +114 -0
- data/third_party/upb/upb/message/accessors.c +68 -0
- data/third_party/upb/upb/message/accessors.h +379 -0
- data/third_party/upb/upb/message/accessors_internal.h +325 -0
- data/third_party/upb/upb/message/extension_internal.h +83 -0
- data/third_party/upb/upb/message/internal.h +135 -0
- data/third_party/upb/upb/message/message.c +180 -0
- data/third_party/upb/upb/message/message.h +69 -0
- data/third_party/upb/upb/mini_table/common.c +128 -0
- data/third_party/upb/upb/mini_table/common.h +170 -0
- data/third_party/upb/upb/mini_table/common_internal.h +111 -0
- data/third_party/upb/upb/mini_table/decode.c +1127 -0
- data/third_party/upb/upb/mini_table/decode.h +179 -0
- data/third_party/upb/upb/mini_table/encode.c +300 -0
- data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
- data/third_party/upb/upb/mini_table/encode_internal.hpp +136 -0
- data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
- data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
- data/third_party/upb/upb/mini_table/extension_registry.c +96 -0
- data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
- data/third_party/upb/upb/mini_table/field_internal.h +192 -0
- data/third_party/upb/upb/mini_table/file_internal.h +47 -0
- data/third_party/upb/upb/mini_table/message_internal.h +136 -0
- data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
- data/third_party/upb/upb/mini_table/types.h +40 -0
- data/third_party/upb/upb/mini_table.h +36 -0
- data/third_party/upb/upb/msg.h +3 -81
- data/third_party/upb/upb/port/atomic.h +101 -0
- data/third_party/upb/upb/{port_def.inc → port/def.inc} +96 -28
- data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +14 -3
- data/third_party/upb/upb/port/vsnprintf_compat.h +50 -0
- data/third_party/upb/upb/reflection/common.h +67 -0
- data/third_party/upb/upb/reflection/def.h +42 -0
- data/third_party/upb/upb/reflection/def.hpp +610 -0
- data/third_party/upb/upb/reflection/def_builder.c +357 -0
- data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
- data/third_party/upb/upb/reflection/def_pool.c +462 -0
- data/third_party/upb/upb/reflection/def_pool.h +108 -0
- data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
- data/third_party/upb/upb/reflection/def_type.c +50 -0
- data/third_party/upb/upb/reflection/def_type.h +81 -0
- data/third_party/upb/upb/reflection/desc_state.c +53 -0
- data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
- data/third_party/upb/upb/reflection/enum_def.c +310 -0
- data/third_party/upb/upb/reflection/enum_def.h +80 -0
- data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
- data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
- data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/extension_range.c +93 -0
- data/third_party/upb/upb/reflection/extension_range.h +55 -0
- data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
- data/third_party/upb/upb/reflection/field_def.c +930 -0
- data/third_party/upb/upb/reflection/field_def.h +91 -0
- data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
- data/third_party/upb/upb/reflection/file_def.c +370 -0
- data/third_party/upb/upb/reflection/file_def.h +77 -0
- data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/message.c +233 -0
- data/third_party/upb/upb/reflection/message.h +102 -0
- data/third_party/upb/upb/reflection/message.hpp +37 -0
- data/third_party/upb/upb/reflection/message_def.c +718 -0
- data/third_party/upb/upb/reflection/message_def.h +174 -0
- data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
- data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
- data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/method_def.c +124 -0
- data/third_party/upb/upb/reflection/method_def.h +59 -0
- data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
- data/third_party/upb/upb/reflection/oneof_def.c +226 -0
- data/third_party/upb/upb/reflection/oneof_def.h +66 -0
- data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/service_def.c +128 -0
- data/third_party/upb/upb/reflection/service_def.h +60 -0
- data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
- data/third_party/upb/upb/reflection.h +4 -188
- data/third_party/upb/upb/reflection.hpp +3 -7
- data/third_party/upb/upb/status.h +36 -0
- data/third_party/upb/upb/string_view.h +36 -0
- data/third_party/upb/upb/{text_encode.c → text/encode.c} +75 -70
- data/third_party/upb/upb/text/encode.h +69 -0
- data/third_party/upb/upb/text_encode.h +4 -32
- data/third_party/upb/upb/upb.h +6 -340
- data/third_party/upb/upb/upb.hpp +10 -18
- data/third_party/upb/upb/wire/common.h +44 -0
- data/third_party/upb/upb/wire/common_internal.h +50 -0
- data/third_party/upb/upb/wire/decode.c +1343 -0
- data/third_party/upb/upb/wire/decode.h +108 -0
- data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
- data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
- data/third_party/upb/upb/{decode_internal.h → wire/decode_internal.h} +44 -92
- data/third_party/upb/upb/{encode.c → wire/encode.c} +130 -102
- data/third_party/upb/upb/wire/encode.h +92 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
- data/third_party/upb/upb/wire/reader.c +67 -0
- data/third_party/upb/upb/wire/reader.h +227 -0
- data/third_party/upb/upb/wire/swap_internal.h +63 -0
- data/third_party/upb/upb/wire/types.h +41 -0
- data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
- data/third_party/utf8_range/utf8_range.h +21 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +597 -174
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -176
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/filters/client_channel/lb_policy.cc +0 -134
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -180
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -182
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -334
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -324
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
- data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
- data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +0 -159
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +0 -81
- data/src/core/lib/event_engine/iomgr_engine/timer.h +0 -193
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +0 -56
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +0 -254
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +0 -111
- data/src/core/lib/event_engine/promise.h +0 -69
- data/src/core/lib/gpr/cpu_iphone.cc +0 -44
- data/src/core/lib/gpr/cpu_windows.cc +0 -33
- data/src/core/lib/gpr/env.h +0 -40
- data/src/core/lib/gpr/env_linux.cc +0 -75
- data/src/core/lib/gpr/env_posix.cc +0 -46
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/string_util_windows.cc +0 -82
- data/src/core/lib/gpr/string_windows.cc +0 -69
- data/src/core/lib/gpr/string_windows.h +0 -32
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/gpr/tmpfile_windows.cc +0 -69
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_custom.h +0 -29
- data/src/core/lib/gprpp/global_config_env.cc +0 -138
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/promise/intra_activity_waiter.h +0 -49
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -30
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
- data/third_party/upb/third_party/utf8_range/utf8_range.h +0 -9
- data/third_party/upb/upb/decode.c +0 -1125
- data/third_party/upb/upb/def.c +0 -3261
- data/third_party/upb/upb/msg.c +0 -428
- data/third_party/upb/upb/msg_internal.h +0 -831
- data/third_party/upb/upb/reflection.c +0 -480
- data/third_party/upb/upb/table_internal.h +0 -385
- data/third_party/upb/upb/upb.c +0 -362
- /data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- /data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -21,14 +21,15 @@
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <limits.h>
|
23
23
|
#include <stdio.h>
|
24
|
-
#include <stdlib.h>
|
25
24
|
#include <string.h>
|
26
25
|
|
27
26
|
#include <algorithm>
|
27
|
+
#include <initializer_list>
|
28
28
|
#include <memory>
|
29
29
|
#include <new>
|
30
30
|
#include <string>
|
31
31
|
#include <utility>
|
32
|
+
#include <vector>
|
32
33
|
|
33
34
|
#include "absl/base/attributes.h"
|
34
35
|
#include "absl/status/status.h"
|
@@ -37,16 +38,17 @@
|
|
37
38
|
#include "absl/strings/str_format.h"
|
38
39
|
#include "absl/strings/string_view.h"
|
39
40
|
#include "absl/types/optional.h"
|
40
|
-
#include "absl/types/variant.h"
|
41
41
|
|
42
|
-
#include <grpc/
|
42
|
+
#include <grpc/event_engine/event_engine.h>
|
43
|
+
#include <grpc/grpc.h>
|
44
|
+
#include <grpc/impl/connectivity_state.h>
|
43
45
|
#include <grpc/slice_buffer.h>
|
44
46
|
#include <grpc/status.h>
|
45
47
|
#include <grpc/support/alloc.h>
|
46
|
-
#include <grpc/support/atm.h>
|
47
48
|
#include <grpc/support/log.h>
|
49
|
+
#include <grpc/support/time.h>
|
48
50
|
|
49
|
-
#include "src/core/ext/transport/chttp2/transport/
|
51
|
+
#include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
|
50
52
|
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
51
53
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
52
54
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
@@ -54,15 +56,20 @@
|
|
54
56
|
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
|
55
57
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
56
58
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
59
|
+
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
57
60
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
58
61
|
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
|
59
62
|
#include "src/core/ext/transport/chttp2/transport/varint.h"
|
63
|
+
#include "src/core/lib/channel/call_tracer.h"
|
60
64
|
#include "src/core/lib/channel/channel_args.h"
|
65
|
+
#include "src/core/lib/channel/context.h"
|
61
66
|
#include "src/core/lib/debug/stats.h"
|
67
|
+
#include "src/core/lib/debug/stats_data.h"
|
68
|
+
#include "src/core/lib/experiments/experiments.h"
|
62
69
|
#include "src/core/lib/gpr/useful.h"
|
63
70
|
#include "src/core/lib/gprpp/bitset.h"
|
71
|
+
#include "src/core/lib/gprpp/crash.h"
|
64
72
|
#include "src/core/lib/gprpp/debug_location.h"
|
65
|
-
#include "src/core/lib/gprpp/global_config_env.h"
|
66
73
|
#include "src/core/lib/gprpp/ref_counted.h"
|
67
74
|
#include "src/core/lib/gprpp/status_helper.h"
|
68
75
|
#include "src/core/lib/gprpp/time.h"
|
@@ -71,11 +78,8 @@
|
|
71
78
|
#include "src/core/lib/iomgr/error.h"
|
72
79
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
73
80
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
74
|
-
#include "src/core/lib/iomgr/
|
75
|
-
#include "src/core/lib/iomgr/timer.h"
|
76
|
-
#include "src/core/lib/profiling/timers.h"
|
81
|
+
#include "src/core/lib/iomgr/port.h"
|
77
82
|
#include "src/core/lib/promise/poll.h"
|
78
|
-
#include "src/core/lib/resource_quota/api.h"
|
79
83
|
#include "src/core/lib/resource_quota/arena.h"
|
80
84
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
81
85
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
@@ -83,7 +87,6 @@
|
|
83
87
|
#include "src/core/lib/slice/slice.h"
|
84
88
|
#include "src/core/lib/slice/slice_buffer.h"
|
85
89
|
#include "src/core/lib/slice/slice_internal.h"
|
86
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
87
90
|
#include "src/core/lib/transport/bdp_estimator.h"
|
88
91
|
#include "src/core/lib/transport/connectivity_state.h"
|
89
92
|
#include "src/core/lib/transport/error_utils.h"
|
@@ -93,25 +96,24 @@
|
|
93
96
|
#include "src/core/lib/transport/transport.h"
|
94
97
|
#include "src/core/lib/transport/transport_impl.h"
|
95
98
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
"on the peer's memory pressure which is reflected in its max http2 frame "
|
100
|
-
"size.");
|
99
|
+
#ifdef GRPC_POSIX_SOCKET_TCP
|
100
|
+
#include "src/core/lib/iomgr/ev_posix.h"
|
101
|
+
#endif
|
101
102
|
|
102
103
|
#define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
|
103
104
|
#define MAX_WINDOW 0x7fffffffu
|
104
105
|
#define MAX_WRITE_BUFFER_SIZE (64 * 1024 * 1024)
|
105
|
-
#define DEFAULT_MAX_HEADER_LIST_SIZE (
|
106
|
+
#define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
|
107
|
+
#define DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT (8 * 1024)
|
106
108
|
|
107
109
|
#define DEFAULT_CLIENT_KEEPALIVE_TIME_MS INT_MAX
|
108
|
-
#define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000
|
109
|
-
#define DEFAULT_SERVER_KEEPALIVE_TIME_MS 7200000
|
110
|
-
#define DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS 20000
|
110
|
+
#define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
|
111
|
+
#define DEFAULT_SERVER_KEEPALIVE_TIME_MS 7200000 // 2 hours
|
112
|
+
#define DEFAULT_SERVER_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
|
111
113
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
112
114
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
113
115
|
|
114
|
-
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000
|
116
|
+
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 // 5 minutes
|
115
117
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
116
118
|
#define DEFAULT_MAX_PING_STRIKES 2
|
117
119
|
|
@@ -136,7 +138,6 @@ static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
|
136
138
|
static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
|
137
139
|
|
138
140
|
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
|
139
|
-
grpc_core::TraceFlag grpc_http_trace(false, "http");
|
140
141
|
grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
141
142
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
142
143
|
"chttp2_refcount");
|
@@ -181,24 +182,43 @@ static void start_bdp_ping(void* tp, grpc_error_handle error);
|
|
181
182
|
static void finish_bdp_ping(void* tp, grpc_error_handle error);
|
182
183
|
static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
|
183
184
|
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
|
184
|
-
static void next_bdp_ping_timer_expired(
|
185
|
-
static void next_bdp_ping_timer_expired_locked(
|
186
|
-
|
185
|
+
static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t);
|
186
|
+
static void next_bdp_ping_timer_expired_locked(
|
187
|
+
void* tp, GRPC_UNUSED grpc_error_handle error);
|
187
188
|
|
188
189
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
|
189
190
|
static void send_ping_locked(grpc_chttp2_transport* t,
|
190
191
|
grpc_closure* on_initiate, grpc_closure* on_ack);
|
191
|
-
static void retry_initiate_ping_locked(void* tp,
|
192
|
+
static void retry_initiate_ping_locked(void* tp,
|
193
|
+
GRPC_UNUSED grpc_error_handle error);
|
192
194
|
|
193
195
|
// keepalive-relevant functions
|
194
|
-
static void init_keepalive_ping(
|
195
|
-
static void init_keepalive_ping_locked(void* arg,
|
196
|
+
static void init_keepalive_ping(grpc_chttp2_transport* t);
|
197
|
+
static void init_keepalive_ping_locked(void* arg,
|
198
|
+
GRPC_UNUSED grpc_error_handle error);
|
196
199
|
static void start_keepalive_ping(void* arg, grpc_error_handle error);
|
197
200
|
static void finish_keepalive_ping(void* arg, grpc_error_handle error);
|
198
201
|
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
199
202
|
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
200
|
-
static void keepalive_watchdog_fired(
|
201
|
-
static void keepalive_watchdog_fired_locked(
|
203
|
+
static void keepalive_watchdog_fired(grpc_chttp2_transport* t);
|
204
|
+
static void keepalive_watchdog_fired_locked(
|
205
|
+
void* arg, GRPC_UNUSED grpc_error_handle error);
|
206
|
+
static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t);
|
207
|
+
|
208
|
+
namespace {
|
209
|
+
grpc_core::CallTracerInterface* CallTracerIfEnabled(grpc_chttp2_stream* s) {
|
210
|
+
if (s->context == nullptr || !grpc_core::IsTraceRecordCallopsEnabled()) {
|
211
|
+
return nullptr;
|
212
|
+
}
|
213
|
+
return static_cast<grpc_core::CallTracerInterface*>(
|
214
|
+
static_cast<grpc_call_context_element*>(
|
215
|
+
s->context)[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE]
|
216
|
+
.value);
|
217
|
+
}
|
218
|
+
|
219
|
+
grpc_core::WriteTimestampsCallback g_write_timestamps_callback = nullptr;
|
220
|
+
grpc_core::CopyContextFn g_get_copied_context_fn = nullptr;
|
221
|
+
} // namespace
|
202
222
|
|
203
223
|
namespace grpc_core {
|
204
224
|
|
@@ -224,6 +244,40 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
|
|
224
244
|
test_only_disable_transient_failure_state_notification = disable;
|
225
245
|
}
|
226
246
|
|
247
|
+
void GrpcHttp2SetWriteTimestampsCallback(WriteTimestampsCallback fn) {
|
248
|
+
g_write_timestamps_callback = fn;
|
249
|
+
}
|
250
|
+
|
251
|
+
void GrpcHttp2SetCopyContextFn(CopyContextFn fn) {
|
252
|
+
g_get_copied_context_fn = fn;
|
253
|
+
}
|
254
|
+
|
255
|
+
WriteTimestampsCallback GrpcHttp2GetWriteTimestampsCallback() {
|
256
|
+
return g_write_timestamps_callback;
|
257
|
+
}
|
258
|
+
|
259
|
+
CopyContextFn GrpcHttp2GetCopyContextFn() { return g_get_copied_context_fn; }
|
260
|
+
|
261
|
+
// For each entry in the passed ContextList, it executes the function set using
|
262
|
+
// GrpcHttp2SetWriteTimestampsCallback method with each context in the list
|
263
|
+
// and \a ts. It also deletes/frees up the passed ContextList after this
|
264
|
+
// operation.
|
265
|
+
void ForEachContextListEntryExecute(void* arg, Timestamps* ts,
|
266
|
+
grpc_error_handle error) {
|
267
|
+
ContextList* context_list = reinterpret_cast<ContextList*>(arg);
|
268
|
+
if (!context_list) {
|
269
|
+
return;
|
270
|
+
}
|
271
|
+
for (auto it = context_list->begin(); it != context_list->end(); it++) {
|
272
|
+
ContextListEntry& entry = (*it);
|
273
|
+
if (ts) {
|
274
|
+
ts->byte_offset = static_cast<uint32_t>(entry.ByteOffsetInStream());
|
275
|
+
}
|
276
|
+
g_write_timestamps_callback(entry.TraceContext(), ts, error);
|
277
|
+
}
|
278
|
+
delete context_list;
|
279
|
+
}
|
280
|
+
|
227
281
|
} // namespace grpc_core
|
228
282
|
|
229
283
|
//
|
@@ -233,25 +287,27 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
|
|
233
287
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
234
288
|
size_t i;
|
235
289
|
|
290
|
+
event_engine.reset();
|
291
|
+
|
236
292
|
if (channelz_socket != nullptr) {
|
237
293
|
channelz_socket.reset();
|
238
294
|
}
|
239
295
|
|
240
296
|
grpc_endpoint_destroy(ep);
|
241
297
|
|
242
|
-
|
298
|
+
grpc_slice_buffer_destroy(&qbuf);
|
243
299
|
|
244
|
-
|
300
|
+
grpc_slice_buffer_destroy(&outbuf);
|
245
301
|
|
246
|
-
grpc_error_handle error =
|
247
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
|
302
|
+
grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
|
248
303
|
// ContextList::Execute follows semantics of a callback function and does not
|
249
304
|
// take a ref on error
|
250
|
-
|
251
|
-
|
305
|
+
if (cl != nullptr) {
|
306
|
+
grpc_core::ForEachContextListEntryExecute(cl, nullptr, error);
|
307
|
+
}
|
252
308
|
cl = nullptr;
|
253
309
|
|
254
|
-
|
310
|
+
grpc_slice_buffer_destroy(&read_buffer);
|
255
311
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
256
312
|
|
257
313
|
for (i = 0; i < STREAM_LIST_COUNT; i++) {
|
@@ -259,16 +315,13 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
259
315
|
GPR_ASSERT(lists[i].tail == nullptr);
|
260
316
|
}
|
261
317
|
|
262
|
-
GRPC_ERROR_UNREF(goaway_error);
|
263
|
-
|
264
318
|
GPR_ASSERT(grpc_chttp2_stream_map_size(&stream_map) == 0);
|
265
319
|
|
266
320
|
grpc_chttp2_stream_map_destroy(&stream_map);
|
267
321
|
|
268
322
|
GRPC_COMBINER_UNREF(combiner, "chttp2_transport");
|
269
323
|
|
270
|
-
cancel_pings(this,
|
271
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"));
|
324
|
+
cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
|
272
325
|
|
273
326
|
while (write_cb_pool) {
|
274
327
|
grpc_chttp2_write_cb* next = write_cb_pool->next;
|
@@ -276,7 +329,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
276
329
|
write_cb_pool = next;
|
277
330
|
}
|
278
331
|
|
279
|
-
GRPC_ERROR_UNREF(closed_with_error);
|
280
332
|
gpr_free(ping_acks);
|
281
333
|
if (grpc_core::test_only_destruct_callback != nullptr) {
|
282
334
|
grpc_core::test_only_destruct_callback();
|
@@ -286,147 +338,177 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
286
338
|
static const grpc_transport_vtable* get_vtable(void);
|
287
339
|
|
288
340
|
static void read_channel_args(grpc_chttp2_transport* t,
|
289
|
-
const
|
341
|
+
const grpc_core::ChannelArgs& channel_args,
|
290
342
|
bool is_client) {
|
291
|
-
|
292
|
-
|
293
|
-
|
343
|
+
const int initial_sequence_number =
|
344
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER).value_or(-1);
|
345
|
+
if (initial_sequence_number > 0) {
|
346
|
+
if ((t->next_stream_id & 1) != (initial_sequence_number & 1)) {
|
347
|
+
gpr_log(GPR_ERROR, "%s: low bit must be %d on %s",
|
348
|
+
GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER, t->next_stream_id & 1,
|
349
|
+
is_client ? "client" : "server");
|
350
|
+
} else {
|
351
|
+
t->next_stream_id = static_cast<uint32_t>(initial_sequence_number);
|
352
|
+
}
|
353
|
+
}
|
294
354
|
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
355
|
+
const int max_hpack_table_size =
|
356
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER).value_or(-1);
|
357
|
+
if (max_hpack_table_size >= 0) {
|
358
|
+
t->hpack_compressor.SetMaxUsableSize(max_hpack_table_size);
|
359
|
+
}
|
360
|
+
|
361
|
+
t->ping_policy.max_pings_without_data =
|
362
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
|
363
|
+
.value_or(g_default_max_pings_without_data));
|
364
|
+
t->ping_policy.max_ping_strikes =
|
365
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PING_STRIKES)
|
366
|
+
.value_or(g_default_max_ping_strikes));
|
367
|
+
t->ping_policy.min_recv_ping_interval_without_data =
|
368
|
+
std::max(grpc_core::Duration::Zero(),
|
369
|
+
channel_args
|
370
|
+
.GetDurationFromIntMillis(
|
371
|
+
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)
|
372
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
373
|
+
g_default_min_recv_ping_interval_without_data_ms)));
|
374
|
+
t->write_buffer_size =
|
375
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)
|
376
|
+
.value_or(grpc_core::chttp2::kDefaultWindow));
|
377
|
+
t->keepalive_time =
|
378
|
+
std::max(grpc_core::Duration::Milliseconds(1),
|
379
|
+
channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
|
380
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
381
|
+
t->is_client ? g_default_client_keepalive_time_ms
|
382
|
+
: g_default_server_keepalive_time_ms)));
|
383
|
+
t->keepalive_timeout = std::max(
|
384
|
+
grpc_core::Duration::Zero(),
|
385
|
+
channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
|
386
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
387
|
+
t->is_client ? g_default_client_keepalive_timeout_ms
|
388
|
+
: g_default_server_keepalive_timeout_ms)));
|
389
|
+
t->keepalive_permit_without_calls =
|
390
|
+
channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
|
391
|
+
.value_or(false);
|
392
|
+
// Only send the prefered rx frame size http2 setting if we are instructed
|
393
|
+
// to auto size the buffers allocated at tcp level and we also can adjust
|
394
|
+
// sending frame size.
|
395
|
+
t->enable_preferred_rx_crypto_frame_advertisement =
|
396
|
+
channel_args
|
397
|
+
.GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
|
398
|
+
.value_or(false);
|
399
|
+
|
400
|
+
if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
|
401
|
+
.value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
|
402
|
+
t->channelz_socket =
|
403
|
+
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
404
|
+
std::string(grpc_endpoint_get_local_address(t->ep)),
|
405
|
+
std::string(t->peer_string.as_string_view()),
|
406
|
+
absl::StrCat(get_vtable()->name, " ",
|
407
|
+
t->peer_string.as_string_view()),
|
408
|
+
channel_args
|
409
|
+
.GetObjectRef<grpc_core::channelz::SocketNode::Security>());
|
410
|
+
}
|
411
|
+
|
412
|
+
t->ack_pings = channel_args.GetBool("grpc.http2.ack_pings").value_or(true);
|
413
|
+
|
414
|
+
const int soft_limit =
|
415
|
+
channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
|
416
|
+
if (soft_limit < 0) {
|
417
|
+
// Set soft limit to 0.8 * hard limit if this is larger than
|
418
|
+
// `DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT` and
|
419
|
+
// `GRPC_ARG_MAX_METADATA_SIZE` is not set.
|
420
|
+
t->max_header_list_size_soft_limit = std::max(
|
421
|
+
DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT,
|
422
|
+
static_cast<int>(
|
423
|
+
0.8 * channel_args.GetInt(GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE)
|
424
|
+
.value_or(-1)));
|
425
|
+
} else {
|
426
|
+
t->max_header_list_size_soft_limit = soft_limit;
|
427
|
+
}
|
428
|
+
|
429
|
+
static const struct {
|
430
|
+
absl::string_view channel_arg_name;
|
431
|
+
grpc_chttp2_setting_id setting_id;
|
432
|
+
int default_value;
|
433
|
+
int min;
|
434
|
+
int max;
|
435
|
+
bool availability[2] /* server, client */;
|
436
|
+
} settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
|
437
|
+
GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
|
438
|
+
-1,
|
439
|
+
0,
|
440
|
+
INT32_MAX,
|
441
|
+
{true, false}},
|
442
|
+
{GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
|
443
|
+
GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
|
444
|
+
-1,
|
445
|
+
0,
|
446
|
+
INT32_MAX,
|
447
|
+
{true, true}},
|
448
|
+
{GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE,
|
449
|
+
GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
|
450
|
+
-1,
|
451
|
+
0,
|
452
|
+
INT32_MAX,
|
453
|
+
{true, true}},
|
454
|
+
{GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
|
455
|
+
GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
|
456
|
+
-1,
|
457
|
+
16384,
|
458
|
+
16777215,
|
459
|
+
{true, true}},
|
460
|
+
{GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
|
461
|
+
GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
|
462
|
+
1,
|
463
|
+
0,
|
464
|
+
1,
|
465
|
+
{true, true}},
|
466
|
+
{GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
|
467
|
+
GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
|
468
|
+
-1,
|
469
|
+
5,
|
470
|
+
INT32_MAX,
|
471
|
+
{true, true}}};
|
472
|
+
|
473
|
+
for (size_t i = 0; i < GPR_ARRAY_SIZE(settings_map); i++) {
|
474
|
+
const auto& setting = settings_map[i];
|
475
|
+
if (setting.availability[is_client]) {
|
476
|
+
const int value = channel_args.GetInt(setting.channel_arg_name)
|
477
|
+
.value_or(setting.default_value);
|
315
478
|
if (value >= 0) {
|
316
|
-
t
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
&channel_args->args[i],
|
333
|
-
grpc_integer_options{
|
334
|
-
g_default_min_recv_ping_interval_without_data_ms, 0,
|
335
|
-
INT_MAX}));
|
336
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
337
|
-
GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
|
338
|
-
t->write_buffer_size = static_cast<uint32_t>(grpc_channel_arg_get_integer(
|
339
|
-
&channel_args->args[i], {0, 0, MAX_WRITE_BUFFER_SIZE}));
|
340
|
-
} else if (0 ==
|
341
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
|
342
|
-
const int value = grpc_channel_arg_get_integer(
|
343
|
-
&channel_args->args[i],
|
344
|
-
grpc_integer_options{t->is_client
|
345
|
-
? g_default_client_keepalive_time_ms
|
346
|
-
: g_default_server_keepalive_time_ms,
|
347
|
-
1, INT_MAX});
|
348
|
-
t->keepalive_time = value == INT_MAX
|
349
|
-
? grpc_core::Duration::Infinity()
|
350
|
-
: grpc_core::Duration::Milliseconds(value);
|
351
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
352
|
-
GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
|
353
|
-
const int value = grpc_channel_arg_get_integer(
|
354
|
-
&channel_args->args[i],
|
355
|
-
grpc_integer_options{t->is_client
|
356
|
-
? g_default_client_keepalive_timeout_ms
|
357
|
-
: g_default_server_keepalive_timeout_ms,
|
358
|
-
0, INT_MAX});
|
359
|
-
t->keepalive_timeout = value == INT_MAX
|
360
|
-
? grpc_core::Duration::Infinity()
|
361
|
-
: grpc_core::Duration::Milliseconds(value);
|
362
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
363
|
-
GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
|
364
|
-
t->keepalive_permit_without_calls = static_cast<uint32_t>(
|
365
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], {0, 0, 1}));
|
366
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
367
|
-
GRPC_ARG_OPTIMIZATION_TARGET)) {
|
368
|
-
gpr_log(GPR_INFO, "GRPC_ARG_OPTIMIZATION_TARGET is deprecated");
|
369
|
-
} else if (0 ==
|
370
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_ENABLE_CHANNELZ)) {
|
371
|
-
channelz_enabled = grpc_channel_arg_get_bool(
|
372
|
-
&channel_args->args[i], GRPC_ENABLE_CHANNELZ_DEFAULT);
|
373
|
-
} else {
|
374
|
-
static const struct {
|
375
|
-
const char* channel_arg_name;
|
376
|
-
grpc_chttp2_setting_id setting_id;
|
377
|
-
grpc_integer_options integer_options;
|
378
|
-
bool availability[2] /* server, client */;
|
379
|
-
} settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
|
380
|
-
GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
|
381
|
-
{-1, 0, INT32_MAX},
|
382
|
-
{true, false}},
|
383
|
-
{GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
|
384
|
-
GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
|
385
|
-
{-1, 0, INT32_MAX},
|
386
|
-
{true, true}},
|
387
|
-
{GRPC_ARG_MAX_METADATA_SIZE,
|
388
|
-
GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
|
389
|
-
{-1, 0, INT32_MAX},
|
390
|
-
{true, true}},
|
391
|
-
{GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
|
392
|
-
GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
|
393
|
-
{-1, 16384, 16777215},
|
394
|
-
{true, true}},
|
395
|
-
{GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
|
396
|
-
GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
|
397
|
-
{1, 0, 1},
|
398
|
-
{true, true}},
|
399
|
-
{GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
|
400
|
-
GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
|
401
|
-
{-1, 5, INT32_MAX},
|
402
|
-
{true, true}}};
|
403
|
-
for (j = 0; j < static_cast<int> GPR_ARRAY_SIZE(settings_map); j++) {
|
404
|
-
if (0 == strcmp(channel_args->args[i].key,
|
405
|
-
settings_map[j].channel_arg_name)) {
|
406
|
-
if (!settings_map[j].availability[is_client]) {
|
407
|
-
gpr_log(GPR_DEBUG, "%s is not available on %s",
|
408
|
-
settings_map[j].channel_arg_name,
|
409
|
-
is_client ? "clients" : "servers");
|
410
|
-
} else {
|
411
|
-
int value = grpc_channel_arg_get_integer(
|
412
|
-
&channel_args->args[i], settings_map[j].integer_options);
|
413
|
-
if (value >= 0) {
|
414
|
-
queue_setting_update(t, settings_map[j].setting_id,
|
415
|
-
static_cast<uint32_t>(value));
|
416
|
-
}
|
417
|
-
}
|
418
|
-
break;
|
479
|
+
queue_setting_update(t, setting.setting_id,
|
480
|
+
grpc_core::Clamp(value, setting.min, setting.max));
|
481
|
+
} else if (setting.setting_id ==
|
482
|
+
GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE) {
|
483
|
+
// Set value to 1.25 * soft limit if this is larger than
|
484
|
+
// `DEFAULT_MAX_HEADER_LIST_SIZE` and
|
485
|
+
// `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
|
486
|
+
const int soft_limit = channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE)
|
487
|
+
.value_or(setting.default_value);
|
488
|
+
const int value = (soft_limit >= 0 && soft_limit < (INT_MAX / 1.25))
|
489
|
+
? static_cast<int>(soft_limit * 1.25)
|
490
|
+
: soft_limit;
|
491
|
+
if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
|
492
|
+
queue_setting_update(
|
493
|
+
t, setting.setting_id,
|
494
|
+
grpc_core::Clamp(value, setting.min, setting.max));
|
419
495
|
}
|
420
496
|
}
|
497
|
+
} else if (channel_args.Contains(setting.channel_arg_name)) {
|
498
|
+
gpr_log(GPR_DEBUG, "%s is not available on %s",
|
499
|
+
std::string(setting.channel_arg_name).c_str(),
|
500
|
+
is_client ? "clients" : "servers");
|
421
501
|
}
|
422
502
|
}
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
503
|
+
|
504
|
+
if (t->enable_preferred_rx_crypto_frame_advertisement) {
|
505
|
+
const grpc_chttp2_setting_parameters* sp =
|
506
|
+
&grpc_chttp2_settings_parameters
|
507
|
+
[GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
|
508
|
+
queue_setting_update(
|
509
|
+
t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
|
510
|
+
grpc_core::Clamp(INT_MAX, static_cast<int>(sp->min_value),
|
511
|
+
static_cast<int>(sp->max_value)));
|
430
512
|
}
|
431
513
|
}
|
432
514
|
|
@@ -464,30 +546,36 @@ static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
|
464
546
|
g_default_min_recv_ping_interval_without_data_ms);
|
465
547
|
}
|
466
548
|
|
467
|
-
static void
|
549
|
+
static void init_keepalive_pings_if_enabled_locked(
|
550
|
+
void* arg, GRPC_UNUSED grpc_error_handle error) {
|
551
|
+
GPR_DEBUG_ASSERT(error.ok());
|
552
|
+
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
468
553
|
if (t->keepalive_time != grpc_core::Duration::Infinity()) {
|
469
554
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
|
470
555
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
556
|
+
t->keepalive_ping_timer_handle =
|
557
|
+
t->event_engine->RunAfter(t->keepalive_time, [t] {
|
558
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
559
|
+
grpc_core::ExecCtx exec_ctx;
|
560
|
+
init_keepalive_ping(t);
|
561
|
+
});
|
476
562
|
} else {
|
477
563
|
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
478
|
-
//
|
564
|
+
// inflight keepalive timers
|
479
565
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
480
566
|
}
|
481
567
|
}
|
482
568
|
|
483
569
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
484
|
-
const
|
570
|
+
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
571
|
+
bool is_client)
|
485
572
|
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
486
573
|
? "chttp2_refcount"
|
487
574
|
: nullptr),
|
488
575
|
ep(ep),
|
489
|
-
peer_string(
|
490
|
-
|
576
|
+
peer_string(
|
577
|
+
grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
|
578
|
+
memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
|
491
579
|
->memory_quota()
|
492
580
|
->CreateMemoryOwner(absl::StrCat(
|
493
581
|
grpc_endpoint_get_peer(ep), ":client_transport"))),
|
@@ -498,11 +586,15 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
498
586
|
GRPC_CHANNEL_READY),
|
499
587
|
is_client(is_client),
|
500
588
|
next_stream_id(is_client ? 1 : 2),
|
501
|
-
flow_control(
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0)
|
589
|
+
flow_control(
|
590
|
+
peer_string.as_string_view(),
|
591
|
+
channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
|
592
|
+
&memory_owner),
|
593
|
+
deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
|
594
|
+
event_engine(
|
595
|
+
channel_args
|
596
|
+
.GetObjectRef<grpc_event_engine::experimental::EventEngine>()) {
|
597
|
+
cl = new grpc_core::ContextList();
|
506
598
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
507
599
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
508
600
|
base.vtable = get_vtable();
|
@@ -543,19 +635,20 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
543
635
|
configure_transport_ping_policy(this);
|
544
636
|
init_transport_keepalive_settings(this);
|
545
637
|
|
546
|
-
|
547
|
-
read_channel_args(this, channel_args, is_client);
|
548
|
-
}
|
638
|
+
read_channel_args(this, channel_args, is_client);
|
549
639
|
|
550
640
|
// No pings allowed before receiving a header or data frame.
|
551
641
|
ping_state.pings_before_data_required = 0;
|
552
|
-
ping_state.is_delayed_ping_timer_set = false;
|
553
642
|
ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
|
554
643
|
|
555
644
|
ping_recv_state.last_ping_recv_time = grpc_core::Timestamp::InfPast();
|
556
645
|
ping_recv_state.ping_strikes = 0;
|
557
646
|
|
558
|
-
|
647
|
+
grpc_core::ExecCtx exec_ctx;
|
648
|
+
combiner->Run(
|
649
|
+
GRPC_CLOSURE_INIT(&init_keepalive_ping_locked,
|
650
|
+
init_keepalive_pings_if_enabled_locked, this, nullptr),
|
651
|
+
absl::OkStatus());
|
559
652
|
|
560
653
|
if (flow_control.bdp_probe()) {
|
561
654
|
bdp_ping_blocked = true;
|
@@ -568,15 +661,23 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
568
661
|
if (grpc_core::test_only_init_callback != nullptr) {
|
569
662
|
grpc_core::test_only_init_callback();
|
570
663
|
}
|
664
|
+
|
665
|
+
#ifdef GRPC_POSIX_SOCKET_TCP
|
666
|
+
closure_barrier_may_cover_write =
|
667
|
+
grpc_event_engine_run_in_background() &&
|
668
|
+
grpc_core::IsScheduleCancellationOverWriteEnabled()
|
669
|
+
? 0
|
670
|
+
: CLOSURE_BARRIER_MAY_COVER_WRITE;
|
671
|
+
#endif
|
571
672
|
}
|
572
673
|
|
573
674
|
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
574
675
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
575
676
|
t->destroying = 1;
|
576
677
|
close_transport_locked(
|
577
|
-
t, grpc_error_set_int(
|
578
|
-
|
579
|
-
|
678
|
+
t, grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
|
679
|
+
grpc_core::StatusIntProperty::kOccurredDuringWrite,
|
680
|
+
t->write_state));
|
580
681
|
t->memory_owner.Reset();
|
581
682
|
// Must be the last line.
|
582
683
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
|
@@ -585,45 +686,66 @@ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
|
585
686
|
static void destroy_transport(grpc_transport* gt) {
|
586
687
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
587
688
|
t->combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, nullptr),
|
588
|
-
|
689
|
+
absl::OkStatus());
|
589
690
|
}
|
590
691
|
|
591
692
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
592
693
|
grpc_error_handle error) {
|
593
|
-
end_all_the_calls(t,
|
594
|
-
cancel_pings(t,
|
595
|
-
if (
|
694
|
+
end_all_the_calls(t, error);
|
695
|
+
cancel_pings(t, error);
|
696
|
+
if (t->closed_with_error.ok()) {
|
596
697
|
if (!grpc_error_has_clear_grpc_status(error)) {
|
597
|
-
error =
|
598
|
-
|
698
|
+
error =
|
699
|
+
grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
|
700
|
+
GRPC_STATUS_UNAVAILABLE);
|
599
701
|
}
|
600
702
|
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
601
|
-
if (
|
703
|
+
if (t->close_transport_on_writes_finished.ok()) {
|
602
704
|
t->close_transport_on_writes_finished =
|
603
|
-
|
604
|
-
"Delayed close due to in-progress write");
|
705
|
+
GRPC_ERROR_CREATE("Delayed close due to in-progress write");
|
605
706
|
}
|
606
707
|
t->close_transport_on_writes_finished =
|
607
708
|
grpc_error_add_child(t->close_transport_on_writes_finished, error);
|
608
709
|
return;
|
609
710
|
}
|
610
|
-
GPR_ASSERT(!
|
611
|
-
t->closed_with_error =
|
711
|
+
GPR_ASSERT(!error.ok());
|
712
|
+
t->closed_with_error = error;
|
612
713
|
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
613
714
|
"close_transport");
|
614
|
-
if (t->ping_state.
|
615
|
-
|
715
|
+
if (t->ping_state.delayed_ping_timer_handle.has_value()) {
|
716
|
+
if (t->event_engine->Cancel(*t->ping_state.delayed_ping_timer_handle)) {
|
717
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
|
718
|
+
t->ping_state.delayed_ping_timer_handle.reset();
|
719
|
+
}
|
616
720
|
}
|
617
|
-
if (t->
|
618
|
-
|
721
|
+
if (t->next_bdp_ping_timer_handle.has_value()) {
|
722
|
+
if (t->event_engine->Cancel(*t->next_bdp_ping_timer_handle)) {
|
723
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
724
|
+
t->next_bdp_ping_timer_handle.reset();
|
725
|
+
}
|
619
726
|
}
|
620
727
|
switch (t->keepalive_state) {
|
621
728
|
case GRPC_CHTTP2_KEEPALIVE_STATE_WAITING:
|
622
|
-
|
729
|
+
if (t->keepalive_ping_timer_handle.has_value()) {
|
730
|
+
if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
|
731
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
732
|
+
t->keepalive_ping_timer_handle.reset();
|
733
|
+
}
|
734
|
+
}
|
623
735
|
break;
|
624
736
|
case GRPC_CHTTP2_KEEPALIVE_STATE_PINGING:
|
625
|
-
|
626
|
-
|
737
|
+
if (t->keepalive_ping_timer_handle.has_value()) {
|
738
|
+
if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
|
739
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
740
|
+
t->keepalive_ping_timer_handle.reset();
|
741
|
+
}
|
742
|
+
}
|
743
|
+
if (t->keepalive_watchdog_timer_handle.has_value()) {
|
744
|
+
if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
|
745
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
746
|
+
t->keepalive_watchdog_timer_handle.reset();
|
747
|
+
}
|
748
|
+
}
|
627
749
|
break;
|
628
750
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
629
751
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
@@ -637,19 +759,17 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
637
759
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
638
760
|
}
|
639
761
|
GPR_ASSERT(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE);
|
640
|
-
grpc_endpoint_shutdown(t->ep,
|
762
|
+
grpc_endpoint_shutdown(t->ep, error);
|
641
763
|
}
|
642
764
|
if (t->notify_on_receive_settings != nullptr) {
|
643
765
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
644
|
-
|
766
|
+
error);
|
645
767
|
t->notify_on_receive_settings = nullptr;
|
646
768
|
}
|
647
769
|
if (t->notify_on_close != nullptr) {
|
648
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
|
649
|
-
GRPC_ERROR_REF(error));
|
770
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close, error);
|
650
771
|
t->notify_on_close = nullptr;
|
651
772
|
}
|
652
|
-
GRPC_ERROR_UNREF(error);
|
653
773
|
}
|
654
774
|
|
655
775
|
#ifndef NDEBUG
|
@@ -688,6 +808,10 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
688
808
|
flow_control(&t->flow_control) {
|
689
809
|
if (server_data) {
|
690
810
|
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
811
|
+
if (grpc_http_trace.enabled()) {
|
812
|
+
gpr_log(GPR_DEBUG, "HTTP:%p/%p creating accept stream %d [from %p]", t,
|
813
|
+
this, id, server_data);
|
814
|
+
}
|
691
815
|
*t->accepting_stream = this;
|
692
816
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
693
817
|
post_destructive_reclaimer(t);
|
@@ -714,13 +838,13 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
714
838
|
GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
|
715
839
|
}
|
716
840
|
|
717
|
-
|
841
|
+
grpc_slice_buffer_destroy(&frame_storage);
|
718
842
|
|
719
843
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
720
844
|
if (GPR_UNLIKELY(included.is_set(i))) {
|
721
|
-
|
722
|
-
|
723
|
-
|
845
|
+
grpc_core::Crash(absl::StrFormat("%s stream %d still included in list %d",
|
846
|
+
t->is_client ? "client" : "server", id,
|
847
|
+
i));
|
724
848
|
}
|
725
849
|
}
|
726
850
|
|
@@ -729,38 +853,33 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
729
853
|
GPR_ASSERT(recv_initial_metadata_ready == nullptr);
|
730
854
|
GPR_ASSERT(recv_message_ready == nullptr);
|
731
855
|
GPR_ASSERT(recv_trailing_metadata_finished == nullptr);
|
732
|
-
|
733
|
-
GRPC_ERROR_UNREF(read_closed_error);
|
734
|
-
GRPC_ERROR_UNREF(write_closed_error);
|
856
|
+
grpc_slice_buffer_destroy(&flow_controlled_buffer);
|
735
857
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
|
736
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg,
|
858
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus());
|
737
859
|
}
|
738
860
|
|
739
861
|
static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
740
862
|
grpc_stream_refcount* refcount, const void* server_data,
|
741
863
|
grpc_core::Arena* arena) {
|
742
|
-
GPR_TIMER_SCOPE("init_stream", 0);
|
743
864
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
744
865
|
new (gs) grpc_chttp2_stream(t, refcount, server_data, arena);
|
745
866
|
return 0;
|
746
867
|
}
|
747
868
|
|
748
869
|
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
749
|
-
GPR_TIMER_SCOPE("destroy_stream", 0);
|
750
870
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
751
871
|
s->~grpc_chttp2_stream();
|
752
872
|
}
|
753
873
|
|
754
874
|
static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
|
755
875
|
grpc_closure* then_schedule_closure) {
|
756
|
-
GPR_TIMER_SCOPE("destroy_stream", 0);
|
757
876
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
758
877
|
grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
|
759
878
|
|
760
879
|
s->destroy_stream_arg = then_schedule_closure;
|
761
880
|
t->combiner->Run(
|
762
881
|
GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, nullptr),
|
763
|
-
|
882
|
+
absl::OkStatus());
|
764
883
|
}
|
765
884
|
|
766
885
|
grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
@@ -797,7 +916,8 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
797
916
|
grpc_chttp2_write_state st, const char* reason) {
|
798
917
|
GRPC_CHTTP2_IF_TRACING(
|
799
918
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
800
|
-
t->is_client ? "CLIENT" : "SERVER",
|
919
|
+
t->is_client ? "CLIENT" : "SERVER",
|
920
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
801
921
|
write_state_name(t->write_state), write_state_name(st), reason));
|
802
922
|
t->write_state = st;
|
803
923
|
// If the state is being reset back to idle, it means a write was just
|
@@ -808,93 +928,18 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
808
928
|
// from peer while we had some pending writes)
|
809
929
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
810
930
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
811
|
-
if (!
|
931
|
+
if (!t->close_transport_on_writes_finished.ok()) {
|
812
932
|
grpc_error_handle err = t->close_transport_on_writes_finished;
|
813
|
-
t->close_transport_on_writes_finished =
|
933
|
+
t->close_transport_on_writes_finished = absl::OkStatus();
|
814
934
|
close_transport_locked(t, err);
|
815
935
|
}
|
816
936
|
}
|
817
937
|
}
|
818
938
|
|
819
|
-
static void inc_initiate_write_reason(
|
820
|
-
grpc_chttp2_initiate_write_reason reason) {
|
821
|
-
switch (reason) {
|
822
|
-
case GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE:
|
823
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE();
|
824
|
-
break;
|
825
|
-
case GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM:
|
826
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM();
|
827
|
-
break;
|
828
|
-
case GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE:
|
829
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE();
|
830
|
-
break;
|
831
|
-
case GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA:
|
832
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA();
|
833
|
-
break;
|
834
|
-
case GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA:
|
835
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA();
|
836
|
-
break;
|
837
|
-
case GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING:
|
838
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING();
|
839
|
-
break;
|
840
|
-
case GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS:
|
841
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS();
|
842
|
-
break;
|
843
|
-
case GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT:
|
844
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT();
|
845
|
-
break;
|
846
|
-
case GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM:
|
847
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM();
|
848
|
-
break;
|
849
|
-
case GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API:
|
850
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API();
|
851
|
-
break;
|
852
|
-
case GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL:
|
853
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL();
|
854
|
-
break;
|
855
|
-
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL:
|
856
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL();
|
857
|
-
break;
|
858
|
-
case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
|
859
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS();
|
860
|
-
break;
|
861
|
-
case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
|
862
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK();
|
863
|
-
break;
|
864
|
-
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
|
865
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING();
|
866
|
-
break;
|
867
|
-
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE:
|
868
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE();
|
869
|
-
break;
|
870
|
-
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
871
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
872
|
-
break;
|
873
|
-
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
874
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
875
|
-
break;
|
876
|
-
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
877
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
878
|
-
break;
|
879
|
-
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|
880
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED();
|
881
|
-
break;
|
882
|
-
case GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE:
|
883
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE();
|
884
|
-
break;
|
885
|
-
case GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM:
|
886
|
-
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM();
|
887
|
-
break;
|
888
|
-
}
|
889
|
-
}
|
890
|
-
|
891
939
|
void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
892
940
|
grpc_chttp2_initiate_write_reason reason) {
|
893
|
-
GPR_TIMER_SCOPE("grpc_chttp2_initiate_write", 0);
|
894
|
-
|
895
941
|
switch (t->write_state) {
|
896
942
|
case GRPC_CHTTP2_WRITE_STATE_IDLE:
|
897
|
-
inc_initiate_write_reason(reason);
|
898
943
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
899
944
|
grpc_chttp2_initiate_write_reason_string(reason));
|
900
945
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
@@ -917,7 +962,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
917
962
|
t->combiner->FinallyRun(
|
918
963
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
919
964
|
write_action_begin_locked, t, nullptr),
|
920
|
-
|
965
|
+
absl::OkStatus());
|
921
966
|
break;
|
922
967
|
case GRPC_CHTTP2_WRITE_STATE_WRITING:
|
923
968
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE,
|
@@ -930,8 +975,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
930
975
|
|
931
976
|
void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
|
932
977
|
grpc_chttp2_stream* s) {
|
933
|
-
if (
|
934
|
-
grpc_chttp2_list_add_writable_stream(t, s)) {
|
978
|
+
if (t->closed_with_error.ok() && grpc_chttp2_list_add_writable_stream(t, s)) {
|
935
979
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2_writing:become");
|
936
980
|
}
|
937
981
|
}
|
@@ -946,24 +990,20 @@ static const char* begin_writing_desc(bool partial) {
|
|
946
990
|
|
947
991
|
static void write_action_begin_locked(void* gt,
|
948
992
|
grpc_error_handle /*error_ignored*/) {
|
949
|
-
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
950
993
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
951
994
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
952
995
|
grpc_chttp2_begin_write_result r;
|
953
|
-
if (!
|
996
|
+
if (!t->closed_with_error.ok()) {
|
954
997
|
r.writing = false;
|
955
998
|
} else {
|
956
999
|
r = grpc_chttp2_begin_write(t);
|
957
1000
|
}
|
958
1001
|
if (r.writing) {
|
959
|
-
if (r.partial) {
|
960
|
-
GRPC_STATS_INC_HTTP2_PARTIAL_WRITES();
|
961
|
-
}
|
962
1002
|
set_write_state(t,
|
963
1003
|
r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
|
964
1004
|
: GRPC_CHTTP2_WRITE_STATE_WRITING,
|
965
1005
|
begin_writing_desc(r.partial));
|
966
|
-
write_action(t,
|
1006
|
+
write_action(t, absl::OkStatus());
|
967
1007
|
if (t->reading_paused_on_pending_induced_frames) {
|
968
1008
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
969
1009
|
// We had paused reading, because we had many induced frames (SETTINGS
|
@@ -978,29 +1018,36 @@ static void write_action_begin_locked(void* gt,
|
|
978
1018
|
continue_read_action_locked(t);
|
979
1019
|
}
|
980
1020
|
} else {
|
981
|
-
GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN();
|
982
1021
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "begin writing nothing");
|
983
1022
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
|
984
1023
|
}
|
985
1024
|
}
|
986
1025
|
|
987
1026
|
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
988
|
-
GPR_TIMER_SCOPE("write_action", 0);
|
989
|
-
static bool kEnablePeerStateBasedFraming =
|
990
|
-
GPR_GLOBAL_CONFIG_GET(grpc_experimental_enable_peer_state_based_framing);
|
991
1027
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
992
1028
|
void* cl = t->cl;
|
993
|
-
t->cl
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
1029
|
+
if (!t->cl->empty()) {
|
1030
|
+
// Transfer the ownership of the context list to the endpoint and create and
|
1031
|
+
// associate a new context list with the transport.
|
1032
|
+
// The old context list is stored in the cl local variable which is passed
|
1033
|
+
// to the endpoint. Its upto the endpoint to manage its lifetime.
|
1034
|
+
t->cl = new grpc_core::ContextList();
|
1035
|
+
} else {
|
1036
|
+
// t->cl is Empty. There is nothing to trace in this endpoint_write. set cl
|
1037
|
+
// to nullptr.
|
1038
|
+
cl = nullptr;
|
1039
|
+
}
|
1040
|
+
// Choose max_frame_size as the prefered rx crypto frame size indicated by the
|
1041
|
+
// peer.
|
999
1042
|
int max_frame_size =
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1043
|
+
t->settings
|
1044
|
+
[GRPC_PEER_SETTINGS]
|
1045
|
+
[GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE];
|
1046
|
+
// Note: max frame size is 0 if the remote peer does not support adjusting the
|
1047
|
+
// sending frame size.
|
1048
|
+
if (max_frame_size == 0) {
|
1049
|
+
max_frame_size = INT_MAX;
|
1050
|
+
}
|
1004
1051
|
grpc_endpoint_write(
|
1005
1052
|
t->ep, &t->outbuf,
|
1006
1053
|
GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
|
@@ -1012,18 +1059,17 @@ static void write_action_end(void* tp, grpc_error_handle error) {
|
|
1012
1059
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1013
1060
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
1014
1061
|
write_action_end_locked, t, nullptr),
|
1015
|
-
|
1062
|
+
error);
|
1016
1063
|
}
|
1017
1064
|
|
1018
1065
|
// Callback from the grpc_endpoint after bytes have been written by calling
|
1019
1066
|
// sendmsg
|
1020
1067
|
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
1021
|
-
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1022
1068
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1023
1069
|
|
1024
1070
|
bool closed = false;
|
1025
|
-
if (!
|
1026
|
-
close_transport_locked(t,
|
1071
|
+
if (!error.ok()) {
|
1072
|
+
close_transport_locked(t, error);
|
1027
1073
|
closed = true;
|
1028
1074
|
}
|
1029
1075
|
|
@@ -1031,8 +1077,7 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
|
1031
1077
|
t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
|
1032
1078
|
closed = true;
|
1033
1079
|
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
1034
|
-
close_transport_locked(
|
1035
|
-
t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent"));
|
1080
|
+
close_transport_locked(t, GRPC_ERROR_CREATE("goaway sent"));
|
1036
1081
|
}
|
1037
1082
|
}
|
1038
1083
|
|
@@ -1040,11 +1085,9 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
|
1040
1085
|
case GRPC_CHTTP2_WRITE_STATE_IDLE:
|
1041
1086
|
GPR_UNREACHABLE_CODE(break);
|
1042
1087
|
case GRPC_CHTTP2_WRITE_STATE_WRITING:
|
1043
|
-
GPR_TIMER_MARK("state=writing", 0);
|
1044
1088
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
|
1045
1089
|
break;
|
1046
1090
|
case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE:
|
1047
|
-
GPR_TIMER_MARK("state=writing_stale_no_poller", 0);
|
1048
1091
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, "continue writing");
|
1049
1092
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
1050
1093
|
// If the transport is closed, we will retry writing on the endpoint
|
@@ -1058,11 +1101,11 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
|
1058
1101
|
t->combiner->FinallyRun(
|
1059
1102
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
1060
1103
|
write_action_begin_locked, t, nullptr),
|
1061
|
-
|
1104
|
+
absl::OkStatus());
|
1062
1105
|
break;
|
1063
1106
|
}
|
1064
1107
|
|
1065
|
-
grpc_chttp2_end_write(t,
|
1108
|
+
grpc_chttp2_end_write(t, error);
|
1066
1109
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
|
1067
1110
|
}
|
1068
1111
|
|
@@ -1091,26 +1134,27 @@ static void cancel_unstarted_streams(grpc_chttp2_transport* t,
|
|
1091
1134
|
s->trailing_metadata_buffer.Set(
|
1092
1135
|
grpc_core::GrpcStreamNetworkState(),
|
1093
1136
|
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1094
|
-
grpc_chttp2_cancel_stream(t, s,
|
1137
|
+
grpc_chttp2_cancel_stream(t, s, error);
|
1095
1138
|
}
|
1096
|
-
GRPC_ERROR_UNREF(error);
|
1097
1139
|
}
|
1098
1140
|
|
1099
1141
|
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
1100
1142
|
uint32_t goaway_error,
|
1101
1143
|
uint32_t last_stream_id,
|
1102
1144
|
absl::string_view goaway_text) {
|
1103
|
-
// Discard the error from a previous goaway frame (if any)
|
1104
|
-
if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
|
1105
|
-
GRPC_ERROR_UNREF(t->goaway_error);
|
1106
|
-
}
|
1107
1145
|
t->goaway_error = grpc_error_set_str(
|
1108
1146
|
grpc_error_set_int(
|
1109
1147
|
grpc_error_set_int(
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1148
|
+
grpc_core::StatusCreate(
|
1149
|
+
absl::StatusCode::kUnavailable,
|
1150
|
+
absl::StrFormat(
|
1151
|
+
"GOAWAY received; Error code: %u; Debug Text: %s",
|
1152
|
+
goaway_error, goaway_text),
|
1153
|
+
DEBUG_LOCATION, {}),
|
1154
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
1155
|
+
static_cast<intptr_t>(goaway_error)),
|
1156
|
+
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
|
1157
|
+
grpc_core::StatusStrProperty::kRawBytes, goaway_text);
|
1114
1158
|
|
1115
1159
|
GRPC_CHTTP2_IF_TRACING(
|
1116
1160
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
@@ -1118,11 +1162,12 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1118
1162
|
// We want to log this irrespective of whether http tracing is enabled if we
|
1119
1163
|
// received a GOAWAY with a non NO_ERROR code.
|
1120
1164
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1121
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s",
|
1122
|
-
|
1165
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s",
|
1166
|
+
std::string(t->peer_string.as_string_view()).c_str(), goaway_error,
|
1167
|
+
grpc_core::StatusToString(t->goaway_error).c_str());
|
1123
1168
|
}
|
1124
1169
|
if (t->is_client) {
|
1125
|
-
cancel_unstarted_streams(t,
|
1170
|
+
cancel_unstarted_streams(t, t->goaway_error);
|
1126
1171
|
// Cancel all unseen streams
|
1127
1172
|
grpc_chttp2_stream_map_for_each(
|
1128
1173
|
&t->stream_map,
|
@@ -1133,8 +1178,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1133
1178
|
s->trailing_metadata_buffer.Set(
|
1134
1179
|
grpc_core::GrpcStreamNetworkState(),
|
1135
1180
|
grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
|
1136
|
-
grpc_chttp2_cancel_stream(s->t, s,
|
1137
|
-
GRPC_ERROR_REF(s->t->goaway_error));
|
1181
|
+
grpc_chttp2_cancel_stream(s->t, s, s->t->goaway_error);
|
1138
1182
|
}
|
1139
1183
|
},
|
1140
1184
|
&last_stream_id);
|
@@ -1148,16 +1192,19 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1148
1192
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1149
1193
|
goaway_text == "too_many_pings")) {
|
1150
1194
|
gpr_log(GPR_ERROR,
|
1151
|
-
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1152
|
-
"data equal to \"too_many_pings\""
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1195
|
+
"%s: Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1196
|
+
"data equal to \"too_many_pings\". Current keepalive time (before "
|
1197
|
+
"throttling): %s",
|
1198
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
1199
|
+
t->keepalive_time.ToString().c_str());
|
1200
|
+
constexpr int max_keepalive_time_millis =
|
1201
|
+
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1202
|
+
int64_t throttled_keepalive_time =
|
1203
|
+
t->keepalive_time.millis() > max_keepalive_time_millis
|
1204
|
+
? INT_MAX
|
1205
|
+
: t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1159
1206
|
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1160
|
-
absl::Cord(std::to_string(
|
1207
|
+
absl::Cord(std::to_string(throttled_keepalive_time)));
|
1161
1208
|
}
|
1162
1209
|
// lie: use transient failure from the transport to indicate goaway has been
|
1163
1210
|
// received.
|
@@ -1171,8 +1218,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1171
1218
|
grpc_chttp2_stream* s;
|
1172
1219
|
// maybe cancel out streams that haven't yet started if we have received a
|
1173
1220
|
// GOAWAY
|
1174
|
-
if (!
|
1175
|
-
cancel_unstarted_streams(t,
|
1221
|
+
if (!t->goaway_error.ok()) {
|
1222
|
+
cancel_unstarted_streams(t, t->goaway_error);
|
1176
1223
|
return;
|
1177
1224
|
}
|
1178
1225
|
// start streams where we have free grpc_chttp2_stream ids and free
|
@@ -1212,21 +1259,13 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1212
1259
|
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1213
1260
|
grpc_chttp2_cancel_stream(
|
1214
1261
|
t, s,
|
1215
|
-
grpc_error_set_int(
|
1216
|
-
|
1217
|
-
|
1262
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
|
1263
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
1264
|
+
GRPC_STATUS_UNAVAILABLE));
|
1218
1265
|
}
|
1219
1266
|
}
|
1220
1267
|
}
|
1221
1268
|
|
1222
|
-
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1223
|
-
// we should not complete this closure until we can prove that the write got
|
1224
|
-
// scheduled
|
1225
|
-
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1226
|
-
// First bit of the reference count, stored in the high order bits (with the low
|
1227
|
-
// bits being used for flags defined above)
|
1228
|
-
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1229
|
-
|
1230
1269
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
1231
1270
|
closure->next_data.scratch += CLOSURE_BARRIER_FIRST_REF_BIT;
|
1232
1271
|
return closure;
|
@@ -1241,18 +1280,18 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1241
1280
|
// completion, have the application see it, and make a new operation on the
|
1242
1281
|
// call which recycles the batch BEFORE the call to start_batch completes,
|
1243
1282
|
// forcing a race.
|
1244
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, c,
|
1283
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, absl::OkStatus());
|
1245
1284
|
}
|
1246
1285
|
|
1247
1286
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1248
|
-
grpc_chttp2_stream*
|
1287
|
+
grpc_chttp2_stream* s,
|
1249
1288
|
grpc_closure** pclosure,
|
1250
1289
|
grpc_error_handle error,
|
1251
|
-
const char* desc
|
1290
|
+
const char* desc,
|
1291
|
+
grpc_core::DebugLocation whence) {
|
1252
1292
|
grpc_closure* closure = *pclosure;
|
1253
1293
|
*pclosure = nullptr;
|
1254
1294
|
if (closure == nullptr) {
|
1255
|
-
GRPC_ERROR_UNREF(error);
|
1256
1295
|
return;
|
1257
1296
|
}
|
1258
1297
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
@@ -1260,48 +1299,46 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1260
1299
|
gpr_log(
|
1261
1300
|
GPR_INFO,
|
1262
1301
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
1263
|
-
"write_state=%s",
|
1302
|
+
"write_state=%s whence=%s:%d",
|
1264
1303
|
t, closure,
|
1265
1304
|
static_cast<int>(closure->next_data.scratch /
|
1266
1305
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1267
1306
|
static_cast<int>(closure->next_data.scratch %
|
1268
1307
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1269
|
-
desc,
|
1270
|
-
write_state_name(t->write_state));
|
1308
|
+
desc, grpc_core::StatusToString(error).c_str(),
|
1309
|
+
write_state_name(t->write_state), whence.file(), whence.line());
|
1310
|
+
}
|
1311
|
+
|
1312
|
+
auto* tracer = CallTracerIfEnabled(s);
|
1313
|
+
if (tracer != nullptr) {
|
1314
|
+
tracer->RecordAnnotation(
|
1315
|
+
absl::StrFormat("on_complete: s=%p %p desc=%s err=%s", s, closure, desc,
|
1316
|
+
grpc_core::StatusToString(error).c_str()));
|
1271
1317
|
}
|
1272
|
-
|
1273
|
-
|
1318
|
+
|
1319
|
+
if (!error.ok()) {
|
1274
1320
|
grpc_error_handle cl_err =
|
1275
1321
|
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
t->peer_string);
|
1322
|
+
if (cl_err.ok()) {
|
1323
|
+
cl_err = GRPC_ERROR_CREATE(absl::StrCat(
|
1324
|
+
"Error in HTTP transport completing operation: ", desc,
|
1325
|
+
" write_state=", write_state_name(t->write_state), " refs=",
|
1326
|
+
closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
|
1327
|
+
closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
|
1328
|
+
cl_err = grpc_error_set_str(cl_err,
|
1329
|
+
grpc_core::StatusStrProperty::kTargetAddress,
|
1330
|
+
std::string(t->peer_string.as_string_view()));
|
1285
1331
|
}
|
1286
1332
|
cl_err = grpc_error_add_child(cl_err, error);
|
1287
|
-
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1288
1333
|
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
|
1289
|
-
#else
|
1290
|
-
closure->error_data.error = reinterpret_cast<intptr_t>(cl_err);
|
1291
|
-
#endif
|
1292
1334
|
}
|
1293
1335
|
if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
|
1294
1336
|
if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
|
1295
1337
|
!(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
|
1296
1338
|
// Using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN to avoid running
|
1297
1339
|
// closures earlier than when it is safe to do so.
|
1298
|
-
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1299
1340
|
grpc_error_handle run_error =
|
1300
1341
|
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1301
|
-
#else
|
1302
|
-
grpc_error_handle run_error =
|
1303
|
-
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
1304
|
-
#endif
|
1305
1342
|
closure->error_data.error = 0;
|
1306
1343
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, run_error);
|
1307
1344
|
} else {
|
@@ -1317,6 +1354,7 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) {
|
|
1317
1354
|
|
1318
1355
|
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
1319
1356
|
bool is_client, bool is_initial) {
|
1357
|
+
gpr_log(GPR_INFO, "--metadata--");
|
1320
1358
|
const std::string prefix = absl::StrCat(
|
1321
1359
|
"HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
|
1322
1360
|
md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
|
@@ -1326,8 +1364,6 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
|
1326
1364
|
|
1327
1365
|
static void perform_stream_op_locked(void* stream_op,
|
1328
1366
|
grpc_error_handle /*error_ignored*/) {
|
1329
|
-
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1330
|
-
|
1331
1367
|
grpc_transport_stream_op_batch* op =
|
1332
1368
|
static_cast<grpc_transport_stream_op_batch*>(stream_op);
|
1333
1369
|
grpc_chttp2_stream* s =
|
@@ -1335,14 +1371,12 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1335
1371
|
grpc_transport_stream_op_batch_payload* op_payload = op->payload;
|
1336
1372
|
grpc_chttp2_transport* t = s->t;
|
1337
1373
|
|
1338
|
-
GRPC_STATS_INC_HTTP2_OP_BATCHES();
|
1339
|
-
|
1340
1374
|
s->context = op->payload->context;
|
1341
1375
|
s->traced = op->is_traced;
|
1342
1376
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1343
1377
|
gpr_log(GPR_INFO,
|
1344
1378
|
"perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
|
1345
|
-
op, grpc_transport_stream_op_batch_string(op).c_str(),
|
1379
|
+
op, grpc_transport_stream_op_batch_string(op, false).c_str(),
|
1346
1380
|
op->on_complete);
|
1347
1381
|
if (op->send_initial_metadata) {
|
1348
1382
|
log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
|
@@ -1354,6 +1388,14 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1354
1388
|
}
|
1355
1389
|
}
|
1356
1390
|
|
1391
|
+
auto* tracer = CallTracerIfEnabled(s);
|
1392
|
+
if (tracer != nullptr) {
|
1393
|
+
tracer->RecordAnnotation(absl::StrFormat(
|
1394
|
+
"perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s, op,
|
1395
|
+
grpc_transport_stream_op_batch_string(op, true).c_str(),
|
1396
|
+
op->on_complete));
|
1397
|
+
}
|
1398
|
+
|
1357
1399
|
grpc_closure* on_complete = op->on_complete;
|
1358
1400
|
// on_complete will be null if and only if there are no send ops in the batch.
|
1359
1401
|
if (on_complete != nullptr) {
|
@@ -1364,7 +1406,6 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1364
1406
|
}
|
1365
1407
|
|
1366
1408
|
if (op->cancel_stream) {
|
1367
|
-
GRPC_STATS_INC_HTTP2_OP_CANCEL();
|
1368
1409
|
grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error);
|
1369
1410
|
}
|
1370
1411
|
|
@@ -1372,9 +1413,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1372
1413
|
if (t->is_client && t->channelz_socket != nullptr) {
|
1373
1414
|
t->channelz_socket->RecordStreamStartedFromLocal();
|
1374
1415
|
}
|
1375
|
-
GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA();
|
1376
1416
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1377
|
-
on_complete->next_data.scratch |=
|
1417
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1378
1418
|
|
1379
1419
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1380
1420
|
s->send_initial_metadata =
|
@@ -1390,7 +1430,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1430
|
}
|
1391
1431
|
if (!s->write_closed) {
|
1392
1432
|
if (t->is_client) {
|
1393
|
-
if (
|
1433
|
+
if (t->closed_with_error.ok()) {
|
1394
1434
|
GPR_ASSERT(s->id == 0);
|
1395
1435
|
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1396
1436
|
maybe_start_some_streams(t);
|
@@ -1401,9 +1441,10 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1401
1441
|
grpc_chttp2_cancel_stream(
|
1402
1442
|
t, s,
|
1403
1443
|
grpc_error_set_int(
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1444
|
+
GRPC_ERROR_CREATE_REFERENCING("Transport closed",
|
1445
|
+
&t->closed_with_error, 1),
|
1446
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
1447
|
+
GRPC_STATUS_UNAVAILABLE));
|
1407
1448
|
}
|
1408
1449
|
} else {
|
1409
1450
|
GPR_ASSERT(s->id != 0);
|
@@ -1418,23 +1459,18 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1418
1459
|
s->send_initial_metadata = nullptr;
|
1419
1460
|
grpc_chttp2_complete_closure_step(
|
1420
1461
|
t, s, &s->send_initial_metadata_finished,
|
1421
|
-
|
1462
|
+
GRPC_ERROR_CREATE_REFERENCING(
|
1422
1463
|
"Attempt to send initial metadata after stream was closed",
|
1423
1464
|
&s->write_closed_error, 1),
|
1424
1465
|
"send_initial_metadata_finished");
|
1425
1466
|
}
|
1426
|
-
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1427
|
-
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1428
|
-
(gpr_atm)t->peer_string.c_str());
|
1429
|
-
}
|
1430
1467
|
}
|
1431
1468
|
|
1432
1469
|
if (op->send_message) {
|
1433
|
-
GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE();
|
1434
1470
|
t->num_messages_in_next_write++;
|
1435
|
-
|
1471
|
+
grpc_core::global_stats().IncrementHttp2SendMessageSize(
|
1436
1472
|
op->payload->send_message.send_message->Length());
|
1437
|
-
on_complete->next_data.scratch |=
|
1473
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1438
1474
|
s->send_message_finished = add_closure_barrier(op->on_complete);
|
1439
1475
|
const uint32_t flags = op_payload->send_message.flags;
|
1440
1476
|
if (s->write_closed) {
|
@@ -1443,7 +1479,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1443
1479
|
// started. The surface layer will notice that the stream has been closed
|
1444
1480
|
// for writes and fail the send message op.
|
1445
1481
|
grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
|
1446
|
-
|
1482
|
+
absl::OkStatus(),
|
1447
1483
|
"fetching_send_message_finished");
|
1448
1484
|
} else {
|
1449
1485
|
uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(
|
@@ -1472,13 +1508,13 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1472
1508
|
slices + op_payload->send_message.send_message->Count();
|
1473
1509
|
for (grpc_slice* slice = slices; slice != end; slice++) {
|
1474
1510
|
grpc_slice_buffer_add(&s->flow_controlled_buffer,
|
1475
|
-
|
1511
|
+
grpc_core::CSliceRef(*slice));
|
1476
1512
|
}
|
1477
1513
|
|
1478
1514
|
int64_t notify_offset = s->next_message_end_offset;
|
1479
1515
|
if (notify_offset <= s->flow_controlled_bytes_written) {
|
1480
1516
|
grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
|
1481
|
-
|
1517
|
+
absl::OkStatus(),
|
1482
1518
|
"fetching_send_message_finished");
|
1483
1519
|
} else {
|
1484
1520
|
grpc_chttp2_write_cb* cb = t->write_cb_pool;
|
@@ -1507,9 +1543,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1507
1543
|
}
|
1508
1544
|
|
1509
1545
|
if (op->send_trailing_metadata) {
|
1510
|
-
GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA();
|
1511
1546
|
GPR_ASSERT(s->send_trailing_metadata_finished == nullptr);
|
1512
|
-
on_complete->next_data.scratch |=
|
1547
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1513
1548
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1514
1549
|
s->send_trailing_metadata =
|
1515
1550
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
@@ -1524,10 +1559,9 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1524
1559
|
grpc_chttp2_complete_closure_step(
|
1525
1560
|
t, s, &s->send_trailing_metadata_finished,
|
1526
1561
|
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1527
|
-
?
|
1528
|
-
:
|
1529
|
-
|
1530
|
-
"stream was closed"),
|
1562
|
+
? absl::OkStatus()
|
1563
|
+
: GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
|
1564
|
+
"stream was closed"),
|
1531
1565
|
"send_trailing_metadata_finished");
|
1532
1566
|
} else if (s->id != 0) {
|
1533
1567
|
// TODO(ctiller): check if there's flow control for any outstanding
|
@@ -1539,7 +1573,6 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1539
1573
|
}
|
1540
1574
|
|
1541
1575
|
if (op->recv_initial_metadata) {
|
1542
|
-
GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA();
|
1543
1576
|
GPR_ASSERT(s->recv_initial_metadata_ready == nullptr);
|
1544
1577
|
s->recv_initial_metadata_ready =
|
1545
1578
|
op_payload->recv_initial_metadata.recv_initial_metadata_ready;
|
@@ -1547,15 +1580,13 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1547
1580
|
op_payload->recv_initial_metadata.recv_initial_metadata;
|
1548
1581
|
s->trailing_metadata_available =
|
1549
1582
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1550
|
-
if (
|
1551
|
-
|
1552
|
-
(gpr_atm)t->peer_string.c_str());
|
1583
|
+
if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
|
1584
|
+
*s->trailing_metadata_available = true;
|
1553
1585
|
}
|
1554
1586
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1555
1587
|
}
|
1556
1588
|
|
1557
1589
|
if (op->recv_message) {
|
1558
|
-
GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE();
|
1559
1590
|
GPR_ASSERT(s->recv_message_ready == nullptr);
|
1560
1591
|
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1561
1592
|
s->recv_message = op_payload->recv_message.recv_message;
|
@@ -1567,7 +1598,6 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1567
1598
|
}
|
1568
1599
|
|
1569
1600
|
if (op->recv_trailing_metadata) {
|
1570
|
-
GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA();
|
1571
1601
|
GPR_ASSERT(s->collecting_stats == nullptr);
|
1572
1602
|
s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats;
|
1573
1603
|
GPR_ASSERT(s->recv_trailing_metadata_finished == nullptr);
|
@@ -1580,7 +1610,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1580
1610
|
}
|
1581
1611
|
|
1582
1612
|
if (on_complete != nullptr) {
|
1583
|
-
grpc_chttp2_complete_closure_step(t, s, &on_complete,
|
1613
|
+
grpc_chttp2_complete_closure_step(t, s, &on_complete, absl::OkStatus(),
|
1584
1614
|
"op->on_complete");
|
1585
1615
|
}
|
1586
1616
|
|
@@ -1589,7 +1619,6 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1589
1619
|
|
1590
1620
|
static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
1591
1621
|
grpc_transport_stream_op_batch* op) {
|
1592
|
-
GPR_TIMER_SCOPE("perform_stream_op", 0);
|
1593
1622
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
1594
1623
|
grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
|
1595
1624
|
|
@@ -1608,56 +1637,53 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1608
1637
|
|
1609
1638
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1610
1639
|
gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
|
1611
|
-
grpc_transport_stream_op_batch_string(op).c_str());
|
1640
|
+
grpc_transport_stream_op_batch_string(op, false).c_str());
|
1612
1641
|
}
|
1613
1642
|
|
1614
1643
|
GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
|
1615
1644
|
op->handler_private.extra_arg = gs;
|
1616
1645
|
t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
|
1617
1646
|
perform_stream_op_locked, op, nullptr),
|
1618
|
-
|
1647
|
+
absl::OkStatus());
|
1619
1648
|
}
|
1620
1649
|
|
1621
1650
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1622
1651
|
// callback remaining pings: they're not allowed to call into the transport,
|
1623
1652
|
// and maybe they hold resources that need to be freed
|
1624
1653
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1625
|
-
GPR_ASSERT(!
|
1654
|
+
GPR_ASSERT(!error.ok());
|
1626
1655
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
1627
|
-
grpc_closure_list_fail_all(&pq->lists[j],
|
1656
|
+
grpc_closure_list_fail_all(&pq->lists[j], error);
|
1628
1657
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
|
1629
1658
|
}
|
1630
|
-
GRPC_ERROR_UNREF(error);
|
1631
1659
|
}
|
1632
1660
|
|
1633
1661
|
static void send_ping_locked(grpc_chttp2_transport* t,
|
1634
1662
|
grpc_closure* on_initiate, grpc_closure* on_ack) {
|
1635
|
-
if (!
|
1636
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate,
|
1637
|
-
|
1638
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack,
|
1639
|
-
GRPC_ERROR_REF(t->closed_with_error));
|
1663
|
+
if (!t->closed_with_error.ok()) {
|
1664
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate, t->closed_with_error);
|
1665
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack, t->closed_with_error);
|
1640
1666
|
return;
|
1641
1667
|
}
|
1642
1668
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1643
1669
|
grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE], on_initiate,
|
1644
|
-
|
1670
|
+
absl::OkStatus());
|
1645
1671
|
grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT], on_ack,
|
1646
|
-
|
1672
|
+
absl::OkStatus());
|
1647
1673
|
}
|
1648
1674
|
|
1649
1675
|
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1650
1676
|
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1651
1677
|
// instead of waiting for that ping to complete and then starting a new ping.
|
1652
1678
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1653
|
-
if (!
|
1679
|
+
if (!t->closed_with_error.ok()) {
|
1654
1680
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1655
1681
|
start_keepalive_ping_locked, t, nullptr),
|
1656
|
-
|
1682
|
+
t->closed_with_error);
|
1657
1683
|
t->combiner->Run(
|
1658
1684
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
1659
1685
|
finish_keepalive_ping_locked, t, nullptr),
|
1660
|
-
|
1686
|
+
t->closed_with_error);
|
1661
1687
|
return;
|
1662
1688
|
}
|
1663
1689
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
@@ -1665,39 +1691,39 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1665
1691
|
// There is a ping in flight. Add yourself to the inflight closure list.
|
1666
1692
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1667
1693
|
start_keepalive_ping_locked, t, nullptr),
|
1668
|
-
|
1694
|
+
t->closed_with_error);
|
1669
1695
|
grpc_closure_list_append(
|
1670
1696
|
&pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
|
1671
1697
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
1672
1698
|
finish_keepalive_ping, t, grpc_schedule_on_exec_ctx),
|
1673
|
-
|
1699
|
+
absl::OkStatus());
|
1674
1700
|
return;
|
1675
1701
|
}
|
1676
1702
|
grpc_closure_list_append(
|
1677
1703
|
&pq->lists[GRPC_CHTTP2_PCL_INITIATE],
|
1678
1704
|
GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping,
|
1679
1705
|
t, grpc_schedule_on_exec_ctx),
|
1680
|
-
|
1706
|
+
absl::OkStatus());
|
1681
1707
|
grpc_closure_list_append(
|
1682
1708
|
&pq->lists[GRPC_CHTTP2_PCL_NEXT],
|
1683
1709
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping,
|
1684
1710
|
t, grpc_schedule_on_exec_ctx),
|
1685
|
-
|
1711
|
+
absl::OkStatus());
|
1686
1712
|
}
|
1687
1713
|
|
1688
|
-
void grpc_chttp2_retry_initiate_ping(
|
1689
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1714
|
+
void grpc_chttp2_retry_initiate_ping(grpc_chttp2_transport* t) {
|
1690
1715
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1691
1716
|
retry_initiate_ping_locked, t, nullptr),
|
1692
|
-
|
1717
|
+
absl::OkStatus());
|
1693
1718
|
}
|
1694
1719
|
|
1695
|
-
static void retry_initiate_ping_locked(void* tp,
|
1720
|
+
static void retry_initiate_ping_locked(void* tp,
|
1721
|
+
GRPC_UNUSED grpc_error_handle error) {
|
1722
|
+
GPR_DEBUG_ASSERT(error.ok());
|
1696
1723
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1697
|
-
t->ping_state.
|
1698
|
-
|
1699
|
-
|
1700
|
-
}
|
1724
|
+
GPR_ASSERT(t->ping_state.delayed_ping_timer_handle.has_value());
|
1725
|
+
t->ping_state.delayed_ping_timer_handle.reset();
|
1726
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
|
1701
1727
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
|
1702
1728
|
}
|
1703
1729
|
|
@@ -1705,7 +1731,7 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1705
1731
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1706
1732
|
if (pq->inflight_id != id) {
|
1707
1733
|
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1708
|
-
t->peer_string.c_str(), id);
|
1734
|
+
std::string(t->peer_string.as_string_view()).c_str(), id);
|
1709
1735
|
return;
|
1710
1736
|
}
|
1711
1737
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1720,7 +1746,7 @@ namespace {
|
|
1720
1746
|
// Fire and forget (deletes itself on completion). Does a graceful shutdown by
|
1721
1747
|
// sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
|
1722
1748
|
// and waiting for an ack (effective waiting for an RTT) and then sending a
|
1723
|
-
// final GOAWAY
|
1749
|
+
// final GOAWAY frame with an updated last stream identifier. This helps ensure
|
1724
1750
|
// that a connection can be cleanly shut down without losing requests.
|
1725
1751
|
// In the event, that the client does not respond to the ping for some reason,
|
1726
1752
|
// we add a 20 second deadline, after which we send the second goaway.
|
@@ -1733,6 +1759,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
|
1733
1759
|
}
|
1734
1760
|
|
1735
1761
|
private:
|
1762
|
+
using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
|
1763
|
+
|
1736
1764
|
explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
|
1737
1765
|
t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
|
1738
1766
|
GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
|
@@ -1740,11 +1768,17 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
|
1740
1768
|
send_ping_locked(
|
1741
1769
|
t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
|
1742
1770
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1771
|
+
timer_handle_ = t_->event_engine->RunAfter(
|
1772
|
+
grpc_core::Duration::Seconds(20),
|
1773
|
+
[self = Ref(DEBUG_LOCATION, "GoawayTimer")]() mutable {
|
1774
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1775
|
+
grpc_core::ExecCtx exec_ctx;
|
1776
|
+
// The ref will be unreffed in the combiner.
|
1777
|
+
auto* ptr = self.release();
|
1778
|
+
ptr->t_->combiner->Run(
|
1779
|
+
GRPC_CLOSURE_INIT(&ptr->on_timer_, OnTimerLocked, ptr, nullptr),
|
1780
|
+
absl::OkStatus());
|
1781
|
+
});
|
1748
1782
|
}
|
1749
1783
|
|
1750
1784
|
void MaybeSendFinalGoawayLocked() {
|
@@ -1752,12 +1786,13 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
|
1752
1786
|
// We already sent the final GOAWAY.
|
1753
1787
|
return;
|
1754
1788
|
}
|
1755
|
-
if (t_->destroying || !
|
1756
|
-
GRPC_CHTTP2_IF_TRACING(
|
1757
|
-
GPR_INFO,
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1789
|
+
if (t_->destroying || !t_->closed_with_error.ok()) {
|
1790
|
+
GRPC_CHTTP2_IF_TRACING(
|
1791
|
+
gpr_log(GPR_INFO,
|
1792
|
+
"transport:%p %s peer:%s Transport already shutting down. "
|
1793
|
+
"Graceful GOAWAY abandoned.",
|
1794
|
+
t_, t_->is_client ? "CLIENT" : "SERVER",
|
1795
|
+
std::string(t_->peer_string.as_string_view()).c_str()));
|
1761
1796
|
return;
|
1762
1797
|
}
|
1763
1798
|
// Ping completed. Send final goaway.
|
@@ -1766,7 +1801,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
|
1766
1801
|
"transport:%p %s peer:%s Graceful shutdown: Ping received. "
|
1767
1802
|
"Sending final GOAWAY with stream_id:%d",
|
1768
1803
|
t_, t_->is_client ? "CLIENT" : "SERVER",
|
1769
|
-
t_->peer_string.c_str(),
|
1804
|
+
std::string(t_->peer_string.as_string_view()).c_str(),
|
1805
|
+
t_->last_new_stream_id));
|
1770
1806
|
t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
|
1771
1807
|
grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
|
1772
1808
|
&t_->qbuf);
|
@@ -1777,36 +1813,30 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
|
|
1777
1813
|
auto* self = static_cast<GracefulGoaway*>(arg);
|
1778
1814
|
self->t_->combiner->Run(
|
1779
1815
|
GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
|
1780
|
-
|
1816
|
+
absl::OkStatus());
|
1781
1817
|
}
|
1782
1818
|
|
1783
1819
|
static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
|
1784
1820
|
auto* self = static_cast<GracefulGoaway*>(arg);
|
1785
|
-
|
1821
|
+
if (self->timer_handle_ != TaskHandle::kInvalid) {
|
1822
|
+
self->t_->event_engine->Cancel(
|
1823
|
+
std::exchange(self->timer_handle_, TaskHandle::kInvalid));
|
1824
|
+
}
|
1786
1825
|
self->MaybeSendFinalGoawayLocked();
|
1787
1826
|
self->Unref();
|
1788
1827
|
}
|
1789
1828
|
|
1790
|
-
static void OnTimer(void* arg, grpc_error_handle error) {
|
1791
|
-
auto* self = static_cast<GracefulGoaway*>(arg);
|
1792
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
1793
|
-
self->Unref();
|
1794
|
-
return;
|
1795
|
-
}
|
1796
|
-
self->t_->combiner->Run(
|
1797
|
-
GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
|
1798
|
-
GRPC_ERROR_NONE);
|
1799
|
-
}
|
1800
|
-
|
1801
1829
|
static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
|
1802
1830
|
auto* self = static_cast<GracefulGoaway*>(arg);
|
1831
|
+
// Clearing the handle since the timer has fired and the handle is invalid.
|
1832
|
+
self->timer_handle_ = TaskHandle::kInvalid;
|
1803
1833
|
self->MaybeSendFinalGoawayLocked();
|
1804
1834
|
self->Unref();
|
1805
1835
|
}
|
1806
1836
|
|
1807
1837
|
grpc_chttp2_transport* t_;
|
1808
1838
|
grpc_closure on_ping_ack_;
|
1809
|
-
|
1839
|
+
TaskHandle timer_handle_ = TaskHandle::kInvalid;
|
1810
1840
|
grpc_closure on_timer_;
|
1811
1841
|
};
|
1812
1842
|
|
@@ -1829,8 +1859,9 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
|
|
1829
1859
|
} else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
|
1830
1860
|
t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
|
1831
1861
|
// We want to log this irrespective of whether http tracing is enabled
|
1832
|
-
gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s",
|
1833
|
-
|
1862
|
+
gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s",
|
1863
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
1864
|
+
grpc_core::StatusToString(error).c_str());
|
1834
1865
|
t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
|
1835
1866
|
grpc_chttp2_goaway_append(
|
1836
1867
|
t->last_new_stream_id, static_cast<uint32_t>(http_error),
|
@@ -1839,22 +1870,21 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
|
|
1839
1870
|
// Final GOAWAY has already been sent.
|
1840
1871
|
}
|
1841
1872
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1842
|
-
GRPC_ERROR_UNREF(error);
|
1843
1873
|
}
|
1844
1874
|
|
1845
1875
|
void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
1846
1876
|
if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes &&
|
1847
1877
|
t->ping_policy.max_ping_strikes != 0) {
|
1848
1878
|
send_goaway(t,
|
1849
|
-
grpc_error_set_int(
|
1850
|
-
|
1851
|
-
|
1879
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
|
1880
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
1881
|
+
GRPC_HTTP2_ENHANCE_YOUR_CALM),
|
1852
1882
|
/*immediate_disconnect_hint=*/true);
|
1853
1883
|
// The transport will be closed after the write is done
|
1854
1884
|
close_transport_locked(
|
1855
|
-
t, grpc_error_set_int(
|
1856
|
-
|
1857
|
-
|
1885
|
+
t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
|
1886
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
1887
|
+
GRPC_STATUS_UNAVAILABLE));
|
1858
1888
|
}
|
1859
1889
|
}
|
1860
1890
|
|
@@ -1873,7 +1903,7 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1873
1903
|
grpc_chttp2_transport* t =
|
1874
1904
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
1875
1905
|
|
1876
|
-
if (!
|
1906
|
+
if (!op->goaway_error.ok()) {
|
1877
1907
|
send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
|
1878
1908
|
}
|
1879
1909
|
|
@@ -1903,13 +1933,13 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1903
1933
|
t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
|
1904
1934
|
}
|
1905
1935
|
|
1906
|
-
if (!
|
1907
|
-
send_goaway(t,
|
1936
|
+
if (!op->disconnect_with_error.ok()) {
|
1937
|
+
send_goaway(t, op->disconnect_with_error,
|
1908
1938
|
/*immediate_disconnect_hint=*/true);
|
1909
1939
|
close_transport_locked(t, op->disconnect_with_error);
|
1910
1940
|
}
|
1911
1941
|
|
1912
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed,
|
1942
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
|
1913
1943
|
|
1914
1944
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op");
|
1915
1945
|
}
|
@@ -1924,7 +1954,7 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1924
1954
|
GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
|
1925
1955
|
t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
|
1926
1956
|
perform_transport_op_locked, op, nullptr),
|
1927
|
-
|
1957
|
+
absl::OkStatus());
|
1928
1958
|
}
|
1929
1959
|
|
1930
1960
|
//
|
@@ -1936,10 +1966,11 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
|
|
1936
1966
|
if (s->recv_initial_metadata_ready != nullptr &&
|
1937
1967
|
s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
|
1938
1968
|
if (s->seen_error) {
|
1939
|
-
|
1969
|
+
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
1940
1970
|
}
|
1941
1971
|
*s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
|
1942
|
-
s->recv_initial_metadata->Set(grpc_core::PeerString(),
|
1972
|
+
s->recv_initial_metadata->Set(grpc_core::PeerString(),
|
1973
|
+
t->peer_string.Ref());
|
1943
1974
|
// If we didn't receive initial metadata from the wire and instead faked a
|
1944
1975
|
// status (due to stream cancellations for example), let upper layers know
|
1945
1976
|
// that trailing metadata is immediately available.
|
@@ -1959,24 +1990,36 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
1959
1990
|
|
1960
1991
|
grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
|
1961
1992
|
&s->flow_control);
|
1962
|
-
grpc_error_handle error
|
1993
|
+
grpc_error_handle error;
|
1963
1994
|
|
1964
1995
|
// Lambda is immediately invoked as a big scoped section that can be
|
1965
1996
|
// exited out of at any point by returning.
|
1966
1997
|
[&]() {
|
1998
|
+
if (grpc_http_trace.enabled()) {
|
1999
|
+
gpr_log(GPR_DEBUG,
|
2000
|
+
"maybe_complete_recv_message %p final_metadata_requested=%d "
|
2001
|
+
"seen_error=%d",
|
2002
|
+
s, s->final_metadata_requested, s->seen_error);
|
2003
|
+
}
|
1967
2004
|
if (s->final_metadata_requested && s->seen_error) {
|
1968
|
-
|
2005
|
+
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
1969
2006
|
s->recv_message->reset();
|
1970
2007
|
} else {
|
1971
2008
|
if (s->frame_storage.length != 0) {
|
1972
2009
|
while (true) {
|
1973
2010
|
GPR_ASSERT(s->frame_storage.length > 0);
|
1974
|
-
|
2011
|
+
int64_t min_progress_size;
|
1975
2012
|
auto r = grpc_deframe_unprocessed_incoming_frames(
|
1976
2013
|
s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
|
1977
|
-
if (
|
2014
|
+
if (grpc_http_trace.enabled()) {
|
2015
|
+
gpr_log(GPR_DEBUG, "Deframe data frame: %s",
|
2016
|
+
grpc_core::PollToString(r, [](absl::Status r) {
|
2017
|
+
return r.ToString();
|
2018
|
+
}).c_str());
|
2019
|
+
}
|
2020
|
+
if (r.pending()) {
|
1978
2021
|
if (s->read_closed) {
|
1979
|
-
|
2022
|
+
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
1980
2023
|
s->recv_message->reset();
|
1981
2024
|
break;
|
1982
2025
|
} else {
|
@@ -1984,10 +2027,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
1984
2027
|
return; // Out of lambda to enclosing function
|
1985
2028
|
}
|
1986
2029
|
} else {
|
1987
|
-
error =
|
1988
|
-
if (!
|
2030
|
+
error = std::move(r.value());
|
2031
|
+
if (!error.ok()) {
|
1989
2032
|
s->seen_error = true;
|
1990
|
-
|
2033
|
+
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
1991
2034
|
break;
|
1992
2035
|
} else {
|
1993
2036
|
if (t->channelz_socket != nullptr) {
|
@@ -2006,7 +2049,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2006
2049
|
}
|
2007
2050
|
// save the length of the buffer before handing control back to application
|
2008
2051
|
// threads. Needed to support correct flow control bookkeeping
|
2009
|
-
if (
|
2052
|
+
if (error.ok() && s->recv_message->has_value()) {
|
2010
2053
|
null_then_sched_closure(&s->recv_message_ready);
|
2011
2054
|
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
|
2012
2055
|
if (s->call_failed_before_recv_message != nullptr) {
|
@@ -2015,7 +2058,6 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2015
2058
|
}
|
2016
2059
|
null_then_sched_closure(&s->recv_message_ready);
|
2017
2060
|
}
|
2018
|
-
GRPC_ERROR_UNREF(error);
|
2019
2061
|
}();
|
2020
2062
|
|
2021
2063
|
upd.SetPendingSize(s->frame_storage.length);
|
@@ -2025,17 +2067,24 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2025
2067
|
void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
2026
2068
|
grpc_chttp2_stream* s) {
|
2027
2069
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
2070
|
+
if (grpc_http_trace.enabled()) {
|
2071
|
+
gpr_log(GPR_DEBUG,
|
2072
|
+
"maybe_complete_recv_trailing_metadata cli=%d s=%p closure=%p "
|
2073
|
+
"read_closed=%d "
|
2074
|
+
"write_closed=%d %" PRIdPTR,
|
2075
|
+
t->is_client, s, s->recv_trailing_metadata_finished, s->read_closed,
|
2076
|
+
s->write_closed, s->frame_storage.length);
|
2077
|
+
}
|
2028
2078
|
if (s->recv_trailing_metadata_finished != nullptr && s->read_closed &&
|
2029
2079
|
s->write_closed) {
|
2030
2080
|
if (s->seen_error || !t->is_client) {
|
2031
|
-
|
2081
|
+
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
2032
2082
|
}
|
2033
2083
|
if (s->read_closed && s->frame_storage.length == 0 &&
|
2034
2084
|
s->recv_trailing_metadata_finished != nullptr) {
|
2035
2085
|
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
2036
2086
|
s->collecting_stats = nullptr;
|
2037
2087
|
*s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
|
2038
|
-
s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
|
2039
2088
|
null_then_sched_closure(&s->recv_trailing_metadata_finished);
|
2040
2089
|
}
|
2041
2090
|
}
|
@@ -2055,7 +2104,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2055
2104
|
post_benign_reclaimer(t);
|
2056
2105
|
if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
|
2057
2106
|
close_transport_locked(
|
2058
|
-
t,
|
2107
|
+
t, GRPC_ERROR_CREATE_REFERENCING(
|
2059
2108
|
"Last stream closed after sending GOAWAY", &error, 1));
|
2060
2109
|
}
|
2061
2110
|
}
|
@@ -2065,8 +2114,6 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2065
2114
|
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2066
2115
|
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2067
2116
|
|
2068
|
-
GRPC_ERROR_UNREF(error);
|
2069
|
-
|
2070
2117
|
maybe_start_some_streams(t);
|
2071
2118
|
}
|
2072
2119
|
|
@@ -2088,7 +2135,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2088
2135
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
|
2089
2136
|
}
|
2090
2137
|
}
|
2091
|
-
if (!
|
2138
|
+
if (!due_to_error.ok() && !s->seen_error) {
|
2092
2139
|
s->seen_error = true;
|
2093
2140
|
}
|
2094
2141
|
grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
|
@@ -2110,7 +2157,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2110
2157
|
// what we want - which is safe because we haven't told anyone
|
2111
2158
|
// about the metadata yet
|
2112
2159
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2113
|
-
s->recv_trailing_metadata_finished != nullptr
|
2160
|
+
s->recv_trailing_metadata_finished != nullptr ||
|
2161
|
+
!s->final_metadata_requested) {
|
2114
2162
|
s->trailing_metadata_buffer.Set(grpc_core::GrpcStatusMetadata(), status);
|
2115
2163
|
if (!message.empty()) {
|
2116
2164
|
s->trailing_metadata_buffer.Set(
|
@@ -2120,13 +2168,11 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2120
2168
|
s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
|
2121
2169
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2122
2170
|
}
|
2123
|
-
|
2124
|
-
GRPC_ERROR_UNREF(error);
|
2125
2171
|
}
|
2126
2172
|
|
2127
2173
|
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2128
2174
|
size_t* nrefs) {
|
2129
|
-
if (
|
2175
|
+
if (error.ok()) return;
|
2130
2176
|
for (size_t i = 0; i < *nrefs; i++) {
|
2131
2177
|
if (error == refs[i]) {
|
2132
2178
|
return;
|
@@ -2144,12 +2190,10 @@ static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
|
2144
2190
|
add_error(s->read_closed_error, refs, &nrefs);
|
2145
2191
|
add_error(s->write_closed_error, refs, &nrefs);
|
2146
2192
|
add_error(extra_error, refs, &nrefs);
|
2147
|
-
grpc_error_handle error
|
2193
|
+
grpc_error_handle error;
|
2148
2194
|
if (nrefs > 0) {
|
2149
|
-
error =
|
2150
|
-
refs, nrefs);
|
2195
|
+
error = GRPC_ERROR_CREATE_REFERENCING(main_error_msg, refs, nrefs);
|
2151
2196
|
}
|
2152
|
-
GRPC_ERROR_UNREF(extra_error);
|
2153
2197
|
return error;
|
2154
2198
|
}
|
2155
2199
|
|
@@ -2159,12 +2203,11 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2159
2203
|
while (*list) {
|
2160
2204
|
grpc_chttp2_write_cb* cb = *list;
|
2161
2205
|
*list = cb->next;
|
2162
|
-
grpc_chttp2_complete_closure_step(t, s, &cb->closure,
|
2206
|
+
grpc_chttp2_complete_closure_step(t, s, &cb->closure, error,
|
2163
2207
|
"on_write_finished_cb");
|
2164
2208
|
cb->next = t->write_cb_pool;
|
2165
2209
|
t->write_cb_pool = cb;
|
2166
2210
|
}
|
2167
|
-
GRPC_ERROR_UNREF(error);
|
2168
2211
|
}
|
2169
2212
|
|
2170
2213
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
@@ -2174,29 +2217,34 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2174
2217
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2175
2218
|
s->send_initial_metadata = nullptr;
|
2176
2219
|
grpc_chttp2_complete_closure_step(t, s, &s->send_initial_metadata_finished,
|
2177
|
-
|
2178
|
-
"send_initial_metadata_finished");
|
2220
|
+
error, "send_initial_metadata_finished");
|
2179
2221
|
|
2180
2222
|
s->send_trailing_metadata = nullptr;
|
2181
2223
|
s->sent_trailing_metadata_op = nullptr;
|
2182
2224
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2183
|
-
|
2184
|
-
"send_trailing_metadata_finished");
|
2225
|
+
error, "send_trailing_metadata_finished");
|
2185
2226
|
|
2186
|
-
grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
|
2187
|
-
GRPC_ERROR_REF(error),
|
2227
|
+
grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished, error,
|
2188
2228
|
"fetching_send_message_finished");
|
2189
|
-
flush_write_list(t, s, &s->on_write_finished_cbs,
|
2229
|
+
flush_write_list(t, s, &s->on_write_finished_cbs, error);
|
2190
2230
|
flush_write_list(t, s, &s->on_flow_controlled_cbs, error);
|
2191
2231
|
}
|
2192
2232
|
|
2193
2233
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2194
2234
|
grpc_chttp2_stream* s, int close_reads,
|
2195
2235
|
int close_writes, grpc_error_handle error) {
|
2236
|
+
if (grpc_http_trace.enabled()) {
|
2237
|
+
gpr_log(
|
2238
|
+
GPR_DEBUG, "MARK_STREAM_CLOSED: t=%p s=%p(id=%d) %s [%s]", t, s, s->id,
|
2239
|
+
(close_reads && close_writes)
|
2240
|
+
? "read+write"
|
2241
|
+
: (close_reads ? "read" : (close_writes ? "write" : "nothing??")),
|
2242
|
+
error.ToString().c_str());
|
2243
|
+
}
|
2196
2244
|
if (s->read_closed && s->write_closed) {
|
2197
2245
|
// already closed, but we should still fake the status if needed.
|
2198
2246
|
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2199
|
-
if (!
|
2247
|
+
if (!overall_error.ok()) {
|
2200
2248
|
grpc_chttp2_fake_status(t, s, overall_error);
|
2201
2249
|
}
|
2202
2250
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
@@ -2205,26 +2253,25 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2205
2253
|
bool closed_read = false;
|
2206
2254
|
bool became_closed = false;
|
2207
2255
|
if (close_reads && !s->read_closed) {
|
2208
|
-
s->read_closed_error =
|
2256
|
+
s->read_closed_error = error;
|
2209
2257
|
s->read_closed = true;
|
2210
2258
|
closed_read = true;
|
2211
2259
|
}
|
2212
2260
|
if (close_writes && !s->write_closed) {
|
2213
|
-
s->write_closed_error =
|
2261
|
+
s->write_closed_error = error;
|
2214
2262
|
s->write_closed = true;
|
2215
|
-
grpc_chttp2_fail_pending_writes(t, s,
|
2263
|
+
grpc_chttp2_fail_pending_writes(t, s, error);
|
2216
2264
|
}
|
2217
2265
|
if (s->read_closed && s->write_closed) {
|
2218
2266
|
became_closed = true;
|
2219
|
-
grpc_error_handle overall_error =
|
2220
|
-
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2267
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2221
2268
|
if (s->id != 0) {
|
2222
|
-
remove_stream(t, s->id,
|
2269
|
+
remove_stream(t, s->id, overall_error);
|
2223
2270
|
} else {
|
2224
2271
|
// Purge streams waiting on concurrency still waiting for id assignment
|
2225
2272
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2226
2273
|
}
|
2227
|
-
if (!
|
2274
|
+
if (!overall_error.ok()) {
|
2228
2275
|
grpc_chttp2_fake_status(t, s, overall_error);
|
2229
2276
|
}
|
2230
2277
|
}
|
@@ -2238,10 +2285,11 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2238
2285
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
2239
2286
|
}
|
2240
2287
|
if (became_closed) {
|
2288
|
+
s->stats.latency =
|
2289
|
+
gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), s->creation_time);
|
2241
2290
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2242
2291
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2");
|
2243
2292
|
}
|
2244
|
-
GRPC_ERROR_UNREF(error);
|
2245
2293
|
}
|
2246
2294
|
|
2247
2295
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
@@ -2324,8 +2372,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2324
2372
|
|
2325
2373
|
status_hdr = GRPC_SLICE_MALLOC(15 + (grpc_status >= 10));
|
2326
2374
|
p = GRPC_SLICE_START_PTR(status_hdr);
|
2327
|
-
*p++ = 0x00;
|
2328
|
-
*p++ = 11;
|
2375
|
+
*p++ = 0x00; // literal header, not indexed
|
2376
|
+
*p++ = 11; // len(grpc-status)
|
2329
2377
|
*p++ = 'g';
|
2330
2378
|
*p++ = 'r';
|
2331
2379
|
*p++ = 'p';
|
@@ -2350,11 +2398,11 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2350
2398
|
|
2351
2399
|
size_t msg_len = message.length();
|
2352
2400
|
GPR_ASSERT(msg_len <= UINT32_MAX);
|
2353
|
-
grpc_core::VarintWriter<1> msg_len_writer(msg_len);
|
2401
|
+
grpc_core::VarintWriter<1> msg_len_writer(static_cast<uint32_t>(msg_len));
|
2354
2402
|
message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
|
2355
2403
|
p = GRPC_SLICE_START_PTR(message_pfx);
|
2356
|
-
*p++ = 0x00;
|
2357
|
-
*p++ = 12;
|
2404
|
+
*p++ = 0x00; // literal header, not indexed
|
2405
|
+
*p++ = 12; // len(grpc-message)
|
2358
2406
|
*p++ = 'g';
|
2359
2407
|
*p++ = 'r';
|
2360
2408
|
*p++ = 'p';
|
@@ -2411,7 +2459,7 @@ struct cancel_stream_cb_args {
|
|
2411
2459
|
static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
2412
2460
|
cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
|
2413
2461
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
|
2414
|
-
grpc_chttp2_cancel_stream(args->t, s,
|
2462
|
+
grpc_chttp2_cancel_stream(args->t, s, args->error);
|
2415
2463
|
}
|
2416
2464
|
|
2417
2465
|
static void end_all_the_calls(grpc_chttp2_transport* t,
|
@@ -2419,14 +2467,14 @@ static void end_all_the_calls(grpc_chttp2_transport* t,
|
|
2419
2467
|
intptr_t http2_error;
|
2420
2468
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2421
2469
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
2422
|
-
!grpc_error_get_int(error,
|
2423
|
-
|
2470
|
+
!grpc_error_get_int(error, grpc_core::StatusIntProperty::kHttp2Error,
|
2471
|
+
&http2_error)) {
|
2472
|
+
error = grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
|
2424
2473
|
GRPC_STATUS_UNAVAILABLE);
|
2425
2474
|
}
|
2426
|
-
cancel_unstarted_streams(t,
|
2475
|
+
cancel_unstarted_streams(t, error);
|
2427
2476
|
cancel_stream_cb_args args = {error, t};
|
2428
2477
|
grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
|
2429
|
-
GRPC_ERROR_UNREF(error);
|
2430
2478
|
}
|
2431
2479
|
|
2432
2480
|
//
|
@@ -2454,7 +2502,7 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2454
2502
|
grpc_chttp2_transport* t, grpc_chttp2_stream* s) {
|
2455
2503
|
WithUrgency(t, action.send_stream_update(),
|
2456
2504
|
GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL, [t, s]() {
|
2457
|
-
if (s->id != 0) {
|
2505
|
+
if (s->id != 0 && !s->read_closed) {
|
2458
2506
|
grpc_chttp2_mark_stream_writable(t, s);
|
2459
2507
|
}
|
2460
2508
|
});
|
@@ -2471,31 +2519,39 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2471
2519
|
queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
|
2472
2520
|
action.max_frame_size());
|
2473
2521
|
});
|
2522
|
+
if (t->enable_preferred_rx_crypto_frame_advertisement) {
|
2523
|
+
WithUrgency(
|
2524
|
+
t, action.preferred_rx_crypto_frame_size_update(),
|
2525
|
+
GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS, [t, &action]() {
|
2526
|
+
queue_setting_update(
|
2527
|
+
t, GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
|
2528
|
+
action.preferred_rx_crypto_frame_size());
|
2529
|
+
});
|
2530
|
+
}
|
2474
2531
|
}
|
2475
2532
|
|
2476
2533
|
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2477
2534
|
grpc_http_parser parser;
|
2478
2535
|
size_t i = 0;
|
2479
|
-
grpc_error_handle error
|
2536
|
+
grpc_error_handle error;
|
2480
2537
|
grpc_http_response response;
|
2481
2538
|
|
2482
2539
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2483
2540
|
|
2484
|
-
grpc_error_handle parse_error
|
2485
|
-
for (; i < t->read_buffer.count &&
|
2541
|
+
grpc_error_handle parse_error;
|
2542
|
+
for (; i < t->read_buffer.count && parse_error.ok(); i++) {
|
2486
2543
|
parse_error =
|
2487
2544
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
2488
2545
|
}
|
2489
|
-
if (
|
2490
|
-
(parse_error = grpc_http_parser_eof(&parser)) ==
|
2546
|
+
if (parse_error.ok() &&
|
2547
|
+
(parse_error = grpc_http_parser_eof(&parser)) == absl::OkStatus()) {
|
2491
2548
|
error = grpc_error_set_int(
|
2492
|
-
grpc_error_set_int(
|
2493
|
-
|
2494
|
-
|
2495
|
-
|
2549
|
+
grpc_error_set_int(
|
2550
|
+
GRPC_ERROR_CREATE("Trying to connect an http1.x server"),
|
2551
|
+
grpc_core::StatusIntProperty::kHttpStatus, response.status),
|
2552
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
2496
2553
|
grpc_http2_status_to_grpc_status(response.status));
|
2497
2554
|
}
|
2498
|
-
GRPC_ERROR_UNREF(parse_error);
|
2499
2555
|
|
2500
2556
|
grpc_http_parser_destroy(&parser);
|
2501
2557
|
grpc_http_response_destroy(&response);
|
@@ -2506,44 +2562,31 @@ static void read_action(void* tp, grpc_error_handle error) {
|
|
2506
2562
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2507
2563
|
t->combiner->Run(
|
2508
2564
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2509
|
-
|
2565
|
+
error);
|
2510
2566
|
}
|
2511
2567
|
|
2512
2568
|
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2513
|
-
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2514
|
-
|
2515
2569
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2516
2570
|
|
2517
|
-
(void)GRPC_ERROR_REF(error);
|
2518
|
-
|
2519
2571
|
grpc_error_handle err = error;
|
2520
|
-
if (!
|
2521
|
-
err = grpc_error_set_int(
|
2522
|
-
|
2523
|
-
|
2524
|
-
t->write_state);
|
2572
|
+
if (!err.ok()) {
|
2573
|
+
err = grpc_error_set_int(
|
2574
|
+
GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
|
2575
|
+
grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
|
2525
2576
|
}
|
2526
2577
|
std::swap(err, error);
|
2527
|
-
|
2528
|
-
if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
|
2529
|
-
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2578
|
+
if (t->closed_with_error.ok()) {
|
2530
2579
|
size_t i = 0;
|
2531
|
-
grpc_error_handle errors[3] = {
|
2532
|
-
|
2533
|
-
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2580
|
+
grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
|
2581
|
+
for (; i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
|
2534
2582
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2535
2583
|
}
|
2536
|
-
if (errors[1] !=
|
2584
|
+
if (errors[1] != absl::OkStatus()) {
|
2537
2585
|
errors[2] = try_http_parsing(t);
|
2538
|
-
|
2539
|
-
|
2540
|
-
"Failed parsing HTTP/2", errors, GPR_ARRAY_SIZE(errors));
|
2541
|
-
}
|
2542
|
-
for (i = 0; i < GPR_ARRAY_SIZE(errors); i++) {
|
2543
|
-
GRPC_ERROR_UNREF(errors[i]);
|
2586
|
+
error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
|
2587
|
+
GPR_ARRAY_SIZE(errors));
|
2544
2588
|
}
|
2545
2589
|
|
2546
|
-
GPR_TIMER_SCOPE("post_parse_locked", 0);
|
2547
2590
|
if (t->initial_window_update != 0) {
|
2548
2591
|
if (t->initial_window_update > 0) {
|
2549
2592
|
grpc_chttp2_stream* s;
|
@@ -2557,29 +2600,28 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
|
|
2557
2600
|
}
|
2558
2601
|
}
|
2559
2602
|
|
2560
|
-
GPR_TIMER_SCOPE("post_reading_action_locked", 0);
|
2561
2603
|
bool keep_reading = false;
|
2562
|
-
if (
|
2563
|
-
error =
|
2564
|
-
|
2604
|
+
if (error.ok() && !t->closed_with_error.ok()) {
|
2605
|
+
error = GRPC_ERROR_CREATE_REFERENCING("Transport closed",
|
2606
|
+
&t->closed_with_error, 1);
|
2565
2607
|
}
|
2566
|
-
if (!
|
2608
|
+
if (!error.ok()) {
|
2567
2609
|
// If a goaway frame was received, this might be the reason why the read
|
2568
2610
|
// failed. Add this info to the error
|
2569
|
-
if (!
|
2570
|
-
error = grpc_error_add_child(error,
|
2611
|
+
if (!t->goaway_error.ok()) {
|
2612
|
+
error = grpc_error_add_child(error, t->goaway_error);
|
2571
2613
|
}
|
2572
2614
|
|
2573
|
-
close_transport_locked(t,
|
2615
|
+
close_transport_locked(t, error);
|
2574
2616
|
t->endpoint_reading = 0;
|
2575
|
-
} else if (
|
2617
|
+
} else if (t->closed_with_error.ok()) {
|
2576
2618
|
keep_reading = true;
|
2577
2619
|
// Since we have read a byte, reset the keepalive timer
|
2578
2620
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2579
|
-
|
2621
|
+
maybe_reset_keepalive_ping_timer_locked(t);
|
2580
2622
|
}
|
2581
2623
|
}
|
2582
|
-
|
2624
|
+
grpc_slice_buffer_reset_and_unref(&t->read_buffer);
|
2583
2625
|
|
2584
2626
|
if (keep_reading) {
|
2585
2627
|
if (t->num_pending_induced_frames >= DEFAULT_MAX_PENDING_INDUCED_FRAMES) {
|
@@ -2595,16 +2637,14 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
|
|
2595
2637
|
} else {
|
2596
2638
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
|
2597
2639
|
}
|
2598
|
-
|
2599
|
-
GRPC_ERROR_UNREF(error);
|
2600
2640
|
}
|
2601
2641
|
|
2602
2642
|
static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
2603
|
-
const bool urgent = !
|
2643
|
+
const bool urgent = !t->goaway_error.ok();
|
2604
2644
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
|
2605
2645
|
grpc_schedule_on_exec_ctx);
|
2606
2646
|
grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
|
2607
|
-
|
2647
|
+
grpc_chttp2_min_read_progress_size(t));
|
2608
2648
|
}
|
2609
2649
|
|
2610
2650
|
// t is reffed prior to calling the first time, and once the callback chain
|
@@ -2624,21 +2664,22 @@ static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
|
2624
2664
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2625
2665
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2626
2666
|
start_bdp_ping_locked, t, nullptr),
|
2627
|
-
|
2667
|
+
error);
|
2628
2668
|
}
|
2629
2669
|
|
2630
2670
|
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2631
2671
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2632
2672
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2633
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
|
2634
|
-
|
2673
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
|
2674
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
2675
|
+
grpc_core::StatusToString(error).c_str());
|
2635
2676
|
}
|
2636
|
-
if (!
|
2677
|
+
if (!error.ok() || !t->closed_with_error.ok()) {
|
2637
2678
|
return;
|
2638
2679
|
}
|
2639
2680
|
// Reset the keepalive ping timer
|
2640
2681
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2641
|
-
|
2682
|
+
maybe_reset_keepalive_ping_timer_locked(t);
|
2642
2683
|
}
|
2643
2684
|
t->flow_control.bdp_estimator()->StartPing();
|
2644
2685
|
t->bdp_ping_started = true;
|
@@ -2648,16 +2689,17 @@ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
|
2648
2689
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2649
2690
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2650
2691
|
finish_bdp_ping_locked, t, nullptr),
|
2651
|
-
|
2692
|
+
error);
|
2652
2693
|
}
|
2653
2694
|
|
2654
2695
|
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2655
2696
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2656
2697
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2657
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
|
2658
|
-
|
2698
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
|
2699
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
2700
|
+
grpc_core::StatusToString(error).c_str());
|
2659
2701
|
}
|
2660
|
-
if (!
|
2702
|
+
if (!error.ok() || !t->closed_with_error.ok()) {
|
2661
2703
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2662
2704
|
return;
|
2663
2705
|
}
|
@@ -2666,7 +2708,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
|
2666
2708
|
// finish_bdp_ping_locked to be run later.
|
2667
2709
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2668
2710
|
finish_bdp_ping_locked, t, nullptr),
|
2669
|
-
|
2711
|
+
error);
|
2670
2712
|
return;
|
2671
2713
|
}
|
2672
2714
|
t->bdp_ping_started = false;
|
@@ -2674,31 +2716,28 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
|
2674
2716
|
t->flow_control.bdp_estimator()->CompletePing();
|
2675
2717
|
grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t,
|
2676
2718
|
nullptr);
|
2677
|
-
GPR_ASSERT(!t->
|
2678
|
-
t->
|
2679
|
-
|
2680
|
-
|
2681
|
-
|
2682
|
-
|
2719
|
+
GPR_ASSERT(!t->next_bdp_ping_timer_handle.has_value());
|
2720
|
+
t->next_bdp_ping_timer_handle =
|
2721
|
+
t->event_engine->RunAfter(next_ping - grpc_core::Timestamp::Now(), [t] {
|
2722
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2723
|
+
grpc_core::ExecCtx exec_ctx;
|
2724
|
+
next_bdp_ping_timer_expired(t);
|
2725
|
+
});
|
2683
2726
|
}
|
2684
2727
|
|
2685
|
-
static void next_bdp_ping_timer_expired(
|
2686
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2728
|
+
static void next_bdp_ping_timer_expired(grpc_chttp2_transport* t) {
|
2687
2729
|
t->combiner->Run(
|
2688
2730
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
2689
2731
|
next_bdp_ping_timer_expired_locked, t, nullptr),
|
2690
|
-
|
2732
|
+
absl::OkStatus());
|
2691
2733
|
}
|
2692
2734
|
|
2693
|
-
static void next_bdp_ping_timer_expired_locked(
|
2694
|
-
|
2735
|
+
static void next_bdp_ping_timer_expired_locked(
|
2736
|
+
void* tp, GRPC_UNUSED grpc_error_handle error) {
|
2737
|
+
GPR_DEBUG_ASSERT(error.ok());
|
2695
2738
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2696
|
-
GPR_ASSERT(t->
|
2697
|
-
t->
|
2698
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
2699
|
-
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2700
|
-
return;
|
2701
|
-
}
|
2739
|
+
GPR_ASSERT(t->next_bdp_ping_timer_handle.has_value());
|
2740
|
+
t->next_bdp_ping_timer_handle.reset();
|
2702
2741
|
if (t->flow_control.bdp_estimator()->accumulator() == 0) {
|
2703
2742
|
// Block the bdp ping till we receive more data.
|
2704
2743
|
t->bdp_ping_blocked = true;
|
@@ -2767,42 +2806,37 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2767
2806
|
}
|
2768
2807
|
}
|
2769
2808
|
|
2770
|
-
static void init_keepalive_ping(
|
2771
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2809
|
+
static void init_keepalive_ping(grpc_chttp2_transport* t) {
|
2772
2810
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2773
2811
|
init_keepalive_ping_locked, t, nullptr),
|
2774
|
-
|
2812
|
+
absl::OkStatus());
|
2775
2813
|
}
|
2776
2814
|
|
2777
|
-
static void init_keepalive_ping_locked(void* arg,
|
2815
|
+
static void init_keepalive_ping_locked(void* arg,
|
2816
|
+
GRPC_UNUSED grpc_error_handle error) {
|
2817
|
+
GPR_DEBUG_ASSERT(error.ok());
|
2778
2818
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2779
2819
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2780
|
-
|
2820
|
+
GPR_ASSERT(t->keepalive_ping_timer_handle.has_value());
|
2821
|
+
t->keepalive_ping_timer_handle.reset();
|
2822
|
+
if (t->destroying || !t->closed_with_error.ok()) {
|
2781
2823
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2782
|
-
} else
|
2824
|
+
} else {
|
2783
2825
|
if (t->keepalive_permit_without_calls ||
|
2784
2826
|
grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
|
2785
2827
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
|
2786
2828
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end");
|
2787
|
-
grpc_timer_init_unset(&t->keepalive_watchdog_timer);
|
2788
2829
|
send_keepalive_ping_locked(t);
|
2789
2830
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING);
|
2790
2831
|
} else {
|
2791
2832
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2792
|
-
|
2793
|
-
|
2794
|
-
|
2795
|
-
|
2796
|
-
|
2797
|
-
|
2798
|
-
|
2799
|
-
// The keepalive ping timer may be cancelled by bdp
|
2800
|
-
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2801
|
-
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2802
|
-
grpc_schedule_on_exec_ctx);
|
2803
|
-
grpc_timer_init(&t->keepalive_ping_timer,
|
2804
|
-
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
2805
|
-
&t->init_keepalive_ping_locked);
|
2833
|
+
t->keepalive_ping_timer_handle =
|
2834
|
+
t->event_engine->RunAfter(t->keepalive_time, [t] {
|
2835
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2836
|
+
grpc_core::ExecCtx exec_ctx;
|
2837
|
+
init_keepalive_ping(t);
|
2838
|
+
});
|
2839
|
+
}
|
2806
2840
|
}
|
2807
2841
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2808
2842
|
}
|
@@ -2811,12 +2845,12 @@ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
|
2811
2845
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2812
2846
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2813
2847
|
start_keepalive_ping_locked, t, nullptr),
|
2814
|
-
|
2848
|
+
error);
|
2815
2849
|
}
|
2816
2850
|
|
2817
2851
|
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2818
2852
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2819
|
-
if (!
|
2853
|
+
if (!error.ok()) {
|
2820
2854
|
return;
|
2821
2855
|
}
|
2822
2856
|
if (t->channelz_socket != nullptr) {
|
@@ -2824,14 +2858,16 @@ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
|
2824
2858
|
}
|
2825
2859
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2826
2860
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2827
|
-
gpr_log(GPR_INFO, "%s: Start keepalive ping",
|
2861
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping",
|
2862
|
+
std::string(t->peer_string.as_string_view()).c_str());
|
2828
2863
|
}
|
2829
2864
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2830
|
-
|
2831
|
-
|
2832
|
-
|
2833
|
-
|
2834
|
-
|
2865
|
+
t->keepalive_watchdog_timer_handle =
|
2866
|
+
t->event_engine->RunAfter(t->keepalive_timeout, [t] {
|
2867
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2868
|
+
grpc_core::ExecCtx exec_ctx;
|
2869
|
+
keepalive_watchdog_fired(t);
|
2870
|
+
});
|
2835
2871
|
t->keepalive_ping_started = true;
|
2836
2872
|
}
|
2837
2873
|
|
@@ -2839,16 +2875,17 @@ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
|
2839
2875
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2840
2876
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2841
2877
|
finish_keepalive_ping_locked, t, nullptr),
|
2842
|
-
|
2878
|
+
error);
|
2843
2879
|
}
|
2844
2880
|
|
2845
2881
|
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2846
2882
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2847
2883
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2848
|
-
if (
|
2884
|
+
if (error.ok()) {
|
2849
2885
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2850
2886
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2851
|
-
gpr_log(GPR_INFO, "%s: Finish keepalive ping",
|
2887
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping",
|
2888
|
+
std::string(t->peer_string.as_string_view()).c_str());
|
2852
2889
|
}
|
2853
2890
|
if (!t->keepalive_ping_started) {
|
2854
2891
|
// start_keepalive_ping_locked has not run yet. Reschedule
|
@@ -2856,56 +2893,81 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
|
2856
2893
|
t->combiner->Run(
|
2857
2894
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2858
2895
|
finish_keepalive_ping_locked, t, nullptr),
|
2859
|
-
|
2896
|
+
error);
|
2860
2897
|
return;
|
2861
2898
|
}
|
2862
2899
|
t->keepalive_ping_started = false;
|
2863
2900
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING;
|
2864
|
-
|
2901
|
+
if (t->keepalive_watchdog_timer_handle.has_value()) {
|
2902
|
+
if (t->event_engine->Cancel(*t->keepalive_watchdog_timer_handle)) {
|
2903
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2904
|
+
t->keepalive_watchdog_timer_handle.reset();
|
2905
|
+
}
|
2906
|
+
}
|
2907
|
+
GPR_ASSERT(!t->keepalive_ping_timer_handle.has_value());
|
2865
2908
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2866
|
-
|
2867
|
-
|
2868
|
-
|
2869
|
-
|
2870
|
-
|
2909
|
+
t->keepalive_ping_timer_handle =
|
2910
|
+
t->event_engine->RunAfter(t->keepalive_time, [t] {
|
2911
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2912
|
+
grpc_core::ExecCtx exec_ctx;
|
2913
|
+
init_keepalive_ping(t);
|
2914
|
+
});
|
2871
2915
|
}
|
2872
2916
|
}
|
2873
2917
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2874
2918
|
}
|
2875
2919
|
|
2876
|
-
static void keepalive_watchdog_fired(
|
2877
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2920
|
+
static void keepalive_watchdog_fired(grpc_chttp2_transport* t) {
|
2878
2921
|
t->combiner->Run(
|
2879
2922
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
2880
2923
|
keepalive_watchdog_fired_locked, t, nullptr),
|
2881
|
-
|
2924
|
+
absl::OkStatus());
|
2882
2925
|
}
|
2883
2926
|
|
2884
|
-
static void keepalive_watchdog_fired_locked(
|
2885
|
-
|
2927
|
+
static void keepalive_watchdog_fired_locked(
|
2928
|
+
void* arg, GRPC_UNUSED grpc_error_handle error) {
|
2929
|
+
GPR_DEBUG_ASSERT(error.ok());
|
2886
2930
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2931
|
+
GPR_ASSERT(t->keepalive_watchdog_timer_handle.has_value());
|
2932
|
+
t->keepalive_watchdog_timer_handle.reset();
|
2887
2933
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2892
|
-
|
2893
|
-
|
2894
|
-
|
2895
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
2896
|
-
GRPC_STATUS_UNAVAILABLE));
|
2897
|
-
}
|
2934
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2935
|
+
std::string(t->peer_string.as_string_view()).c_str());
|
2936
|
+
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2937
|
+
close_transport_locked(
|
2938
|
+
t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
|
2939
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
2940
|
+
GRPC_STATUS_UNAVAILABLE));
|
2898
2941
|
} else {
|
2899
|
-
//
|
2900
|
-
// finish_keepalive_ping_locked.
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2904
|
-
}
|
2942
|
+
// If keepalive_state is not PINGING, we consider it as an error. Maybe the
|
2943
|
+
// cancellation failed in finish_keepalive_ping_locked. Users have seen
|
2944
|
+
// other states: https://github.com/grpc/grpc/issues/32085.
|
2945
|
+
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2946
|
+
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
2905
2947
|
}
|
2906
2948
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2907
2949
|
}
|
2908
2950
|
|
2951
|
+
static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
|
2952
|
+
if (t->keepalive_ping_timer_handle.has_value()) {
|
2953
|
+
if (t->event_engine->Cancel(*t->keepalive_ping_timer_handle)) {
|
2954
|
+
// Cancel succeeds, resets the keepalive ping timer. Note that we don't
|
2955
|
+
// need to Ref or Unref here since we still hold the Ref.
|
2956
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2957
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2958
|
+
gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
|
2959
|
+
std::string(t->peer_string.as_string_view()).c_str());
|
2960
|
+
}
|
2961
|
+
t->keepalive_ping_timer_handle =
|
2962
|
+
t->event_engine->RunAfter(t->keepalive_time, [t] {
|
2963
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2964
|
+
grpc_core::ExecCtx exec_ctx;
|
2965
|
+
init_keepalive_ping(t);
|
2966
|
+
});
|
2967
|
+
}
|
2968
|
+
}
|
2969
|
+
}
|
2970
|
+
|
2909
2971
|
//
|
2910
2972
|
// CALLBACK LOOP
|
2911
2973
|
//
|
@@ -2951,7 +3013,7 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
|
2951
3013
|
benign_reclaimer_locked, t,
|
2952
3014
|
grpc_schedule_on_exec_ctx);
|
2953
3015
|
t->active_reclamation = std::move(*sweep);
|
2954
|
-
t->combiner->Run(&t->benign_reclaimer_locked,
|
3016
|
+
t->combiner->Run(&t->benign_reclaimer_locked, absl::OkStatus());
|
2955
3017
|
} else {
|
2956
3018
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
2957
3019
|
}
|
@@ -2971,9 +3033,10 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
2971
3033
|
destructive_reclaimer_locked, t,
|
2972
3034
|
grpc_schedule_on_exec_ctx);
|
2973
3035
|
t->active_reclamation = std::move(*sweep);
|
2974
|
-
t->combiner->Run(&t->destructive_reclaimer_locked,
|
3036
|
+
t->combiner->Run(&t->destructive_reclaimer_locked,
|
3037
|
+
absl::OkStatus());
|
2975
3038
|
} else {
|
2976
|
-
GRPC_CHTTP2_UNREF_TRANSPORT(t, "
|
3039
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
2977
3040
|
}
|
2978
3041
|
});
|
2979
3042
|
}
|
@@ -2981,29 +3044,27 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
2981
3044
|
|
2982
3045
|
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
2983
3046
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2984
|
-
if (
|
2985
|
-
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3047
|
+
if (error.ok() && grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
2986
3048
|
// Channel with no active streams: send a goaway to try and make it
|
2987
3049
|
// disconnect cleanly
|
2988
3050
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
2989
3051
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
2990
|
-
t->peer_string.c_str());
|
3052
|
+
std::string(t->peer_string.as_string_view()).c_str());
|
2991
3053
|
}
|
2992
3054
|
send_goaway(t,
|
2993
|
-
grpc_error_set_int(
|
2994
|
-
|
2995
|
-
|
3055
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
|
3056
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
3057
|
+
GRPC_HTTP2_ENHANCE_YOUR_CALM),
|
2996
3058
|
/*immediate_disconnect_hint=*/true);
|
2997
|
-
} else if (
|
2998
|
-
GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3059
|
+
} else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
2999
3060
|
gpr_log(GPR_INFO,
|
3000
3061
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3001
3062
|
" streams",
|
3002
|
-
t->peer_string.c_str(),
|
3063
|
+
std::string(t->peer_string.as_string_view()).c_str(),
|
3003
3064
|
grpc_chttp2_stream_map_size(&t->stream_map));
|
3004
3065
|
}
|
3005
3066
|
t->benign_reclaimer_registered = false;
|
3006
|
-
if (error !=
|
3067
|
+
if (error != absl::CancelledError()) {
|
3007
3068
|
t->active_reclamation.Finish();
|
3008
3069
|
}
|
3009
3070
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
@@ -3013,17 +3074,17 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
|
3013
3074
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3014
3075
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3015
3076
|
t->destructive_reclaimer_registered = false;
|
3016
|
-
if (
|
3077
|
+
if (error.ok() && n > 0) {
|
3017
3078
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3018
3079
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3019
3080
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3020
3081
|
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3021
|
-
t->peer_string.c_str(), s->id);
|
3082
|
+
std::string(t->peer_string.as_string_view()).c_str(), s->id);
|
3022
3083
|
}
|
3023
3084
|
grpc_chttp2_cancel_stream(
|
3024
3085
|
t, s,
|
3025
|
-
grpc_error_set_int(
|
3026
|
-
|
3086
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
|
3087
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
3027
3088
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3028
3089
|
if (n > 1) {
|
3029
3090
|
// Since we cancel one stream per destructive reclamation, if
|
@@ -3033,7 +3094,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
|
3033
3094
|
post_destructive_reclaimer(t);
|
3034
3095
|
}
|
3035
3096
|
}
|
3036
|
-
if (error !=
|
3097
|
+
if (error != absl::CancelledError()) {
|
3037
3098
|
t->active_reclamation.Finish();
|
3038
3099
|
}
|
3039
3100
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
@@ -3099,6 +3160,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
|
|
3099
3160
|
}
|
3100
3161
|
|
3101
3162
|
static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
|
3163
|
+
false,
|
3102
3164
|
"chttp2",
|
3103
3165
|
init_stream,
|
3104
3166
|
nullptr,
|
@@ -3120,7 +3182,8 @@ grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
|
|
3120
3182
|
}
|
3121
3183
|
|
3122
3184
|
grpc_transport* grpc_create_chttp2_transport(
|
3123
|
-
const
|
3185
|
+
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
3186
|
+
bool is_client) {
|
3124
3187
|
auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
|
3125
3188
|
return &t->base;
|
3126
3189
|
}
|
@@ -3131,14 +3194,29 @@ void grpc_chttp2_transport_start_reading(
|
|
3131
3194
|
grpc_chttp2_transport* t =
|
3132
3195
|
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
3133
3196
|
GRPC_CHTTP2_REF_TRANSPORT(
|
3134
|
-
t, "reading_action");
|
3197
|
+
t, "reading_action"); // matches unref inside reading_action
|
3135
3198
|
if (read_buffer != nullptr) {
|
3136
3199
|
grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
|
3137
3200
|
gpr_free(read_buffer);
|
3138
3201
|
}
|
3139
|
-
t->notify_on_receive_settings = notify_on_receive_settings;
|
3140
|
-
t->notify_on_close = notify_on_close;
|
3141
3202
|
t->combiner->Run(
|
3142
|
-
|
3143
|
-
|
3203
|
+
grpc_core::NewClosure([t, notify_on_receive_settings,
|
3204
|
+
notify_on_close](grpc_error_handle) {
|
3205
|
+
if (!t->closed_with_error.ok()) {
|
3206
|
+
if (notify_on_receive_settings != nullptr) {
|
3207
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
|
3208
|
+
t->closed_with_error);
|
3209
|
+
}
|
3210
|
+
if (notify_on_close != nullptr) {
|
3211
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_close,
|
3212
|
+
t->closed_with_error);
|
3213
|
+
}
|
3214
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
|
3215
|
+
return;
|
3216
|
+
}
|
3217
|
+
t->notify_on_receive_settings = notify_on_receive_settings;
|
3218
|
+
t->notify_on_close = notify_on_close;
|
3219
|
+
read_action_locked(t, absl::OkStatus());
|
3220
|
+
}),
|
3221
|
+
absl::OkStatus());
|
3144
3222
|
}
|