grpc 1.81.1 → 1.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +15 -9
- data/etc/roots.pem +10400 -3855
- data/include/grpc/grpc.h +6 -7
- data/include/grpc/grpc_audit_logging.h +2 -2
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +26 -1
- data/src/core/call/call_filters.h +21 -5
- data/src/core/call/call_spine.h +4 -4
- data/src/core/call/client_call.cc +2 -2
- data/src/core/call/interception_chain.h +6 -9
- data/src/core/call/metadata.cc +7 -2
- data/src/core/call/metadata.h +1 -1
- data/src/core/call/metadata_batch.cc +1 -1
- data/src/core/call/metadata_batch.h +17 -1
- data/src/core/call/parsed_metadata.h +7 -2
- data/src/core/call/server_call.cc +16 -4
- data/src/core/call/server_call.h +14 -5
- data/src/core/call/status_util.cc +0 -4
- data/src/core/call/status_util.h +0 -3
- data/src/core/channelz/channel_trace.cc +3 -1
- data/src/core/client_channel/backup_poller.cc +2 -17
- data/src/core/client_channel/client_channel.cc +23 -28
- data/src/core/client_channel/client_channel.h +5 -3
- data/src/core/client_channel/client_channel_filter.cc +19 -30
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/client_channel/client_channel_service_config.cc +5 -13
- data/src/core/client_channel/config_selector.h +2 -7
- data/src/core/client_channel/direct_channel.cc +5 -1
- data/src/core/client_channel/direct_channel.h +3 -1
- data/src/core/client_channel/dynamic_filters.cc +4 -7
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/retry_filter.cc +2 -25
- data/src/core/client_channel/retry_filter.h +3 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +1 -1
- data/src/core/client_channel/retry_filter_legacy_call_data.h +2 -2
- data/src/core/client_channel/retry_interceptor.cc +7 -35
- data/src/core/client_channel/retry_interceptor.h +11 -14
- data/src/core/client_channel/retry_service_config.cc +0 -2
- data/src/core/client_channel/retry_service_config.h +0 -2
- data/src/core/client_channel/retry_throttle.cc +19 -7
- data/src/core/client_channel/retry_throttle.h +24 -7
- data/src/core/client_channel/subchannel.cc +1 -1
- data/src/core/{filter/blackboard.cc → config/experiment_env_var.cc} +11 -14
- data/src/core/config/experiment_env_var.h +26 -0
- data/src/core/credentials/call/external/external_account_credentials.cc +125 -12
- data/src/core/credentials/call/external/external_account_credentials.h +6 -1
- data/src/core/credentials/call/jwt/jwt_credentials.cc +11 -1
- data/src/core/credentials/call/jwt/jwt_credentials.h +3 -0
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +64 -11
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +0 -1
- data/src/core/credentials/call/regional_access_boundary_fetcher.cc +411 -0
- data/src/core/credentials/call/regional_access_boundary_fetcher.h +158 -0
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +1 -1
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +7 -1
- data/src/core/credentials/transport/insecure/insecure_security_connector.h +1 -1
- data/src/core/credentials/transport/local/local_security_connector.cc +1 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +14 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.cc +172 -0
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +103 -0
- data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +3 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +10 -3
- data/src/core/credentials/transport/tls/tls_security_connector.cc +14 -2
- data/src/core/credentials/transport/xds/xds_credentials.cc +4 -12
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +28 -66
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +24 -58
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +24 -19
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -81
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -50
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +13 -56
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -14
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +184 -54
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +84 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -2
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +2 -4
- data/src/core/ext/transport/chttp2/transport/frame.cc +120 -13
- data/src/core/ext/transport/chttp2/transport/frame.h +57 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +10 -1
- data/src/core/ext/transport/chttp2/transport/frame_security.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/goaway.cc +11 -1
- data/src/core/ext/transport/chttp2/transport/goaway.h +17 -1
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +54 -22
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +53 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +22 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +20 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +42 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +219 -417
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +49 -29
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +2073 -0
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +746 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +49 -15
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +0 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +74 -26
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +39 -15
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +18 -48
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +1 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +85 -26
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +4 -10
- data/src/core/ext/transport/chttp2/transport/read_context.h +494 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +13 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +287 -137
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +83 -65
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +9 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +16 -2
- data/src/core/ext/upb-gen/cel/expr/checked.upb.h +621 -432
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +264 -166
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +0 -13
- data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +708 -497
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +294 -176
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +0 -15
- data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +262 -181
- data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +84 -58
- data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +254 -190
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +107 -53
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +271 -190
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +88 -64
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +1035 -730
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +384 -260
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +0 -19
- data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +87 -56
- data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +26 -16
- data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +105 -71
- data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +30 -22
- data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +31 -29
- data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +19 -7
- data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +25 -23
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +25 -23
- data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +201 -165
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +79 -31
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +29 -26
- data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +46 -29
- data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +37 -19
- data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +4 -4
- data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +34 -27
- data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +34 -13
- data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +617 -452
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +221 -163
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +0 -16
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1339 -970
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +484 -324
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +0 -23
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +181 -135
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +59 -43
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1353 -1028
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +535 -361
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +0 -25
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +37 -33
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +19 -13
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +234 -196
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +77 -57
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +695 -502
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +246 -186
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +0 -15
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +140 -116
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +53 -43
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +363 -269
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +131 -89
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +0 -8
- data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +35 -31
- data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +15 -13
- data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +1073 -769
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +515 -293
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +0 -30
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +25 -23
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +375 -267
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +142 -86
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +0 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +32 -27
- data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +29 -26
- data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +87 -56
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +26 -16
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +634 -468
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +255 -161
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +0 -14
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -474
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +228 -130
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +0 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +56 -40
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +15 -13
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +34 -29
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +19 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +811 -635
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +347 -221
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +0 -16
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +174 -118
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +62 -38
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +78 -57
- data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +28 -18
- data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +37 -33
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +22 -14
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +159 -119
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +47 -35
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +101 -76
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +41 -23
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +35 -31
- data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +15 -13
- data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +189 -127
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +79 -49
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +378 -283
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +156 -98
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +0 -8
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +354 -255
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +125 -69
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +0 -6
- data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +611 -451
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +159 -119
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +0 -11
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +468 -321
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +157 -99
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -6
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +146 -119
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +55 -35
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +61 -51
- data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -16
- data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +43 -39
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +25 -13
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +341 -247
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +130 -84
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +0 -8
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +452 -313
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +144 -100
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +0 -10
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +666 -493
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +251 -181
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +0 -12
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +327 -197
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +92 -48
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3583 -2532
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1340 -816
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +0 -60
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +111 -82
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +48 -28
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +548 -410
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +214 -148
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +0 -12
- data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +59 -50
- data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +30 -20
- data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +29 -26
- data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +60 -49
- data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +28 -20
- data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +50 -36
- data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +19 -11
- data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +82 -63
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +27 -19
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +70 -58
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +32 -22
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -5
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +73 -62
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +39 -25
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +49 -45
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +33 -13
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +771 -588
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +383 -185
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +0 -16
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -47
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +31 -17
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +69 -58
- data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +27 -23
- data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +151 -119
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +45 -39
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +19 -17
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +1 -3
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +144 -109
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +46 -38
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +184 -139
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +65 -35
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +129 -106
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +69 -41
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +83 -71
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +40 -26
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +148 -101
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +45 -27
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +62 -51
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +35 -21
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1362 -1024
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +508 -336
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +0 -22
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +21 -19
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +13 -7
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +35 -31
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +15 -13
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +94 -74
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +35 -23
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +231 -179
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +88 -66
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +0 -6
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +21 -19
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +13 -7
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +63 -56
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +31 -19
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +27 -24
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -5
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +538 -364
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +157 -95
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +0 -8
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -110
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +69 -49
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +517 -389
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +182 -116
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +0 -7
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +84 -62
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +30 -22
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +340 -256
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +92 -82
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +19 -17
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -3
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +857 -566
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +288 -182
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +0 -15
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +105 -72
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +36 -22
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +312 -226
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +132 -78
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +82 -61
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -19
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +123 -89
- data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +25 -25
- data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +48 -33
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -36
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +19 -13
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +101 -79
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +61 -31
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +83 -60
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +37 -19
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +56 -40
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +15 -13
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +34 -29
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +32 -27
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +13 -11
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +88 -71
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +48 -30
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +37 -30
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +1 -5
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +95 -71
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +36 -22
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +79 -56
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +26 -18
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +164 -124
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +54 -40
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +200 -147
- data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +47 -41
- data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +0 -7
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +160 -130
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +89 -47
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +0 -5
- data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +78 -62
- data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +26 -20
- data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -5
- data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +21 -19
- data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +13 -7
- data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +43 -36
- data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +22 -12
- data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +67 -55
- data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +36 -18
- data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +62 -51
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +33 -19
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -5
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +25 -23
- data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +37 -33
- data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +19 -13
- data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/api/annotations.upb.h +15 -13
- data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +22 -7
- data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +1 -1
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +619 -430
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +260 -168
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +0 -13
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +734 -518
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +312 -182
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +0 -16
- data/src/core/ext/upb-gen/google/api/http.upb.h +146 -105
- data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +65 -29
- data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/google/api/httpbody.upb.h +52 -37
- data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +19 -11
- data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/protobuf/any.upb.h +23 -21
- data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2236 -1514
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +824 -406
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +0 -34
- data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +23 -21
- data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +19 -17
- data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -3
- data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +149 -100
- data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +59 -43
- data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +23 -21
- data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +15 -7
- data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +181 -139
- data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +99 -53
- data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +0 -9
- data/src/core/ext/upb-gen/google/rpc/status.upb.h +52 -37
- data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +19 -11
- data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +1553 -1157
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +712 -410
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +0 -39
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +189 -125
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +59 -35
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +454 -343
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +204 -130
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +0 -11
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +369 -243
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +109 -79
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +0 -7
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +256 -175
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +122 -68
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +0 -8
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +71 -51
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +39 -19
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +583 -407
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +259 -145
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +0 -12
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +114 -84
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +52 -30
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +41 -34
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +25 -13
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +309 -230
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +123 -79
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +0 -9
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +98 -63
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +51 -23
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +505 -312
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +159 -87
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +0 -9
- data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +128 -91
- data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +82 -41
- data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -8
- data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +36 -29
- data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +36 -13
- data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +13 -11
- data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +22 -7
- data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +1 -1
- data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +36 -29
- data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +36 -13
- data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +34 -27
- data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +34 -13
- data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/validate/validate.upb.h +1682 -1130
- data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +587 -247
- data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -27
- data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +128 -91
- data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +82 -41
- data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -8
- data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +36 -29
- data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +36 -13
- data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +13 -11
- data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +22 -7
- data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +1 -1
- data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +122 -90
- data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +82 -39
- data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -7
- data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +34 -27
- data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +34 -13
- data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +1 -2
- data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +21 -19
- data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +13 -7
- data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +29 -26
- data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +70 -58
- data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +32 -22
- data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +53 -34
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +26 -16
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +29 -26
- data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +37 -33
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +22 -14
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +102 -76
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +43 -23
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +33 -30
- data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +19 -11
- data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +136 -83
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +41 -33
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +0 -4
- data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +46 -32
- data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +29 -26
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +93 -61
- data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +28 -20
- data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +19 -17
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -3
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +105 -71
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +32 -22
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +430 -314
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +153 -123
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +0 -10
- data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +307 -199
- data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +74 -62
- data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +0 -6
- data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +52 -42
- data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +19 -13
- data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +95 -71
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +36 -22
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +92 -77
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +42 -28
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +67 -55
- data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +36 -18
- data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +0 -3
- data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +29 -26
- data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +17 -11
- data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +0 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +885 -855
- data/src/core/filter/composite/composite_filter.cc +10 -3
- data/src/core/filter/composite/composite_filter.h +11 -1
- data/src/core/filter/filter_args.h +4 -22
- data/src/core/handshaker/handshaker.cc +10 -2
- data/src/core/handshaker/security/secure_endpoint.cc +60 -5
- data/src/core/lib/channel/channel_args.h +12 -6
- data/src/core/lib/channel/channel_stack.cc +1 -2
- data/src/core/lib/channel/channel_stack.h +1 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -7
- data/src/core/lib/channel/promise_based_filter.cc +90 -4
- data/src/core/lib/channel/promise_based_filter.h +241 -188
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -13
- data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +44 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
- data/src/core/lib/event_engine/posix.h +2 -0
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +11 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +9 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +10 -10
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
- data/src/core/lib/event_engine/shim.cc +2 -16
- data/src/core/lib/event_engine/shim.h +0 -4
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -4
- data/src/core/lib/experiments/experiments.cc +303 -183
- data/src/core/lib/experiments/experiments.h +166 -90
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/error.cc +3 -73
- data/src/core/lib/iomgr/error.h +8 -6
- data/src/core/lib/iomgr/error_cfstream.cc +1 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +2 -6
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +4 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +8 -8
- data/src/core/lib/promise/interceptor_list.h +1 -1
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/telemetry.cc +54 -0
- data/src/core/lib/resource_quota/telemetry.h +5 -23
- data/src/core/lib/security/authorization/audit_logging.cc +2 -2
- data/src/core/lib/security/authorization/audit_logging.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +11 -13
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +20 -20
- data/src/core/lib/security/authorization/matchers.h +15 -16
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
- data/src/core/lib/security/authorization/stdout_logger.h +6 -5
- data/src/core/lib/surface/call.cc +6 -9
- data/src/core/lib/surface/call.h +11 -0
- data/src/core/lib/surface/channel.cc +21 -2
- data/src/core/lib/surface/channel.h +14 -6
- data/src/core/lib/surface/filter_stack_call.cc +10 -29
- data/src/core/lib/surface/legacy_channel.cc +7 -7
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +13 -13
- data/src/core/lib/transport/bdp_estimator.h +9 -5
- data/src/core/lib/transport/error_utils.cc +26 -138
- data/src/core/lib/transport/promise_endpoint.h +8 -8
- data/src/core/lib/transport/transport.h +31 -4
- data/src/core/load_balancing/grpclb/grpclb.cc +2 -1
- data/src/core/load_balancing/pick_first/pick_first.cc +33 -2
- data/src/core/load_balancing/pick_first/pick_first.h +6 -0
- data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -10
- data/src/core/load_balancing/rls/rls.cc +2 -1
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +141 -74
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +88 -0
- data/src/core/load_balancing/xds/cds.cc +80 -56
- data/src/core/load_balancing/xds/cds.h +21 -0
- data/src/core/mitigation_engine/mitigation.h +53 -0
- data/src/core/mitigation_engine/mitigation_engine.h +81 -0
- data/src/core/mitigation_engine/mitigation_provider.h +62 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -5
- data/src/core/resolver/dns/dns_resolver_plugin.cc +1 -6
- data/src/core/resolver/xds/xds_resolver.cc +37 -144
- data/src/core/server/server.cc +40 -18
- data/src/core/server/server.h +26 -18
- data/src/core/server/server_config_selector.h +5 -4
- data/src/core/server/server_config_selector_filter.cc +135 -26
- data/src/core/server/server_config_selector_filter.h +1 -0
- data/src/core/server/xds_server_config_fetcher.cc +687 -692
- data/src/core/server/xds_server_config_fetcher_legacy.cc +1336 -0
- data/src/core/telemetry/call_tracer.cc +49 -2
- data/src/core/telemetry/call_tracer.h +1 -0
- data/src/core/telemetry/histogram.h +10 -89
- data/src/core/telemetry/instrument.h +42 -28
- data/src/core/telemetry/tcp_tracer.h +38 -0
- data/src/core/transport/message_size_service_config.cc +123 -0
- data/src/core/transport/message_size_service_config.h +85 -0
- data/src/core/transport/session_endpoint.cc +29 -4
- data/src/core/transport/session_endpoint.h +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl_telemetry_utils.cc +343 -0
- data/src/core/tsi/ssl_telemetry_utils.h +74 -0
- data/src/core/tsi/ssl_transport_security.cc +583 -305
- data/src/core/tsi/ssl_transport_security.h +22 -6
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -0
- data/src/core/tsi/transport_security.h +7 -0
- data/src/core/util/http_client/httpcli.cc +1 -4
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
- data/src/core/util/http_client/parser.cc +1 -1
- data/src/core/util/lru_cache.h +2 -0
- data/src/core/util/ref_counted_string.h +1 -1
- data/src/core/util/status_helper.cc +71 -192
- data/src/core/util/status_helper.h +16 -21
- data/src/core/util/tchar.cc +13 -7
- data/src/core/util/trie_lookup.h +1 -1
- data/src/core/xds/grpc/blackboard.cc +58 -0
- data/src/core/{filter → xds/grpc}/blackboard.h +30 -11
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -11
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -7
- data/src/core/xds/grpc/xds_cluster_parser.cc +5 -16
- data/src/core/xds/grpc/xds_common_types.cc +96 -0
- data/src/core/xds/grpc/xds_common_types.h +35 -7
- data/src/core/xds/grpc/xds_common_types_parser.cc +205 -134
- data/src/core/xds/grpc/xds_common_types_parser.h +18 -1
- data/src/core/xds/grpc/xds_endpoint_parser.cc +7 -18
- data/src/core/xds/grpc/xds_http_composite_filter.cc +34 -18
- data/src/core/xds/grpc/xds_http_composite_filter.h +6 -3
- data/src/core/xds/grpc/xds_http_fault_filter.cc +0 -149
- data/src/core/xds/grpc/xds_http_fault_filter.h +19 -8
- data/src/core/xds/grpc/xds_http_filter.cc +2 -1
- data/src/core/xds/grpc/xds_http_filter.h +6 -16
- data/src/core/xds/grpc/xds_http_filter_registry.cc +2 -12
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +25 -119
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +27 -15
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -12
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +0 -149
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -8
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +18 -0
- data/src/core/xds/grpc/xds_listener_parser.cc +13 -9
- data/src/core/xds/grpc/xds_metadata_parser.cc +0 -2
- data/src/core/xds/grpc/xds_route_config.h +1 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +10 -16
- data/src/core/xds/grpc/xds_routing.cc +115 -90
- data/src/core/xds/grpc/xds_routing.h +73 -24
- data/src/core/xds/grpc/xds_server_grpc.cc +22 -13
- data/src/core/xds/grpc/xds_server_grpc.h +16 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +10 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +123 -18
- data/src/core/xds/grpc/xds_transport_grpc.h +28 -4
- data/src/core/xds/xds_client/lrs_client.cc +4 -8
- data/src/core/xds/xds_client/xds_bootstrap.cc +4 -16
- data/src/core/xds/xds_client/xds_client.cc +2 -15
- data/src/core/xds/xds_client/xds_transport.h +3 -0
- data/src/ruby/ext/grpc/rb_byte_buffer.c +1 -0
- data/src/ruby/ext/grpc/rb_call.c +3 -0
- data/src/ruby/ext/grpc/rb_call_credentials.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_channel_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -6
- data/src/ruby/ext/grpc/rb_server.c +1 -0
- data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
- data/src/ruby/lib/grpc/core/call_credentials.rb +86 -0
- data/src/ruby/lib/grpc/core/channel_credentials.rb +69 -0
- data/src/ruby/lib/grpc/core/credentials_helper.rb +126 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +86 -73
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/lib/grpc.rb +25 -0
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
- data/src/ruby/spec/call_credentials_spec.rb +52 -2
- data/src/ruby/spec/credentials_helper_spec.rb +80 -0
- data/src/ruby/spec/generic/client_stub_spec.rb +27 -4
- data/src/ruby/spec/generic/server_interceptors_spec.rb +17 -3
- data/third_party/upb/upb/base/error_handler.h +79 -0
- data/third_party/upb/upb/base/internal/log2.h +29 -5
- data/third_party/upb/upb/generated_code_support.h +1 -0
- data/third_party/upb/upb/hash/common.c +129 -14
- data/third_party/upb/upb/hash/common.h +1 -1
- data/third_party/upb/upb/hash/ext_table.h +65 -0
- data/third_party/upb/upb/lex/strtod.c +14 -5
- data/third_party/upb/upb/mem/arena.c +113 -95
- data/third_party/upb/upb/mem/internal/arena.h +13 -8
- data/third_party/upb/upb/message/accessors.c +2 -3
- data/third_party/upb/upb/message/accessors.h +32 -12
- data/third_party/upb/upb/message/array.c +51 -2
- data/third_party/upb/upb/message/array.h +10 -0
- data/third_party/upb/upb/message/copy.c +18 -34
- data/third_party/upb/upb/message/internal/accessors.h +15 -49
- data/third_party/upb/upb/message/internal/array.h +1 -1
- data/third_party/upb/upb/message/internal/map.h +1 -1
- data/third_party/upb/upb/message/internal/message.c +8 -1
- data/third_party/upb/upb/message/internal/message.h +40 -10
- data/third_party/upb/upb/message/message.c +3 -2
- data/third_party/upb/upb/message/value.h +0 -6
- data/third_party/upb/upb/mini_descriptor/decode.c +78 -59
- data/third_party/upb/upb/mini_descriptor/link.c +8 -6
- data/third_party/upb/upb/mini_table/extension_registry.c +17 -49
- data/third_party/upb/upb/mini_table/extension_registry.h +5 -17
- data/third_party/upb/upb/mini_table/generated_registry.c +180 -0
- data/third_party/upb/upb/mini_table/generated_registry.h +66 -0
- data/third_party/upb/upb/mini_table/internal/extension.h +5 -3
- data/third_party/upb/upb/mini_table/internal/field.h +7 -5
- data/third_party/upb/upb/mini_table/internal/generated_registry.h +37 -0
- data/third_party/upb/upb/mini_table/internal/message.c +0 -18
- data/third_party/upb/upb/mini_table/internal/message.h +24 -41
- data/third_party/upb/upb/mini_table/internal/size_log2.h +2 -1
- data/third_party/upb/upb/mini_table/internal/sub.h +2 -5
- data/third_party/upb/upb/mini_table/message.h +34 -13
- data/third_party/upb/upb/port/atomic.h +180 -74
- data/third_party/upb/upb/port/def.inc +194 -29
- data/third_party/upb/upb/port/sanitizers.h +15 -0
- data/third_party/upb/upb/port/undef.inc +6 -2
- data/third_party/upb/upb/reflection/common.h +0 -6
- data/third_party/upb/upb/reflection/def.hpp +8 -12
- data/third_party/upb/upb/reflection/def_pool.c +85 -33
- data/third_party/upb/upb/reflection/def_pool.h +38 -8
- data/third_party/upb/upb/reflection/def_type.h +3 -0
- data/third_party/upb/upb/reflection/enum_def.c +45 -33
- data/third_party/upb/upb/reflection/enum_def.h +8 -4
- data/third_party/upb/upb/reflection/enum_reserved_range.c +7 -3
- data/third_party/upb/upb/reflection/enum_value_def.c +14 -29
- data/third_party/upb/upb/reflection/enum_value_def.h +5 -4
- data/third_party/upb/upb/reflection/extension_range.c +15 -14
- data/third_party/upb/upb/reflection/extension_range.h +7 -4
- data/third_party/upb/upb/reflection/field_def.c +114 -96
- data/third_party/upb/upb/reflection/field_def.h +3 -3
- data/third_party/upb/upb/reflection/file_def.c +71 -65
- data/third_party/upb/upb/reflection/file_def.h +4 -5
- data/third_party/upb/upb/reflection/internal/def_builder.c +22 -14
- data/third_party/upb/upb/reflection/internal/def_builder.h +44 -38
- data/third_party/upb/upb/reflection/internal/def_pool.h +5 -1
- data/third_party/upb/upb/reflection/internal/enum_def.h +6 -4
- data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +3 -2
- data/third_party/upb/upb/reflection/internal/enum_value_def.h +7 -4
- data/third_party/upb/upb/reflection/internal/extension_range.h +4 -3
- data/third_party/upb/upb/reflection/internal/field_def.h +15 -12
- data/third_party/upb/upb/reflection/internal/file_def.h +8 -1
- data/third_party/upb/upb/reflection/internal/message_def.h +10 -7
- data/third_party/upb/upb/reflection/internal/message_reserved_range.h +3 -1
- data/third_party/upb/upb/reflection/internal/method_def.h +6 -6
- data/third_party/upb/upb/reflection/internal/oneof_def.h +6 -6
- data/third_party/upb/upb/reflection/internal/service_def.h +9 -6
- data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
- data/third_party/upb/upb/reflection/message_def.c +46 -53
- data/third_party/upb/upb/reflection/message_def.h +6 -7
- data/third_party/upb/upb/reflection/message_reserved_range.c +7 -6
- data/third_party/upb/upb/reflection/method_def.c +22 -20
- data/third_party/upb/upb/reflection/method_def.h +4 -4
- data/third_party/upb/upb/reflection/oneof_def.c +17 -15
- data/third_party/upb/upb/reflection/oneof_def.h +6 -3
- data/third_party/upb/upb/reflection/service_def.c +50 -23
- data/third_party/upb/upb/reflection/service_def.h +7 -4
- data/third_party/upb/upb/text/internal/encode.c +7 -10
- data/third_party/upb/upb/wire/decode.c +269 -430
- data/third_party/upb/upb/wire/decode.h +6 -45
- data/third_party/upb/upb/wire/decode_fast/combinations.h +7 -3
- data/third_party/upb/upb/wire/decode_fast/select.c +7 -2
- data/third_party/upb/upb/wire/encode.c +144 -106
- data/third_party/upb/upb/wire/encode.h +6 -2
- data/third_party/upb/upb/wire/eps_copy_input_stream.c +36 -7
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +94 -380
- data/third_party/upb/upb/wire/internal/decoder.c +1 -14
- data/third_party/upb/upb/wire/internal/decoder.h +84 -24
- data/third_party/upb/upb/wire/internal/eps_copy_input_stream.h +339 -0
- data/third_party/upb/upb/wire/internal/reader.h +29 -12
- data/third_party/upb/upb/wire/reader.c +35 -22
- data/third_party/upb/upb/wire/reader.h +11 -18
- data/third_party/utf8_range/utf8_range.c +1 -1
- data/third_party/utf8_range/utf8_range.h +2 -1
- metadata +35 -13
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +0 -117
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +0 -109
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +0 -80
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +0 -86
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +0 -83
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +0 -91
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +0 -217
- data/third_party/upb/upb/message/internal/tagged_ptr.h +0 -56
- data/third_party/upb/upb/message/tagged_ptr.h +0 -48
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
|
48
48
|
#include "src/core/ext/transport/chttp2/transport/http2_transport.h"
|
|
49
49
|
#include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h"
|
|
50
|
-
#include "src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h"
|
|
51
50
|
#include "src/core/ext/transport/chttp2/transport/keepalive.h"
|
|
52
51
|
#include "src/core/ext/transport/chttp2/transport/message_assembler.h"
|
|
53
52
|
#include "src/core/ext/transport/chttp2/transport/ping_promise.h"
|
|
53
|
+
#include "src/core/ext/transport/chttp2/transport/read_context.h"
|
|
54
54
|
#include "src/core/ext/transport/chttp2/transport/security_frame.h"
|
|
55
55
|
#include "src/core/ext/transport/chttp2/transport/stream.h"
|
|
56
56
|
#include "src/core/ext/transport/chttp2/transport/stream_data_queue.h"
|
|
@@ -243,15 +243,18 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
|
|
|
243
243
|
|
|
244
244
|
RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
|
|
245
245
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
246
|
+
if (frame.payload.Length() > 0) {
|
|
247
|
+
// DATA frames with empty payload are legitimate frames. CHTTP2 and PH2 send
|
|
248
|
+
// empty DATA frames with END_Stream flag set to true.
|
|
249
|
+
ValueOrHttp2Status<chttp2::FlowControlAction> flow_control_action =
|
|
250
|
+
ProcessIncomingDataFrameFlowControl(
|
|
251
|
+
read_context_.GetCurrentFrameHeader(), flow_control_, stream.get());
|
|
252
|
+
if (!flow_control_action.IsOk()) {
|
|
253
|
+
return ValueOrHttp2Status<chttp2::FlowControlAction>::TakeStatus(
|
|
254
|
+
std::move(flow_control_action));
|
|
255
|
+
}
|
|
256
|
+
ActOnFlowControlAction(flow_control_action.value(), stream.get());
|
|
252
257
|
}
|
|
253
|
-
ActOnFlowControlAction(flow_control_action.value(), stream.get());
|
|
254
|
-
|
|
255
258
|
if (stream == nullptr) {
|
|
256
259
|
// TODO(tjagtap) : [PH2][P2] : Implement the correct behaviour later.
|
|
257
260
|
// RFC9113 : If a DATA frame is received whose stream is not in the "open"
|
|
@@ -263,9 +266,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
|
|
|
263
266
|
return Http2Status::Ok();
|
|
264
267
|
}
|
|
265
268
|
|
|
266
|
-
// TODO(akshitpatel) : [PH2][P3] : We should add a check to reset stream if
|
|
267
|
-
// the stream state is kIdle as well.
|
|
268
|
-
|
|
269
269
|
Http2Status stream_status = stream->CanStreamReceiveDataFrames();
|
|
270
270
|
if (!stream_status.IsOk()) {
|
|
271
271
|
return stream_status;
|
|
@@ -300,8 +300,7 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
|
|
|
300
300
|
if (message != nullptr) {
|
|
301
301
|
GRPC_HTTP2_CLIENT_DLOG
|
|
302
302
|
<< "Http2ClientTransport::ProcessIncomingFrame(DataFrame) "
|
|
303
|
-
"SpawnPushMessage "
|
|
304
|
-
<< message->DebugString();
|
|
303
|
+
"SpawnPushMessage ";
|
|
305
304
|
stream->GetCallHandler().SpawnPushMessage(std::move(message));
|
|
306
305
|
continue;
|
|
307
306
|
}
|
|
@@ -310,26 +309,20 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2DataFrame&& frame) {
|
|
|
310
309
|
break;
|
|
311
310
|
}
|
|
312
311
|
|
|
313
|
-
// TODO(tjagtap) : [PH2][P2] : List of Tests:
|
|
314
|
-
// 1. Data frame with unknown stream ID
|
|
315
|
-
// 2. Data frame with only half a message and then end stream
|
|
316
|
-
// 3. One data frame with a full message
|
|
317
|
-
// 4. Three data frames with one full message
|
|
318
|
-
// 5. One data frame with three full messages. All messages should be pushed.
|
|
319
|
-
// Will need to mock the call_handler object and test this along with the
|
|
320
|
-
// Header reading code. Because we need a stream in place for the lookup to
|
|
321
|
-
// work.
|
|
322
312
|
return Http2Status::Ok();
|
|
323
313
|
}
|
|
324
314
|
|
|
325
315
|
template <typename T>
|
|
326
316
|
Http2Status Http2ClientTransport::ProcessIncomingMetadata(T&& frame) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
317
|
+
GRPC_HTTP2_CLIENT_DLOG
|
|
318
|
+
<< "Http2ClientTransport::ProcessIncomingMetadata { stream_id="
|
|
319
|
+
<< frame.stream_id << ", end_headers=" << frame.end_headers << " }";
|
|
330
320
|
ping_manager_->ReceivedDataFrame();
|
|
331
321
|
|
|
332
322
|
RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
|
|
323
|
+
// State update MUST happen before processing the frame.
|
|
324
|
+
read_context_.UpdateState(frame, /*is_existing_stream=*/(stream != nullptr));
|
|
325
|
+
|
|
333
326
|
if (stream == nullptr) {
|
|
334
327
|
// TODO(tjagtap) : [PH2][P3] : Implement this.
|
|
335
328
|
// RFC9113 : The identifier of a newly established stream MUST be
|
|
@@ -338,36 +331,33 @@ Http2Status Http2ClientTransport::ProcessIncomingMetadata(T&& frame) {
|
|
|
338
331
|
// frame and streams that are reserved using PUSH_PROMISE. An endpoint that
|
|
339
332
|
// receives an unexpected stream identifier MUST respond with a connection
|
|
340
333
|
// error (Section 5.4.1) of type PROTOCOL_ERROR.
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return incoming_headers_.ParseAndDiscardHeaders(
|
|
345
|
-
std::move(frame.payload), frame.end_headers, /*stream=*/nullptr,
|
|
346
|
-
Http2Status::Ok(), settings_->acked().max_header_list_size());
|
|
334
|
+
return read_context_.ParseAndDiscardHeaders(
|
|
335
|
+
std::move(frame.payload), frame.end_headers, Http2Status::Ok(),
|
|
336
|
+
settings_->acked().max_header_list_size());
|
|
347
337
|
}
|
|
348
338
|
|
|
349
|
-
Http2Status validation_status =
|
|
350
|
-
|
|
351
|
-
settings_->acked().max_header_list_size());
|
|
339
|
+
Http2Status validation_status = ValidateMetadataFrameState(
|
|
340
|
+
frame, *stream, read_context_, settings_->acked().max_header_list_size());
|
|
352
341
|
if (!validation_status.IsOk()) {
|
|
353
342
|
return validation_status;
|
|
354
343
|
}
|
|
355
344
|
|
|
356
|
-
Http2Status append_result =
|
|
345
|
+
Http2Status append_result =
|
|
346
|
+
read_context_.header_assembler().AppendFrame(frame);
|
|
357
347
|
if (!append_result.IsOk()) {
|
|
358
348
|
// Frame payload is not consumed if AppendFrame returns a non-OK
|
|
359
349
|
// status. We need to process it to keep our in consistent state.
|
|
360
|
-
return
|
|
361
|
-
std::move(frame.payload), frame.end_headers,
|
|
362
|
-
|
|
350
|
+
return read_context_.ParseAndDiscardHeaders(
|
|
351
|
+
std::move(frame.payload), frame.end_headers, std::move(append_result),
|
|
352
|
+
settings_->acked().max_header_list_size());
|
|
363
353
|
}
|
|
364
354
|
|
|
365
355
|
Http2Status status = ProcessMetadata(stream);
|
|
366
356
|
if (!status.IsOk()) {
|
|
367
357
|
// Frame payload has been moved to the HeaderAssembler. So calling
|
|
368
358
|
// ParseAndDiscardHeaders with an empty buffer.
|
|
369
|
-
return
|
|
370
|
-
SliceBuffer(), frame.end_headers,
|
|
359
|
+
return read_context_.ParseAndDiscardHeaders(
|
|
360
|
+
SliceBuffer(), frame.end_headers, std::move(status),
|
|
371
361
|
settings_->acked().max_header_list_size());
|
|
372
362
|
}
|
|
373
363
|
|
|
@@ -379,9 +369,8 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
379
369
|
Http2HeaderFrame&& frame) {
|
|
380
370
|
// https://www.rfc-editor.org/rfc/rfc9113.html#name-headers
|
|
381
371
|
GRPC_HTTP2_CLIENT_DLOG
|
|
382
|
-
<< "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame)
|
|
383
|
-
<< frame.
|
|
384
|
-
<< ", end_stream=" << frame.end_stream << " }";
|
|
372
|
+
<< "Http2ClientTransport::ProcessIncomingFrame(HeaderFrame) end_stream="
|
|
373
|
+
<< frame.end_stream;
|
|
385
374
|
return ProcessIncomingMetadata(std::forward<Http2HeaderFrame>(frame));
|
|
386
375
|
}
|
|
387
376
|
|
|
@@ -393,15 +382,13 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
393
382
|
"stream_id="
|
|
394
383
|
<< frame.stream_id << ", error_code=" << frame.error_code << " }";
|
|
395
384
|
|
|
385
|
+
read_context_.OnResetFrameReceived();
|
|
396
386
|
Http2ErrorCode error_code = FrameErrorCodeToHttp2ErrorCode(frame.error_code);
|
|
397
387
|
absl::Status status = absl::Status(ErrorCodeToAbslStatusCode(error_code),
|
|
398
388
|
"Reset stream frame received.");
|
|
399
389
|
RefCountedPtr<Stream> stream = LookupStream(frame.stream_id);
|
|
400
390
|
if (stream != nullptr) {
|
|
401
|
-
stream->
|
|
402
|
-
BeginCloseStream(std::move(stream),
|
|
403
|
-
/*reset_stream_error_code=*/std::nullopt,
|
|
404
|
-
CancelledServerMetadataFromStatus(status));
|
|
391
|
+
HandleStreamStateChange(*stream, stream->OnResetReceived(status));
|
|
405
392
|
}
|
|
406
393
|
|
|
407
394
|
// In case of stream error, we do not want the Read Loop to be broken. Hence
|
|
@@ -418,33 +405,30 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
418
405
|
<< frame.ack << ", settings length=" << frame.settings.size() << "}";
|
|
419
406
|
|
|
420
407
|
if (!frame.ack) {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
408
|
+
read_context_.OnSettingsFrameReceived();
|
|
409
|
+
Http2Status s = settings_->BufferPeerSettings(std::move(frame.settings));
|
|
410
|
+
if (!s.IsOk()) {
|
|
411
|
+
return s;
|
|
424
412
|
}
|
|
425
|
-
settings_->BufferPeerSettings(std::move(frame.settings));
|
|
426
413
|
absl::Status trigger_write_status = TriggerWriteCycle();
|
|
427
414
|
if (!trigger_write_status.ok()) {
|
|
428
415
|
return ToHttpOkOrConnError(trigger_write_status);
|
|
429
416
|
}
|
|
430
|
-
|
|
431
417
|
if (GPR_UNLIKELY(!settings_->IsFirstPeerSettingsApplied())) {
|
|
432
418
|
// Apply the first settings before we read any other frames.
|
|
433
|
-
|
|
419
|
+
read_context_.SetPauseReadLoop();
|
|
434
420
|
}
|
|
435
421
|
} else {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
ActOnFlowControlAction(flow_control_.SetAckedInitialWindow(
|
|
440
|
-
settings_->acked().initial_window_size()),
|
|
441
|
-
/*stream=*/nullptr);
|
|
442
|
-
} else {
|
|
443
|
-
// CHTTP2 returns a connection error for an unsolicited SETTINGS ACK.
|
|
444
|
-
// However, we ignore it in PH2 since RFC 9113 doesn't explicitly mandate
|
|
445
|
-
// an error.
|
|
446
|
-
LOG(ERROR) << "Settings ack received without sending settings. Ignore.";
|
|
422
|
+
Http2Status status = settings_->OnSettingsAckReceived();
|
|
423
|
+
if (!status.IsOk()) {
|
|
424
|
+
return status;
|
|
447
425
|
}
|
|
426
|
+
read_context_.SetMaxHeaderTableSize(settings_->acked().header_table_size());
|
|
427
|
+
read_context_.header_assembler().MaybeSetAllowTrueBinaryMetadataAcked(
|
|
428
|
+
settings_->acked().allow_true_binary_metadata());
|
|
429
|
+
ActOnFlowControlAction(flow_control_.SetAckedInitialWindow(
|
|
430
|
+
settings_->acked().initial_window_size()),
|
|
431
|
+
/*stream=*/nullptr);
|
|
448
432
|
}
|
|
449
433
|
|
|
450
434
|
return Http2Status::Ok();
|
|
@@ -458,17 +442,9 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(Http2PingFrame&& frame) {
|
|
|
458
442
|
if (frame.ack) {
|
|
459
443
|
return ToHttpOkOrConnError(AckPing(frame.opaque));
|
|
460
444
|
} else {
|
|
445
|
+
read_context_.OnPingFrameReceived();
|
|
461
446
|
if (test_only_ack_pings_) {
|
|
462
|
-
// TODO(akshitpatel) : [PH2][P2] : Have a counter to track number
|
|
463
|
-
// of pending induced frames (Ping/Settings Ack). This is to
|
|
464
|
-
// ensure that if write is taking a long time, we can stop reads
|
|
465
|
-
// and prioritize writes. RFC9113: PING responses SHOULD be given
|
|
466
|
-
// higher priority than any other frame.
|
|
467
447
|
ping_manager_->AddPendingPingAck(frame.opaque);
|
|
468
|
-
// TODO(akshitpatel) : [PH2][P2] : This is done assuming that the
|
|
469
|
-
// other ProcessFrame promises may return stream or connection
|
|
470
|
-
// failures. If this does not turn out to be true, consider
|
|
471
|
-
// returning absl::Status here.
|
|
472
448
|
return ToHttpOkOrConnError(TriggerWriteCycle());
|
|
473
449
|
} else {
|
|
474
450
|
GRPC_HTTP2_CLIENT_DLOG
|
|
@@ -504,17 +480,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
504
480
|
}
|
|
505
481
|
SetMaxAllowedStreamId(last_stream_id);
|
|
506
482
|
|
|
507
|
-
bool close_transport = false;
|
|
508
|
-
{
|
|
509
|
-
MutexLock lock(&transport_mutex_);
|
|
510
|
-
if (CanCloseTransportLocked()) {
|
|
511
|
-
close_transport = true;
|
|
512
|
-
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessIncomingFrame("
|
|
513
|
-
"GoawayFrame) "
|
|
514
|
-
"stream_list_ is empty";
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
|
|
518
483
|
StateWatcher::DisconnectInfo disconnect_info;
|
|
519
484
|
disconnect_info.reason = Transport::StateWatcher::kGoaway;
|
|
520
485
|
disconnect_info.http2_error_code =
|
|
@@ -544,21 +509,6 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
544
509
|
Duration::Milliseconds(throttled_keepalive_time);
|
|
545
510
|
}
|
|
546
511
|
|
|
547
|
-
if (close_transport) {
|
|
548
|
-
// TODO(akshitpatel) : [PH2][P3] : Ideally the error here should be
|
|
549
|
-
// kNoError. However, Http2Status does not support kNoError. We should
|
|
550
|
-
// revisit this and update the error code.
|
|
551
|
-
MaybeSpawnCloseTransport(Http2Status::Http2ConnectionError(
|
|
552
|
-
FrameErrorCodeToHttp2ErrorCode((
|
|
553
|
-
frame.error_code ==
|
|
554
|
-
Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kNoError)
|
|
555
|
-
? Http2ErrorCodeToFrameErrorCode(Http2ErrorCode::kInternalError)
|
|
556
|
-
: frame.error_code)),
|
|
557
|
-
frame.debug_data.empty()
|
|
558
|
-
? std::string("GOAWAY received")
|
|
559
|
-
: std::string(frame.debug_data.as_string_view())));
|
|
560
|
-
}
|
|
561
|
-
|
|
562
512
|
// lie: use transient failure from the transport to indicate goaway has been
|
|
563
513
|
// received.
|
|
564
514
|
ReportDisconnection(status, disconnect_info, "got_goaway");
|
|
@@ -604,16 +554,12 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
604
554
|
Http2ContinuationFrame&& frame) {
|
|
605
555
|
// https://www.rfc-editor.org/rfc/rfc9113.html#name-continuation
|
|
606
556
|
GRPC_HTTP2_CLIENT_DLOG
|
|
607
|
-
<< "Http2ClientTransport::ProcessIncomingFrame(ContinuationFrame)
|
|
608
|
-
"stream_id="
|
|
609
|
-
<< frame.stream_id << ", end_headers=" << frame.end_headers << " }";
|
|
557
|
+
<< "Http2ClientTransport::ProcessIncomingFrame(ContinuationFrame)";
|
|
610
558
|
return ProcessIncomingMetadata(std::forward<Http2ContinuationFrame>(frame));
|
|
611
559
|
}
|
|
612
560
|
|
|
613
561
|
Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
614
562
|
Http2SecurityFrame&& frame) {
|
|
615
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
616
|
-
<< "Http2ClientTransport::ProcessIncomingFrame(SecurityFrame) ";
|
|
617
563
|
if (settings_->IsSecurityFrameExpected()) {
|
|
618
564
|
security_frame_handler_->ProcessPayload(std::move(frame.payload));
|
|
619
565
|
}
|
|
@@ -637,30 +583,27 @@ Http2Status Http2ClientTransport::ProcessIncomingFrame(
|
|
|
637
583
|
|
|
638
584
|
Http2Status Http2ClientTransport::ProcessMetadata(
|
|
639
585
|
RefCountedPtr<Stream> stream) {
|
|
640
|
-
HeaderAssembler& assembler =
|
|
586
|
+
HeaderAssembler& assembler = read_context_.header_assembler();
|
|
641
587
|
CallHandler& call = stream->GetCallHandler();
|
|
642
588
|
|
|
643
589
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata";
|
|
644
590
|
if (assembler.IsReady()) {
|
|
645
591
|
ValueOrHttp2Status<ServerMetadataHandle> read_result =
|
|
646
|
-
assembler.ReadMetadata(
|
|
647
|
-
!
|
|
592
|
+
assembler.ReadMetadata(read_context_.parser(),
|
|
593
|
+
!read_context_.HeaderHasEndStream(),
|
|
648
594
|
/*max_header_list_size_soft_limit=*/
|
|
649
|
-
|
|
595
|
+
read_context_.soft_limit(),
|
|
650
596
|
/*max_header_list_size_hard_limit=*/
|
|
651
597
|
settings_->acked().max_header_list_size());
|
|
652
598
|
if (read_result.IsOk()) {
|
|
653
599
|
ServerMetadataHandle metadata = TakeValue(std::move(read_result));
|
|
654
|
-
if (
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
BeginCloseStream(std::move(stream),
|
|
658
|
-
/*reset_stream_error_code=*/std::nullopt,
|
|
659
|
-
std::move(metadata));
|
|
600
|
+
if (read_context_.HeaderHasEndStream()) {
|
|
601
|
+
HandleStreamStateChange(
|
|
602
|
+
*stream, stream->OnTrailingMetadataReceived(std::move(metadata)));
|
|
660
603
|
} else {
|
|
661
604
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::ProcessMetadata "
|
|
662
605
|
"SpawnPushServerInitialMetadata";
|
|
663
|
-
metadata->Set(PeerString(),
|
|
606
|
+
metadata->Set(PeerString(), read_context_.peer_string());
|
|
664
607
|
stream->SetInitialMetadataReceived();
|
|
665
608
|
call.SpawnPushServerInitialMetadata(std::move(metadata));
|
|
666
609
|
}
|
|
@@ -684,66 +627,64 @@ auto Http2ClientTransport::ReadAndProcessOneFrame() {
|
|
|
684
627
|
EndpointReadSlice(kFrameHeaderSize),
|
|
685
628
|
// Parse the frame header.
|
|
686
629
|
[this](Slice header_bytes) {
|
|
687
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
688
|
-
<< "Http2ClientTransport::ReadAndProcessOneFrame Parse "
|
|
689
|
-
<< header_bytes.as_string_view();
|
|
690
630
|
Http2FrameHeader header = Http2FrameHeader::Parse(header_bytes.begin());
|
|
691
631
|
// Validate the incoming frame as per the current state of the transport
|
|
692
|
-
Http2Status status =
|
|
693
|
-
/*max_frame_size_setting
|
|
694
|
-
/*
|
|
695
|
-
incoming_headers_.IsWaitingForContinuationFrame(),
|
|
696
|
-
/*incoming_header_stream_id*/
|
|
697
|
-
incoming_headers_.GetStreamId(),
|
|
698
|
-
/*current_frame_header*/ header,
|
|
632
|
+
Http2Status status = read_context_.ValidateHeader(
|
|
633
|
+
/*max_frame_size_setting=*/settings_->acked().max_frame_size(),
|
|
634
|
+
/*current_frame_header=*/header,
|
|
699
635
|
/*last_stream_id=*/GetLastStreamId(),
|
|
700
|
-
/*
|
|
636
|
+
/*is_first_settings_processed=*/
|
|
701
637
|
settings_->IsFirstPeerSettingsApplied());
|
|
702
638
|
|
|
703
639
|
if (GPR_UNLIKELY(!status.IsOk())) {
|
|
704
640
|
GRPC_DCHECK(status.GetType() ==
|
|
705
641
|
Http2Status::Http2ErrorType::kConnectionError);
|
|
706
|
-
return HandleError(
|
|
642
|
+
return HandleError(/*stream=*/nullptr, std::move(status));
|
|
707
643
|
}
|
|
708
|
-
|
|
709
|
-
<< "Http2ClientTransport::ReadAndProcessOneFrame "
|
|
710
|
-
"Validated Frame Header:"
|
|
711
|
-
<< header.ToString();
|
|
712
|
-
current_frame_header_ = header;
|
|
644
|
+
read_context_.SetCurrentFrameHeader(header);
|
|
713
645
|
return absl::OkStatus();
|
|
714
646
|
},
|
|
715
647
|
// Read the payload of the frame.
|
|
716
648
|
[this]() {
|
|
717
649
|
GRPC_HTTP2_CLIENT_DLOG
|
|
718
650
|
<< "Http2ClientTransport::ReadAndProcessOneFrame Read Frame ";
|
|
719
|
-
return AssertResultType<absl::Status>(
|
|
720
|
-
EndpointRead(
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
651
|
+
return AssertResultType<absl::Status>(
|
|
652
|
+
Map(EndpointRead(read_context_.GetCurrentFrameHeader().length),
|
|
653
|
+
[this](absl::StatusOr<SliceBuffer>&& payload) {
|
|
654
|
+
if (GPR_UNLIKELY(!payload.ok())) {
|
|
655
|
+
return payload.status();
|
|
656
|
+
}
|
|
657
|
+
GRPC_HTTP2_CLIENT_DLOG
|
|
658
|
+
<< "Http2ClientTransport::ReadAndProcessOneFrame "
|
|
659
|
+
"ParseFramePayload payload length: "
|
|
660
|
+
<< payload.value().Length();
|
|
661
|
+
ValueOrHttp2Status<Http2Frame> frame =
|
|
662
|
+
ParseFramePayload(read_context_.GetCurrentFrameHeader(),
|
|
663
|
+
TakeValue(std::move(payload)));
|
|
664
|
+
if (GPR_UNLIKELY(!frame.IsOk())) {
|
|
665
|
+
return HandleError(
|
|
666
|
+
LookupStream(
|
|
667
|
+
read_context_.GetCurrentFrameHeader().stream_id),
|
|
668
|
+
ValueOrHttp2Status<Http2Frame>::TakeStatus(
|
|
669
|
+
std::move(frame)));
|
|
670
|
+
}
|
|
671
|
+
Http2Status status =
|
|
672
|
+
ProcessOneIncomingFrame(TakeValue(std::move(frame)));
|
|
673
|
+
if (GPR_UNLIKELY(!status.IsOk())) {
|
|
674
|
+
return HandleError(
|
|
675
|
+
LookupStream(
|
|
676
|
+
read_context_.GetCurrentFrameHeader().stream_id),
|
|
677
|
+
std::move(status));
|
|
678
|
+
}
|
|
679
|
+
return absl::OkStatus();
|
|
680
|
+
}));
|
|
744
681
|
},
|
|
745
682
|
[this]() -> Poll<absl::Status> {
|
|
746
|
-
|
|
683
|
+
Poll<absl::Status> poll_result = read_context_.MaybePauseReadLoop();
|
|
684
|
+
if (poll_result.pending()) {
|
|
685
|
+
TriggerWriteCycleOrHandleError();
|
|
686
|
+
}
|
|
687
|
+
return poll_result;
|
|
747
688
|
}));
|
|
748
689
|
}
|
|
749
690
|
|
|
@@ -816,9 +757,7 @@ void Http2ClientTransport::ActOnFlowControlAction(
|
|
|
816
757
|
}
|
|
817
758
|
}
|
|
818
759
|
|
|
819
|
-
ActOnFlowControlActionSettings(
|
|
820
|
-
action, settings_->mutable_local(),
|
|
821
|
-
enable_preferred_rx_crypto_frame_advertisement_);
|
|
760
|
+
ActOnFlowControlActionSettings(action, settings_->mutable_local());
|
|
822
761
|
|
|
823
762
|
if (action.AnyUpdateImmediately()) {
|
|
824
763
|
// Prioritize sending flow control updates over reading data. If we
|
|
@@ -826,7 +765,7 @@ void Http2ClientTransport::ActOnFlowControlAction(
|
|
|
826
765
|
// exhaust the flow control window. This prevents us from sending window
|
|
827
766
|
// updates to the peer, causing the peer to block unnecessarily while
|
|
828
767
|
// waiting for flow control tokens.
|
|
829
|
-
|
|
768
|
+
read_context_.SetPauseReadLoop();
|
|
830
769
|
if (!TriggerWriteCycleOrHandleError()) {
|
|
831
770
|
return;
|
|
832
771
|
}
|
|
@@ -911,14 +850,13 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
|
|
|
911
850
|
// 5. Custom gRPC security frame
|
|
912
851
|
|
|
913
852
|
goaway_manager_.MaybeGetSerializedGoawayFrame(frame_sender);
|
|
914
|
-
|
|
853
|
+
ApplySettingsResult apply_settings_result;
|
|
915
854
|
|
|
916
855
|
const uint32_t old_initial_window_size =
|
|
917
856
|
settings_->peer().initial_window_size();
|
|
918
|
-
http2::Http2ErrorCode apply_status =
|
|
919
|
-
settings_->MaybeReportAndApplyBufferedPeerSettings(
|
|
920
|
-
|
|
921
|
-
|
|
857
|
+
const http2::Http2ErrorCode apply_status =
|
|
858
|
+
settings_->MaybeReportAndApplyBufferedPeerSettings(event_engine_.get(),
|
|
859
|
+
apply_settings_result);
|
|
922
860
|
if (apply_status == http2::Http2ErrorCode::kNoError) {
|
|
923
861
|
const uint32_t new_initial_window_size =
|
|
924
862
|
settings_->peer().initial_window_size();
|
|
@@ -936,7 +874,7 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
|
|
|
936
874
|
}
|
|
937
875
|
}
|
|
938
876
|
|
|
939
|
-
if (should_spawn_security_frame_loop) {
|
|
877
|
+
if (apply_settings_result.should_spawn_security_frame_loop) {
|
|
940
878
|
const SecurityFrameHandler::EndpointExtensionState state =
|
|
941
879
|
security_frame_handler_->Initialize(event_engine_);
|
|
942
880
|
if (state.is_set) {
|
|
@@ -957,7 +895,7 @@ absl::Status Http2ClientTransport::PrepareControlFrames() {
|
|
|
957
895
|
}
|
|
958
896
|
|
|
959
897
|
if (apply_status != http2::Http2ErrorCode::kNoError) {
|
|
960
|
-
return HandleError(
|
|
898
|
+
return HandleError(/*stream=*/nullptr,
|
|
961
899
|
Http2Status::Http2ConnectionError(
|
|
962
900
|
apply_status, "Failed to apply incoming settings"));
|
|
963
901
|
}
|
|
@@ -985,7 +923,7 @@ void Http2ClientTransport::NotifyFramesWriteDone() {
|
|
|
985
923
|
// Notify Control modules that we have sent the frames.
|
|
986
924
|
// All notifications are expected to be synchronous.
|
|
987
925
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::NotifyFramesWriteDone";
|
|
988
|
-
|
|
926
|
+
read_context_.ResumeReadLoopIfPaused();
|
|
989
927
|
MaybeSpawnPingTimeout(ping_manager_->NotifyPingSent());
|
|
990
928
|
goaway_manager_.NotifyGoawaySent();
|
|
991
929
|
MaybeSpawnWaitForSettingsTimeout();
|
|
@@ -1043,7 +981,7 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
|
|
|
1043
981
|
"enqueue stream "
|
|
1044
982
|
<< stream->GetStreamId() << " with status: " << status;
|
|
1045
983
|
// Close transport if we fail to enqueue stream.
|
|
1046
|
-
return HandleError(
|
|
984
|
+
return HandleError(/*stream=*/nullptr, ToHttpOkOrConnError(status));
|
|
1047
985
|
}
|
|
1048
986
|
}
|
|
1049
987
|
|
|
@@ -1060,7 +998,7 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
|
|
|
1060
998
|
<< "Http2ClientTransport::DequeueStreamFrames InitialMetadataDequeued "
|
|
1061
999
|
"stream_id = "
|
|
1062
1000
|
<< stream->GetStreamId();
|
|
1063
|
-
stream->
|
|
1001
|
+
stream->OnInitialMetadataSent();
|
|
1064
1002
|
// After this point, initial metadata is guaranteed to be sent out.
|
|
1065
1003
|
AddToStreamList(stream);
|
|
1066
1004
|
}
|
|
@@ -1069,28 +1007,16 @@ absl::Status Http2ClientTransport::DequeueStreamFrames(
|
|
|
1069
1007
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames "
|
|
1070
1008
|
"HalfCloseDequeued stream_id = "
|
|
1071
1009
|
<< stream->GetStreamId();
|
|
1072
|
-
stream->
|
|
1073
|
-
|
|
1074
|
-
if (stream->IsTrailingMetadataReceived()) {
|
|
1075
|
-
CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true,
|
|
1076
|
-
/*close_writes=*/true});
|
|
1077
|
-
}
|
|
1010
|
+
HandleStreamStateChange(*stream, stream->OnHalfCloseSent());
|
|
1078
1011
|
}
|
|
1079
1012
|
if (result.IsResetStreamDequeued()) {
|
|
1080
1013
|
GRPC_HTTP2_CLIENT_DLOG
|
|
1081
1014
|
<< "Http2ClientTransport::DequeueStreamFrames ResetStreamDequeued "
|
|
1082
1015
|
"stream_id = "
|
|
1083
1016
|
<< stream->GetStreamId();
|
|
1084
|
-
stream->
|
|
1085
|
-
CloseStream(*stream, CloseStreamArgs{/*close_reads=*/true,
|
|
1086
|
-
/*close_writes=*/true});
|
|
1017
|
+
HandleStreamStateChange(*stream, stream->OnResetSent());
|
|
1087
1018
|
}
|
|
1088
1019
|
|
|
1089
|
-
// Update the write_bytes_remaining_ based on the bytes consumed
|
|
1090
|
-
// in the current dequeue.
|
|
1091
|
-
// Note: We do tend to overestimate the bytes consumed here. This may result
|
|
1092
|
-
// in sending less data than target_write_size_.
|
|
1093
|
-
|
|
1094
1020
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::DequeueStreamFrames "
|
|
1095
1021
|
"After dequeue: "
|
|
1096
1022
|
<< write_cycle.DebugString()
|
|
@@ -1126,10 +1052,6 @@ auto Http2ClientTransport::MultiplexerLoop() {
|
|
|
1126
1052
|
}
|
|
1127
1053
|
NotifyUrgentFramesWriteDone();
|
|
1128
1054
|
WriteCycle& write_cycle = transport_write_context_.GetWriteCycle();
|
|
1129
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
1130
|
-
<< "Http2ClientTransport::MultiplexerLoop "
|
|
1131
|
-
<< "Starting to iterate over writable stream list "
|
|
1132
|
-
<< write_cycle.DebugString();
|
|
1133
1055
|
// Drain all the writable streams till we have written
|
|
1134
1056
|
// max_write_size_ bytes of data or there is no more data to send.
|
|
1135
1057
|
// In some cases, we may write more than max_write_size_ bytes(like
|
|
@@ -1163,9 +1085,7 @@ auto Http2ClientTransport::MultiplexerLoop() {
|
|
|
1163
1085
|
"Failed to assign stream id and add to stream list for"
|
|
1164
1086
|
" stream: "
|
|
1165
1087
|
<< stream.get() << " closing this stream.";
|
|
1166
|
-
|
|
1167
|
-
/*reset_stream_error_code=*/std::nullopt,
|
|
1168
|
-
CancelledServerMetadataFromStatus(status));
|
|
1088
|
+
HandleStreamStateChange(*stream, stream->ForceClose(status));
|
|
1169
1089
|
continue;
|
|
1170
1090
|
}
|
|
1171
1091
|
}
|
|
@@ -1226,9 +1146,8 @@ absl::Status Http2ClientTransport::InitializeStream(Stream& stream) {
|
|
|
1226
1146
|
<< next_stream_id.value() << " to stream: " << &stream
|
|
1227
1147
|
<< ", allow_true_binary_metadata:"
|
|
1228
1148
|
<< settings_->peer().allow_true_binary_metadata();
|
|
1229
|
-
stream.InitializeClientStream(
|
|
1230
|
-
|
|
1231
|
-
settings_->acked().allow_true_binary_metadata());
|
|
1149
|
+
stream.InitializeClientStream(next_stream_id.value(),
|
|
1150
|
+
settings_->peer().allow_true_binary_metadata());
|
|
1232
1151
|
return absl::OkStatus();
|
|
1233
1152
|
}
|
|
1234
1153
|
|
|
@@ -1266,9 +1185,9 @@ auto Http2ClientTransport::WaitForSettingsTimeoutOnDone() {
|
|
|
1266
1185
|
return [self = RefAsSubclass<Http2ClientTransport>()](absl::Status status) {
|
|
1267
1186
|
if (!status.ok()) {
|
|
1268
1187
|
GRPC_UNUSED absl::Status result = self->HandleError(
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1188
|
+
/*stream=*/nullptr, Http2Status::Http2ConnectionError(
|
|
1189
|
+
Http2ErrorCode::kProtocolError,
|
|
1190
|
+
std::string(RFC9113::kSettingsTimeout)));
|
|
1272
1191
|
}
|
|
1273
1192
|
};
|
|
1274
1193
|
}
|
|
@@ -1308,23 +1227,23 @@ Http2ClientTransport::Http2ClientTransport(
|
|
|
1308
1227
|
event_engine_(std::move(event_engine)),
|
|
1309
1228
|
endpoint_(std::move(endpoint)),
|
|
1310
1229
|
settings_(MakeRefCounted<SettingsPromiseManager>(
|
|
1311
|
-
std::move(on_receive_settings))),
|
|
1230
|
+
kIsClient, std::move(on_receive_settings))),
|
|
1312
1231
|
next_stream_id_(/*Initial Stream ID*/ 1),
|
|
1313
1232
|
should_reset_ping_clock_(false),
|
|
1314
|
-
|
|
1315
|
-
|
|
1233
|
+
read_context_(MaxNewStreamsPerRead(channel_args), endpoint_, kIsClient,
|
|
1234
|
+
GetMaxSecurityFrameSize(channel_args)),
|
|
1316
1235
|
transport_write_context_(kIsClient),
|
|
1317
1236
|
ping_manager_(std::nullopt),
|
|
1318
1237
|
keepalive_manager_(std::nullopt),
|
|
1319
1238
|
goaway_manager_(GoawayInterfaceImpl::Make(this)),
|
|
1320
|
-
security_frame_handler_(MakeRefCounted<SecurityFrameHandler>()),
|
|
1321
1239
|
memory_owner_(channel_args.GetObject<ResourceQuota>()
|
|
1322
1240
|
->memory_quota()
|
|
1323
1241
|
->CreateMemoryOwner()),
|
|
1324
1242
|
flow_control_(
|
|
1325
|
-
|
|
1243
|
+
/*peer_name=*/read_context_.peer_string().as_string_view(),
|
|
1326
1244
|
channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
|
|
1327
1245
|
&memory_owner_),
|
|
1246
|
+
security_frame_handler_(MakeRefCounted<SecurityFrameHandler>()),
|
|
1328
1247
|
ztrace_collector_(std::make_shared<PromiseHttp2ZTraceCollector>()) {
|
|
1329
1248
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::Http2ClientTransport Begin";
|
|
1330
1249
|
// Initialize the general party and write party.
|
|
@@ -1365,7 +1284,6 @@ void Http2ClientTransport::SpawnTransportLoops() {
|
|
|
1365
1284
|
// For Client, write happens before read. So MultiplexerLoop is spawned first.
|
|
1366
1285
|
// ReadLoop is spawned after the first write.
|
|
1367
1286
|
// For Server, read happens before write. So ReadLoop is spawned first.
|
|
1368
|
-
// MultiplexerLoop is spawned after the first read.
|
|
1369
1287
|
SpawnGuardedTransportParty("MultiplexerLoop",
|
|
1370
1288
|
UntilTransportClosed(MultiplexerLoop()));
|
|
1371
1289
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::SpawnTransportLoops End";
|
|
@@ -1379,10 +1297,8 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args,
|
|
|
1379
1297
|
|
|
1380
1298
|
// Assign the channel args to the member variables.
|
|
1381
1299
|
keepalive_time_ = args.keepalive_time;
|
|
1382
|
-
|
|
1300
|
+
read_context_.set_soft_limit(args.max_header_list_size_soft_limit);
|
|
1383
1301
|
keepalive_permit_without_calls_ = args.keepalive_permit_without_calls;
|
|
1384
|
-
enable_preferred_rx_crypto_frame_advertisement_ =
|
|
1385
|
-
args.enable_preferred_rx_crypto_frame_advertisement;
|
|
1386
1302
|
test_only_ack_pings_ = args.test_only_ack_pings;
|
|
1387
1303
|
|
|
1388
1304
|
if (args.initial_sequence_number > 0) {
|
|
@@ -1395,9 +1311,9 @@ void Http2ClientTransport::ReadChannelArgs(const ChannelArgs& channel_args,
|
|
|
1395
1311
|
}
|
|
1396
1312
|
}
|
|
1397
1313
|
|
|
1398
|
-
absl::Status Http2ClientTransport::HandleError(
|
|
1399
|
-
|
|
1400
|
-
|
|
1314
|
+
absl::Status Http2ClientTransport::HandleError(RefCountedPtr<Stream> stream,
|
|
1315
|
+
Http2Status status,
|
|
1316
|
+
DebugLocation whence) {
|
|
1401
1317
|
Http2Status::Http2ErrorType error_type = status.GetType();
|
|
1402
1318
|
GRPC_DCHECK(error_type != Http2Status::Http2ErrorType::kOk);
|
|
1403
1319
|
|
|
@@ -1405,13 +1321,13 @@ absl::Status Http2ClientTransport::HandleError(
|
|
|
1405
1321
|
GRPC_HTTP2_CLIENT_ERROR_DLOG
|
|
1406
1322
|
<< "Http2ClientTransport::HandleError Stream Error:"
|
|
1407
1323
|
<< status.DebugString();
|
|
1408
|
-
GRPC_DCHECK(
|
|
1324
|
+
GRPC_DCHECK(stream != nullptr);
|
|
1409
1325
|
// Passing a cancelled server metadata handle to propagate the error
|
|
1410
1326
|
// to the upper layers.
|
|
1411
1327
|
BeginCloseStream(
|
|
1412
|
-
|
|
1328
|
+
std::move(stream),
|
|
1413
1329
|
Http2ErrorCodeToFrameErrorCode(status.GetStreamErrorCode()),
|
|
1414
|
-
|
|
1330
|
+
status.GetAbslStreamError(), whence);
|
|
1415
1331
|
return absl::OkStatus();
|
|
1416
1332
|
} else if (error_type == Http2Status::Http2ErrorType::kConnectionError) {
|
|
1417
1333
|
GRPC_HTTP2_CLIENT_ERROR_DLOG
|
|
@@ -1424,186 +1340,73 @@ absl::Status Http2ClientTransport::HandleError(
|
|
|
1424
1340
|
GPR_UNREACHABLE_CODE(return absl::InternalError("Invalid error type"));
|
|
1425
1341
|
}
|
|
1426
1342
|
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
1450
|
-
<< "Http2ClientTransport::CloseStream for stream id: "
|
|
1451
|
-
<< stream.GetStreamId() << " closing stream for reads.";
|
|
1452
|
-
// If the stream is closed while reading HEADER/CONTINUATION frames, we
|
|
1453
|
-
// should still parse the enqueued buffer to maintain HPACK state between
|
|
1454
|
-
// peers.
|
|
1455
|
-
if (incoming_headers_.IsWaitingForContinuationFrame()) {
|
|
1456
|
-
Http2Status result = incoming_headers_.ParseAndDiscardHeaders(
|
|
1457
|
-
SliceBuffer(), /*is_end_headers=*/false, &stream,
|
|
1458
|
-
/*original_status=*/Http2Status::Ok(),
|
|
1459
|
-
settings_->acked().max_header_list_size());
|
|
1460
|
-
if (result.GetType() == Http2Status::Http2ErrorType::kConnectionError) {
|
|
1461
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
1462
|
-
<< "Http2ClientTransport::CloseStream for stream id: "
|
|
1463
|
-
<< stream.GetStreamId() << " failed to partially process header: "
|
|
1464
|
-
<< result.DebugString();
|
|
1465
|
-
close_transport_error.emplace(std::move(result));
|
|
1466
|
-
}
|
|
1467
|
-
}
|
|
1468
|
-
|
|
1469
|
-
stream_list_.erase(stream.GetStreamId());
|
|
1470
|
-
if (!close_transport_error.has_value() && CanCloseTransportLocked()) {
|
|
1471
|
-
// TODO(akshitpatel) : [PH2][P3] : Is kInternalError the right error
|
|
1472
|
-
// code to use here? IMO it should be kNoError.
|
|
1473
|
-
close_transport_error.emplace(Http2Status::Http2ConnectionError(
|
|
1474
|
-
Http2ErrorCode::kInternalError,
|
|
1475
|
-
std::string(RFC9113::kLastStreamClosed)));
|
|
1343
|
+
void Http2ClientTransport::HandleStreamStateChange(Stream& stream,
|
|
1344
|
+
StreamStateChange change) {
|
|
1345
|
+
if (change.reads_became_closed) {
|
|
1346
|
+
// If a stream is closing for reads and was actively waiting for a
|
|
1347
|
+
// continuation frame, parse the buffered HEADER/CONTINUATION frames
|
|
1348
|
+
if (read_context_.IsWaitingForContinuationFrame() &&
|
|
1349
|
+
read_context_.GetStreamId() == stream.GetStreamId()) {
|
|
1350
|
+
Http2Status result = read_context_.ParseAndDiscardHeaders(
|
|
1351
|
+
SliceBuffer(), /*is_end_headers=*/false,
|
|
1352
|
+
/*original_status=*/Http2Status::Ok(),
|
|
1353
|
+
settings_->acked().max_header_list_size());
|
|
1354
|
+
if (GPR_UNLIKELY(result.GetType() ==
|
|
1355
|
+
Http2Status::Http2ErrorType::kConnectionError)) {
|
|
1356
|
+
GRPC_HTTP2_CLIENT_DLOG
|
|
1357
|
+
<< "Http2ClientTransport::HandleStreamStateChange (DiscardHeaders) "
|
|
1358
|
+
"for "
|
|
1359
|
+
"stream id: "
|
|
1360
|
+
<< stream.GetStreamId()
|
|
1361
|
+
<< " failed to partially process header: " << result.DebugString();
|
|
1362
|
+
GRPC_UNUSED absl::Status unused =
|
|
1363
|
+
HandleError(/*stream=*/nullptr, std::move(result));
|
|
1364
|
+
return;
|
|
1476
1365
|
}
|
|
1477
1366
|
}
|
|
1478
1367
|
}
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
GRPC_UNUSED absl::Status status = HandleError(
|
|
1482
|
-
/*stream_id=*/std::nullopt, std::move(*close_transport_error));
|
|
1368
|
+
if (change.stream_became_closed) {
|
|
1369
|
+
CleanupStream(stream);
|
|
1483
1370
|
}
|
|
1484
1371
|
}
|
|
1485
1372
|
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
// a. The stream is closed for writes: Close the stream for reads and writes
|
|
1492
|
-
// and remove the stream from the stream_list_.
|
|
1493
|
-
// b. The stream is NOT closed for writes: Stream is kept open for reads and
|
|
1494
|
-
// writes. CallHandler OnDone will trigger sending a half close frame. If
|
|
1495
|
-
// before the multiplexer loop triggers sending a half close a RST stream
|
|
1496
|
-
// is read, the stream is closed for reads and writes immediately and the
|
|
1497
|
-
// half close is discarded. If no RST stream is read, the stream is closed
|
|
1498
|
-
// for reads and writes upon sending the half close frame from the
|
|
1499
|
-
// multiplexer loop.
|
|
1500
|
-
// 3. Hitting error condition in the transport: In this case, RST stream is
|
|
1501
|
-
// enqueued and the stream is closed for reads immediately. This implies we
|
|
1502
|
-
// reduce the number of active streams inline. When multiplexer loop
|
|
1503
|
-
// processes the RST stream frame, the stream ref will dropped. The other
|
|
1504
|
-
// stream ref will be dropped when CallHandler's OnDone is executed causing
|
|
1505
|
-
// the stream to be destroyed. CallHandlers OnDone also tries to enqueue a
|
|
1506
|
-
// RST stream frame. This is a no-op at this point.
|
|
1507
|
-
// 4. Application abort: In this case, CallHandler OnDone will enqueue RST
|
|
1508
|
-
// stream frame to the stream data queue. The multiplexer loop will send the
|
|
1509
|
-
// reset stream frame and close the stream from reads and writes.
|
|
1510
|
-
// 5. Transport close: This takes up the same path as case 3.
|
|
1511
|
-
// In all the above cases, trailing metadata is pushed to the call spine.
|
|
1512
|
-
// Note: The stream ref is held in atmost 3 places:
|
|
1513
|
-
// 1. stream_list_ : This is released when the stream is closed for reads.
|
|
1514
|
-
// 2. CallHandler OnDone : This is released when Trailing Metadata is pushed to
|
|
1515
|
-
// the call spine.
|
|
1516
|
-
// 3. List of writable streams : This is released after the final frame is
|
|
1517
|
-
// dequeued from the StreamDataQueue.
|
|
1373
|
+
void Http2ClientTransport::CleanupStream(Stream& stream) {
|
|
1374
|
+
MutexLock lock(&transport_mutex_);
|
|
1375
|
+
stream_list_.erase(stream.GetStreamId());
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1518
1378
|
void Http2ClientTransport::BeginCloseStream(
|
|
1519
|
-
RefCountedPtr<Stream> stream,
|
|
1520
|
-
|
|
1521
|
-
|
|
1379
|
+
RefCountedPtr<Stream> stream, uint32_t reset_stream_error_code,
|
|
1380
|
+
absl::Status trailing_metadata_status, DebugLocation whence) {
|
|
1381
|
+
GRPC_DCHECK(!trailing_metadata_status.ok());
|
|
1522
1382
|
if (stream == nullptr) {
|
|
1523
1383
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::BeginCloseStream stream "
|
|
1524
1384
|
"is null reset_stream_error_code="
|
|
1525
|
-
<<
|
|
1526
|
-
? absl::StrCat(*reset_stream_error_code)
|
|
1527
|
-
: "nullopt")
|
|
1528
|
-
<< " metadata=" << metadata->DebugString();
|
|
1385
|
+
<< reset_stream_error_code;
|
|
1529
1386
|
return;
|
|
1530
1387
|
}
|
|
1531
1388
|
|
|
1532
1389
|
GRPC_HTTP2_CLIENT_DLOG
|
|
1533
1390
|
<< "Http2ClientTransport::BeginCloseStream for stream id: "
|
|
1534
|
-
<< stream->GetStreamId() << " error_code="
|
|
1535
|
-
<<
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
<< " close_writes= " << close_writes;
|
|
1554
|
-
} else {
|
|
1555
|
-
// Callers taking this path:
|
|
1556
|
-
// 1. Processing Error in transport (will send reset stream from here).
|
|
1557
|
-
absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
|
|
1558
|
-
stream->EnqueueResetStream(reset_stream_error_code.value());
|
|
1559
|
-
GRPC_HTTP2_CLIENT_DLOG << "Enqueued ResetStream with error code="
|
|
1560
|
-
<< reset_stream_error_code.value()
|
|
1561
|
-
<< " status=" << enqueue_result.status();
|
|
1562
|
-
if (enqueue_result.ok()) {
|
|
1563
|
-
GRPC_UNUSED absl::Status status =
|
|
1564
|
-
MaybeAddStreamToWritableStreamList(stream, enqueue_result.value());
|
|
1565
|
-
}
|
|
1566
|
-
close_reads = true;
|
|
1567
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
1568
|
-
<< "Http2ClientTransport::BeginCloseStream for stream id: "
|
|
1569
|
-
<< stream->GetStreamId() << " close_reads= " << close_reads
|
|
1570
|
-
<< " close_writes= " << close_writes;
|
|
1571
|
-
}
|
|
1572
|
-
} else {
|
|
1573
|
-
// Callers taking this path:
|
|
1574
|
-
// 1. Reading Trailing Metadata (MAY send half close from OnDone).
|
|
1575
|
-
// If a half close frame has already been sent, we should close the stream
|
|
1576
|
-
// for reads and writes.
|
|
1577
|
-
if (stream->IsHalfClosedLocal() || stream->IsStreamClosed()) {
|
|
1578
|
-
close_reads = true;
|
|
1579
|
-
close_writes = true;
|
|
1580
|
-
GRPC_HTTP2_CLIENT_DLOG
|
|
1581
|
-
<< "Http2ClientTransport::BeginCloseStream for stream id: "
|
|
1582
|
-
<< stream->GetStreamId() << " close_reads= " << close_reads
|
|
1583
|
-
<< " close_writes= " << close_writes;
|
|
1584
|
-
}
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
if (close_reads || close_writes) {
|
|
1588
|
-
CloseStream(*stream, CloseStreamArgs{close_reads, close_writes}, whence);
|
|
1589
|
-
}
|
|
1590
|
-
|
|
1591
|
-
// If the call was cancelled, the stream MUST be closed for reads.
|
|
1592
|
-
GRPC_DCHECK(metadata->get(GrpcCallWasCancelled()) ? close_reads : true);
|
|
1593
|
-
|
|
1594
|
-
// This maybe called multiple times while closing a stream. In CallV3, the
|
|
1595
|
-
// flow for pushing server trailing metadata is idempotent. However, there is
|
|
1596
|
-
// a subtle difference. When we push server trailing metadata with a cancelled
|
|
1597
|
-
// status PushServerTrailingMetadata is spawned inline on the Call party
|
|
1598
|
-
// whereas for the non-cancelled status, PushServerTrailingMetadata is
|
|
1599
|
-
// spawned in the server_to_client spawn serializer. Because of this, in
|
|
1600
|
-
// case when the server pushes trailing metadata (non-cancelled) followed by a
|
|
1601
|
-
// RST stream with cancelled status, it is possible that the cancelled
|
|
1602
|
-
// trailing metadata (for RST stream) is processed before. This would result
|
|
1603
|
-
// in losing the actual status/message pushed by the server.
|
|
1604
|
-
// To address this, we push the server trailing metadata to the stream only
|
|
1605
|
-
// if it is not pushed already.
|
|
1606
|
-
stream->MaybePushServerTrailingMetadata(std::move(metadata));
|
|
1391
|
+
<< stream->GetStreamId() << " error_code=" << reset_stream_error_code
|
|
1392
|
+
<< " status=" << trailing_metadata_status << " location=" << whence.file()
|
|
1393
|
+
<< ":" << whence.line();
|
|
1394
|
+
|
|
1395
|
+
// Enqueue RST_STREAM.
|
|
1396
|
+
absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
|
|
1397
|
+
stream->EnqueueResetStream(reset_stream_error_code);
|
|
1398
|
+
GRPC_HTTP2_CLIENT_DLOG << "Enqueued ResetStream with error code="
|
|
1399
|
+
<< reset_stream_error_code
|
|
1400
|
+
<< " status=" << enqueue_result.status();
|
|
1401
|
+
if (enqueue_result.ok()) {
|
|
1402
|
+
GRPC_UNUSED absl::Status status =
|
|
1403
|
+
MaybeAddStreamToWritableStreamList(stream, enqueue_result.value());
|
|
1404
|
+
}
|
|
1405
|
+
// Close reads immediately. Writes will be closed by the write loop after
|
|
1406
|
+
// the RST_STREAM frame is written.
|
|
1407
|
+
HandleStreamStateChange(*stream,
|
|
1408
|
+
stream->OnInitiateReset(trailing_metadata_status));
|
|
1409
|
+
read_context_.OnResetFrameEnqueued(reset_stream_error_code);
|
|
1607
1410
|
}
|
|
1608
1411
|
|
|
1609
1412
|
void Http2ClientTransport::CloseTransport() {
|
|
@@ -1661,8 +1464,7 @@ void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status,
|
|
|
1661
1464
|
self->BeginCloseStream(std::move(stream),
|
|
1662
1465
|
Http2ErrorCodeToFrameErrorCode(
|
|
1663
1466
|
http2_status.GetConnectionErrorCode()),
|
|
1664
|
-
|
|
1665
|
-
http2_status.GetAbslConnectionError()));
|
|
1467
|
+
http2_status.GetAbslConnectionError());
|
|
1666
1468
|
}
|
|
1667
1469
|
|
|
1668
1470
|
// RFC9113 : A GOAWAY frame might not immediately precede closing of
|
|
@@ -1691,20 +1493,6 @@ void Http2ClientTransport::MaybeSpawnCloseTransport(Http2Status http2_status,
|
|
|
1691
1493
|
});
|
|
1692
1494
|
}
|
|
1693
1495
|
|
|
1694
|
-
bool Http2ClientTransport::CanCloseTransportLocked() const {
|
|
1695
|
-
// If there are no more streams and next stream id is greater than the
|
|
1696
|
-
// max allowed stream id, then no more streams can be created and it is
|
|
1697
|
-
// safe to close the transport.
|
|
1698
|
-
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CanCloseTransportLocked "
|
|
1699
|
-
"GetActiveStreamCountLocked="
|
|
1700
|
-
<< GetActiveStreamCountLocked()
|
|
1701
|
-
<< " PeekNextStreamId=" << PeekNextStreamId()
|
|
1702
|
-
<< " GetMaxAllowedStreamId="
|
|
1703
|
-
<< GetMaxAllowedStreamId();
|
|
1704
|
-
return GetActiveStreamCountLocked() == 0 &&
|
|
1705
|
-
PeekNextStreamId() > GetMaxAllowedStreamId();
|
|
1706
|
-
}
|
|
1707
|
-
|
|
1708
1496
|
Http2ClientTransport::~Http2ClientTransport() {
|
|
1709
1497
|
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::~Http2ClientTransport Begin";
|
|
1710
1498
|
GRPC_DCHECK(stream_list_.empty());
|
|
@@ -1726,6 +1514,8 @@ void Http2ClientTransport::SpawnAddChannelzData(RefCountedPtr<Party> party,
|
|
|
1726
1514
|
.Set("keepalive_time", self->keepalive_time_)
|
|
1727
1515
|
.Set("keepalive_permit_without_calls",
|
|
1728
1516
|
self->keepalive_permit_without_calls_)
|
|
1517
|
+
.Set("max_requests_per_read",
|
|
1518
|
+
self->read_context_.max_new_streams_per_read_cycle())
|
|
1729
1519
|
.Set("settings", self->settings_->ChannelzProperties())
|
|
1730
1520
|
.Set("flow_control",
|
|
1731
1521
|
self->flow_control_.stats().ChannelzProperties()));
|
|
@@ -1777,8 +1567,8 @@ RefCountedPtr<channelz::SocketNode> Http2ClientTransport::GetSocketNode()
|
|
|
1777
1567
|
|
|
1778
1568
|
absl::StatusOr<uint32_t> Http2ClientTransport::NextStreamId() {
|
|
1779
1569
|
if (next_stream_id_ > GetMaxAllowedStreamId()) {
|
|
1780
|
-
// TODO(tjagtap) : [PH2][
|
|
1781
|
-
// ids
|
|
1570
|
+
// TODO(tjagtap) : [PH2][P2] : Handle case if transport runs out of stream
|
|
1571
|
+
// ids. Similar check is there in the same function. Check what to do.
|
|
1782
1572
|
// RFC9113 : Stream identifiers cannot be reused. Long-lived connections
|
|
1783
1573
|
// can result in an endpoint exhausting the available range of stream
|
|
1784
1574
|
// identifiers. A client that is unable to establish a new stream
|
|
@@ -1824,16 +1614,16 @@ absl::Status Http2ClientTransport::MaybeAddStreamToWritableStreamList(
|
|
|
1824
1614
|
<< "Http2ClientTransport::MaybeAddStreamToWritableStreamList Stream "
|
|
1825
1615
|
"id: "
|
|
1826
1616
|
<< stream->GetStreamId() << " became writable";
|
|
1827
|
-
// TODO(akshitpatel) [Perf]: Might be worth exploring if this
|
|
1828
|
-
// should take a raw stream ptr and take a ref here.
|
|
1617
|
+
// TODO(akshitpatel) [PH2][P4][Perf]: Might be worth exploring if this
|
|
1618
|
+
// function should take a raw stream ptr and take a ref here.
|
|
1829
1619
|
absl::Status status =
|
|
1830
1620
|
writable_stream_list_.Enqueue(std::move(stream), result.priority);
|
|
1831
1621
|
if (!status.ok()) {
|
|
1832
1622
|
return HandleError(
|
|
1833
|
-
|
|
1623
|
+
/*stream=*/nullptr,
|
|
1834
1624
|
Http2Status::Http2ConnectionError(
|
|
1835
1625
|
Http2ErrorCode::kRefusedStream,
|
|
1836
|
-
|
|
1626
|
+
std::string(GrpcErrors::kFailedToEnqueueStream)));
|
|
1837
1627
|
}
|
|
1838
1628
|
}
|
|
1839
1629
|
return absl::OkStatus();
|
|
@@ -1932,14 +1722,10 @@ void Http2ClientTransport::SetMaxAllowedStreamId(
|
|
|
1932
1722
|
if (GPR_LIKELY(max_allowed_stream_id <= old_max_allowed_stream_id)) {
|
|
1933
1723
|
max_allowed_stream_id_ = max_allowed_stream_id;
|
|
1934
1724
|
} else {
|
|
1725
|
+
GRPC_DCHECK_LE(max_allowed_stream_id, old_max_allowed_stream_id);
|
|
1935
1726
|
LOG_IF(ERROR, max_allowed_stream_id > old_max_allowed_stream_id)
|
|
1936
1727
|
<< "Endpoints MUST NOT increase the value they send in the last "
|
|
1937
|
-
"stream "
|
|
1938
|
-
"identifier";
|
|
1939
|
-
GRPC_DCHECK_LE(max_allowed_stream_id, old_max_allowed_stream_id)
|
|
1940
|
-
<< "Endpoints MUST NOT increase the value they send in the last "
|
|
1941
|
-
"stream "
|
|
1942
|
-
"identifier";
|
|
1728
|
+
"stream identifier";
|
|
1943
1729
|
}
|
|
1944
1730
|
}
|
|
1945
1731
|
|
|
@@ -1968,7 +1754,7 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
|
|
|
1968
1754
|
if (GPR_UNLIKELY(!enqueue_result.ok())) {
|
|
1969
1755
|
return enqueue_result.status();
|
|
1970
1756
|
}
|
|
1971
|
-
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport
|
|
1757
|
+
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop "
|
|
1972
1758
|
"Enqueued Initial Metadata";
|
|
1973
1759
|
return MaybeAddStreamToWritableStreamList(std::move(stream),
|
|
1974
1760
|
enqueue_result.value());
|
|
@@ -1980,7 +1766,7 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
|
|
|
1980
1766
|
if (GPR_UNLIKELY(!enqueue_result.ok())) {
|
|
1981
1767
|
return enqueue_result.status();
|
|
1982
1768
|
}
|
|
1983
|
-
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport
|
|
1769
|
+
GRPC_HTTP2_CLIENT_DLOG << "Http2ClientTransport::CallOutboundLoop "
|
|
1984
1770
|
"Enqueued Half Closed";
|
|
1985
1771
|
return MaybeAddStreamToWritableStreamList(std::move(stream),
|
|
1986
1772
|
enqueue_result.value());
|
|
@@ -2004,15 +1790,31 @@ auto Http2ClientTransport::CallOutboundLoop(RefCountedPtr<Stream> stream) {
|
|
|
2004
1790
|
[send_half_closed = std::move(send_half_closed)]() mutable {
|
|
2005
1791
|
return std::move(send_half_closed)();
|
|
2006
1792
|
},
|
|
2007
|
-
[stream]() mutable {
|
|
1793
|
+
[this, stream]() mutable {
|
|
2008
1794
|
return Map(
|
|
2009
|
-
stream->GetCallHandler().WasCancelled(),
|
|
1795
|
+
stream->GetCallHandler().WasCancelled(),
|
|
1796
|
+
[this, stream](bool cancelled) mutable {
|
|
2010
1797
|
GRPC_HTTP2_CLIENT_DLOG
|
|
2011
1798
|
<< "Http2ClientTransport::CallOutboundLoop End with "
|
|
2012
1799
|
"cancelled="
|
|
2013
1800
|
<< cancelled;
|
|
2014
|
-
|
|
2015
|
-
|
|
1801
|
+
if (cancelled) {
|
|
1802
|
+
// Enqueue an RST_STREAM frame immediately upon call
|
|
1803
|
+
// cancellation rather than waiting for CallHandler::OnDone.
|
|
1804
|
+
absl::StatusOr<StreamWritabilityUpdate> enqueue_result =
|
|
1805
|
+
stream->EnqueueResetStream(
|
|
1806
|
+
static_cast<uint32_t>(Http2ErrorCode::kCancel));
|
|
1807
|
+
GRPC_HTTP2_CLIENT_DLOG
|
|
1808
|
+
<< "Enqueued ResetStream with error code="
|
|
1809
|
+
<< static_cast<uint32_t>(Http2ErrorCode::kCancel)
|
|
1810
|
+
<< " status=" << enqueue_result.status();
|
|
1811
|
+
if (GPR_LIKELY(enqueue_result.ok())) {
|
|
1812
|
+
GRPC_UNUSED absl::Status status =
|
|
1813
|
+
MaybeAddStreamToWritableStreamList(
|
|
1814
|
+
std::move(stream), enqueue_result.value());
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
return absl::OkStatus();
|
|
2016
1818
|
});
|
|
2017
1819
|
}));
|
|
2018
1820
|
}
|
|
@@ -2112,7 +1914,7 @@ Http2ClientTransport::PingSystemInterfaceImpl::PingTimeout() {
|
|
|
2112
1914
|
// kRefusedStream doesn't seem to fit this case. We should revisit this
|
|
2113
1915
|
// and update the error code.
|
|
2114
1916
|
return Immediate(transport_->HandleError(
|
|
2115
|
-
|
|
1917
|
+
nullptr,
|
|
2116
1918
|
Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream,
|
|
2117
1919
|
GRPC_CHTTP2_PING_TIMEOUT_STR)));
|
|
2118
1920
|
}
|
|
@@ -2144,7 +1946,7 @@ Http2ClientTransport::KeepAliveInterfaceImpl::OnKeepAliveTimeout() {
|
|
|
2144
1946
|
// kRefusedStream doesn't seem to fit this case. We should revisit this
|
|
2145
1947
|
// and update the error code.
|
|
2146
1948
|
return Immediate(transport_->HandleError(
|
|
2147
|
-
|
|
1949
|
+
nullptr,
|
|
2148
1950
|
Http2Status::Http2ConnectionError(Http2ErrorCode::kRefusedStream,
|
|
2149
1951
|
GRPC_CHTTP2_KEEPALIVE_TIMEOUT_STR)));
|
|
2150
1952
|
}
|
|
@@ -2177,7 +1979,7 @@ uint32_t Http2ClientTransport::GoawayInterfaceImpl::GetLastAcceptedStreamId() {
|
|
|
2177
1979
|
// TODO(akshitpatel) : [PH2][P2] : Eventually there should be a separate ref
|
|
2178
1980
|
// counted struct/class passed to all the transport promises/members. This
|
|
2179
1981
|
// will help removing back references from the transport members to
|
|
2180
|
-
// transport and greatly
|
|
1982
|
+
// transport and greatly simplify the cleanup path. Need to do this for
|
|
2181
1983
|
// PingSystemInterfaceImpl, KeepAliveInterfaceImpl and GoawayInterfaceImpl.
|
|
2182
1984
|
|
|
2183
1985
|
} // namespace http2
|