grpc 1.71.0 → 1.72.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 +78 -75
- data/include/grpc/event_engine/memory_request.h +3 -3
- data/include/grpc/impl/channel_arg_names.h +70 -50
- data/include/grpc/support/workaround_list.h +1 -4
- data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
- data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
- data/src/core/{lib/transport → call}/call_destination.h +4 -4
- data/src/core/{lib/transport → call}/call_filters.cc +2 -2
- data/src/core/{lib/transport → call}/call_filters.h +25 -6
- data/src/core/{lib/channel → call}/call_finalization.h +3 -3
- data/src/core/{lib/transport → call}/call_spine.cc +1 -1
- data/src/core/{lib/transport → call}/call_spine.h +68 -26
- data/src/core/{lib/transport → call}/call_state.cc +1 -1
- data/src/core/{lib/transport → call}/call_state.h +3 -3
- data/src/core/{lib/surface → call}/client_call.cc +9 -7
- data/src/core/{lib/surface → call}/client_call.h +4 -4
- data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
- data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
- data/src/core/{lib/transport → call}/interception_chain.h +7 -7
- data/src/core/{lib/transport → call}/message.cc +1 -1
- data/src/core/{lib/transport → call}/message.h +7 -3
- data/src/core/{lib/transport → call}/metadata.cc +2 -2
- data/src/core/{lib/transport → call}/metadata.h +4 -4
- data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
- data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
- data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
- data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
- data/src/core/{lib/transport → call}/metadata_info.h +4 -4
- data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
- data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.h +3 -3
- data/src/core/call/security_context.cc +125 -0
- data/src/core/call/security_context.h +114 -0
- data/src/core/{lib/surface → call}/server_call.cc +3 -3
- data/src/core/{lib/surface → call}/server_call.h +5 -5
- data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
- data/src/core/{lib/channel → call}/status_util.cc +1 -1
- data/src/core/{lib/channel → call}/status_util.h +3 -3
- data/src/core/client_channel/client_channel.cc +24 -16
- data/src/core/client_channel/client_channel.h +4 -3
- data/src/core/client_channel/client_channel_filter.cc +10 -20
- data/src/core/client_channel/client_channel_filter.h +1 -1
- data/src/core/client_channel/client_channel_internal.h +1 -1
- data/src/core/client_channel/config_selector.h +2 -2
- data/src/core/client_channel/direct_channel.cc +2 -2
- data/src/core/client_channel/dynamic_filters.cc +0 -1
- data/src/core/client_channel/dynamic_filters.h +0 -1
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
- data/src/core/client_channel/load_balanced_call_destination.h +1 -1
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
- data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
- data/src/core/client_channel/retry_interceptor.h +1 -1
- data/src/core/client_channel/retry_service_config.cc +1 -1
- data/src/core/client_channel/retry_service_config.h +1 -1
- data/src/core/client_channel/retry_throttle.cc +30 -34
- data/src/core/client_channel/retry_throttle.h +10 -2
- data/src/core/client_channel/subchannel.cc +7 -8
- data/src/core/client_channel/subchannel.h +1 -2
- data/src/core/client_channel/subchannel_stream_client.cc +14 -11
- data/src/core/client_channel/subchannel_stream_client.h +2 -2
- data/src/core/config/core_configuration.h +2 -2
- data/src/core/credentials/call/call_credentials.h +157 -0
- data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
- data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
- data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
- data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
- data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
- data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
- data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +4 -3
- data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
- data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
- data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
- data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
- data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +31 -19
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
- data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +4 -4
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +6 -6
- data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
- data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
- data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
- data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -5
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +8 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +58 -57
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.cc +89 -68
- data/src/core/ext/transport/chttp2/transport/frame.h +37 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +52 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -14
- data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +26 -26
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +216 -218
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +326 -328
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +22 -24
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +29 -29
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +186 -192
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +54 -54
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +59 -61
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +15 -15
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +100 -100
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +12 -12
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +118 -118
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +19 -19
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +27 -27
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -14
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +41 -41
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +139 -139
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +61 -61
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -33
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +12 -14
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -54
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +620 -626
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +13 -13
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +15 -15
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +306 -312
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +61 -61
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +294 -294
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +84 -84
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +87 -87
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +24 -24
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +130 -132
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +60 -60
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +11 -11
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +85 -89
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +80 -83
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
- data/src/core/ext/upb-gen/google/api/http.upb.h +51 -51
- data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +327 -301
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +97 -85
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +1 -0
- data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +9 -11
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -10
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +110 -113
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +25 -25
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +6 -6
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -22
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -72
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
- data/src/core/ext/upb-gen/validate/validate.upb.h +368 -368
- data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -10
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +12 -12
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -30
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +22 -24
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
- data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +98 -87
- data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
- data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
- data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
- data/src/core/handshaker/handshaker.cc +0 -8
- data/src/core/handshaker/security/security_handshaker.cc +1 -1
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/lib/channel/channel_args.h +49 -30
- data/src/core/lib/channel/channel_stack.h +1 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +3 -3
- data/src/core/lib/debug/trace_flags.cc +2 -4
- data/src/core/lib/debug/trace_flags.h +1 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
- data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
- data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +0 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
- data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
- data/src/core/lib/event_engine/shim.cc +9 -16
- data/src/core/lib/event_engine/shim.h +11 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
- data/src/core/lib/event_engine/windows/win_socket.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -10
- data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
- data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
- data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
- data/src/core/lib/experiments/experiments.cc +174 -21
- data/src/core/lib/experiments/experiments.h +70 -13
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
- data/src/core/lib/iomgr/error.cc +27 -43
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +13 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
- data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +11 -15
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +58 -31
- data/src/core/lib/iomgr/tcp_posix.h +10 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +27 -16
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
- data/src/core/lib/promise/all_ok.h +31 -0
- data/src/core/lib/promise/loop.h +8 -5
- data/src/core/lib/promise/map.h +65 -2
- data/src/core/lib/promise/party.h +5 -1
- data/src/core/lib/promise/poll.h +22 -20
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/status_flag.h +23 -11
- data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/slice/slice.h +6 -0
- data/src/core/lib/surface/call.cc +20 -18
- data/src/core/lib/surface/call_utils.cc +3 -3
- data/src/core/lib/surface/call_utils.h +3 -3
- data/src/core/lib/surface/channel.h +2 -2
- data/src/core/lib/surface/channel_init.h +2 -2
- data/src/core/lib/surface/completion_queue.cc +77 -17
- data/src/core/lib/surface/filter_stack_call.cc +40 -27
- data/src/core/lib/surface/filter_stack_call.h +1 -1
- data/src/core/lib/surface/init.cc +2 -3
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +27 -23
- data/src/core/lib/surface/legacy_channel.h +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +65 -11
- data/src/core/lib/transport/error_utils.h +2 -2
- data/src/core/lib/transport/status_conversion.cc +16 -14
- data/src/core/lib/transport/status_conversion.h +5 -4
- data/src/core/lib/transport/transport.h +5 -5
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/load_balancing/delegating_helper.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
- data/src/core/load_balancing/grpclb/grpclb.cc +1 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +0 -955
- data/src/core/load_balancing/rls/rls.cc +31 -37
- data/src/core/load_balancing/weighted_target/weighted_target.cc +1 -1
- data/src/core/load_balancing/xds/cds.cc +3 -10
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
- data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
- data/src/core/resolver/xds/xds_resolver.cc +2 -2
- data/src/core/server/server.cc +7 -4
- data/src/core/server/server.h +1 -1
- data/src/core/server/server_call_tracer_filter.cc +1 -1
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +5 -5
- data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
- data/src/core/telemetry/call_tracer.cc +2 -4
- data/src/core/telemetry/call_tracer.h +3 -3
- data/src/core/telemetry/metrics.cc +30 -12
- data/src/core/telemetry/metrics.h +15 -3
- data/src/core/telemetry/stats_data.cc +75 -2
- data/src/core/telemetry/stats_data.h +46 -4
- data/src/core/telemetry/tcp_tracer.h +90 -84
- data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -96
- data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +6 -76
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/util/check_class_size.h +48 -0
- data/src/core/util/gcp_metadata_query.cc +1 -1
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -3
- data/src/core/util/load_file.cc +26 -14
- data/src/core/util/status_helper.cc +86 -63
- data/src/core/util/status_helper.h +9 -26
- data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
- data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
- data/src/core/xds/grpc/xds_client_grpc.h +4 -2
- data/src/core/xds/grpc/xds_cluster.h +3 -3
- data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
- data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
- data/src/core/xds/grpc/xds_http_filter.h +1 -1
- data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
- data/src/core/xds/grpc/xds_route_config.h +1 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +1 -1
- data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
- data/src/core/xds/grpc/xds_routing.h +1 -1
- data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
- data/src/core/xds/grpc/xds_server_grpc.h +23 -13
- data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
- data/src/core/xds/xds_client/lrs_client.cc +6 -5
- data/src/core/xds/xds_client/lrs_client.h +7 -7
- data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
- data/src/core/xds/xds_client/xds_client.cc +25 -23
- data/src/core/xds/xds_client/xds_client.h +3 -1
- data/src/core/xds/xds_client/xds_resource_type.h +1 -2
- data/src/core/xds/xds_client/xds_transport.h +1 -1
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +20 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +3 -7
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1 -1
- data/third_party/upb/upb/base/internal/log2.h +3 -1
- data/third_party/upb/upb/base/string_view.h +10 -0
- data/third_party/upb/upb/hash/common.c +5 -1
- data/third_party/upb/upb/json/decode.c +2 -2
- data/third_party/upb/upb/json/decode.h +0 -1
- data/third_party/upb/upb/mem/alloc.h +5 -0
- data/third_party/upb/upb/mem/arena.c +296 -142
- data/third_party/upb/upb/mem/arena.h +47 -11
- data/third_party/upb/upb/mem/arena.hpp +4 -20
- data/third_party/upb/upb/mem/internal/arena.h +4 -6
- data/third_party/upb/upb/message/accessors.h +41 -0
- data/third_party/upb/upb/message/compat.c +11 -14
- data/third_party/upb/upb/message/compat.h +4 -3
- data/third_party/upb/upb/message/copy.c +35 -30
- data/third_party/upb/upb/message/internal/accessors.h +139 -10
- data/third_party/upb/upb/message/internal/extension.c +28 -25
- data/third_party/upb/upb/message/internal/extension.h +21 -5
- data/third_party/upb/upb/message/internal/iterator.c +58 -0
- data/third_party/upb/upb/message/internal/iterator.h +29 -0
- data/third_party/upb/upb/message/internal/map.h +2 -3
- data/third_party/upb/upb/message/internal/map_sorter.h +3 -2
- data/third_party/upb/upb/message/internal/message.c +48 -29
- data/third_party/upb/upb/message/internal/message.h +154 -24
- data/third_party/upb/upb/message/map_sorter.c +20 -8
- data/third_party/upb/upb/message/message.c +90 -38
- data/third_party/upb/upb/message/message.h +58 -2
- data/third_party/upb/upb/message/value.h +9 -0
- data/third_party/upb/upb/mini_descriptor/build_enum.c +1 -1
- data/third_party/upb/upb/mini_descriptor/decode.c +97 -136
- data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
- data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
- data/third_party/upb/upb/mini_table/extension_registry.c +24 -12
- data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
- data/third_party/upb/upb/mini_table/message.c +21 -13
- data/third_party/upb/upb/port/atomic.h +134 -7
- data/third_party/upb/upb/port/def.inc +140 -38
- data/third_party/upb/upb/port/undef.inc +11 -1
- data/third_party/upb/upb/reflection/def.hpp +5 -1
- data/third_party/upb/upb/reflection/def_pool.c +10 -3
- data/third_party/upb/upb/reflection/descriptor_bootstrap.h +1 -1
- data/third_party/upb/upb/reflection/file_def.c +12 -5
- data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
- data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
- data/third_party/upb/upb/reflection/message.c +19 -16
- data/third_party/upb/upb/reflection/message.h +3 -1
- data/third_party/upb/upb/text/encode.c +1 -13
- data/third_party/upb/upb/text/internal/encode.c +25 -6
- data/third_party/upb/upb/text/internal/encode.h +4 -0
- data/third_party/upb/upb/wire/decode.c +60 -45
- data/third_party/upb/upb/wire/decode.h +4 -2
- data/third_party/upb/upb/wire/encode.c +77 -42
- data/third_party/upb/upb/wire/encode.h +2 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
- data/third_party/upb/upb/wire/internal/decoder.h +4 -11
- data/third_party/utf8_range/utf8_range.c +15 -275
- data/third_party/utf8_range/utf8_range_neon.inc +117 -0
- data/third_party/utf8_range/utf8_range_sse.inc +272 -0
- data/third_party/zlib/deflate.c +40 -15
- data/third_party/zlib/deflate.h +33 -2
- data/third_party/zlib/gzguts.h +2 -6
- data/third_party/zlib/inflate.c +1 -1
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/inftrees.h +2 -2
- data/third_party/zlib/trees.c +18 -4
- data/third_party/zlib/zconf.h +1 -9
- data/third_party/zlib/zlib.h +12 -12
- data/third_party/zlib/zutil.h +4 -25
- metadata +155 -145
- data/include/grpc/grpc_cronet.h +0 -37
- data/src/core/lib/transport/http2_errors.h +0 -43
- data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
- data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -42,7 +42,7 @@ class ContextListEntry {
|
|
42
42
|
ContextListEntry(void* context, int64_t outbuf_offset,
|
43
43
|
int64_t num_traced_bytes, size_t byte_offset,
|
44
44
|
size_t stream_index,
|
45
|
-
std::shared_ptr<
|
45
|
+
std::shared_ptr<TcpCallTracer> tcp_tracer)
|
46
46
|
: trace_context_(context),
|
47
47
|
outbuf_offset_(outbuf_offset),
|
48
48
|
num_traced_bytes_in_chunk_(num_traced_bytes),
|
@@ -57,7 +57,7 @@ class ContextListEntry {
|
|
57
57
|
int64_t NumTracedBytesInChunk() { return num_traced_bytes_in_chunk_; }
|
58
58
|
size_t ByteOffsetInStream() { return byte_offset_in_stream_; }
|
59
59
|
size_t StreamIndex() { return stream_index_; }
|
60
|
-
std::shared_ptr<
|
60
|
+
std::shared_ptr<TcpCallTracer> ReleaseTcpTracer() {
|
61
61
|
return std::move(tcp_tracer_);
|
62
62
|
}
|
63
63
|
|
@@ -72,7 +72,7 @@ class ContextListEntry {
|
|
72
72
|
// Index of the current chunk in the RPC stream.
|
73
73
|
// Set to zero for the first chunk of the RPC stream.
|
74
74
|
size_t stream_index_;
|
75
|
-
std::shared_ptr<
|
75
|
+
std::shared_ptr<TcpCallTracer> tcp_tracer_;
|
76
76
|
};
|
77
77
|
|
78
78
|
/// A list of RPC Contexts
|
@@ -18,27 +18,33 @@
|
|
18
18
|
#include <stddef.h>
|
19
19
|
|
20
20
|
#include <cstdint>
|
21
|
+
#include <string>
|
21
22
|
#include <utility>
|
22
23
|
|
23
24
|
#include "absl/log/check.h"
|
24
25
|
#include "absl/status/status.h"
|
25
26
|
#include "absl/strings/str_cat.h"
|
27
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
26
28
|
#include "src/core/util/crash.h"
|
27
29
|
|
28
30
|
namespace grpc_core {
|
29
31
|
|
30
32
|
namespace {
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
34
|
+
// HTTP2 Frame Types
|
35
|
+
enum class FrameType : uint8_t {
|
36
|
+
kData = 0,
|
37
|
+
kHeader = 1,
|
38
|
+
// type 2 was Priority which has been deprecated.
|
39
|
+
kRstStream = 3,
|
40
|
+
kSettings = 4,
|
41
|
+
kPushPromise = 5,
|
42
|
+
kPing = 6,
|
43
|
+
kGoaway = 7,
|
44
|
+
kWindowUpdate = 8,
|
45
|
+
kContinuation = 9,
|
46
|
+
kCustomSecurity = 200, // Custom Frame Type
|
47
|
+
};
|
42
48
|
|
43
49
|
constexpr uint8_t kFlagEndStream = 1;
|
44
50
|
constexpr uint8_t kFlagAck = 1;
|
@@ -46,8 +52,6 @@ constexpr uint8_t kFlagEndHeaders = 4;
|
|
46
52
|
constexpr uint8_t kFlagPadded = 8;
|
47
53
|
constexpr uint8_t kFlagPriority = 0x20;
|
48
54
|
|
49
|
-
constexpr size_t kFrameHeaderSize = 9;
|
50
|
-
|
51
55
|
void Write2b(uint16_t x, uint8_t* output) {
|
52
56
|
output[0] = static_cast<uint8_t>(x >> 8);
|
53
57
|
output[1] = static_cast<uint8_t>(x);
|
@@ -125,6 +129,7 @@ class SerializeExtraBytesRequired {
|
|
125
129
|
size_t operator()(const Http2WindowUpdateFrame&) { return 4; }
|
126
130
|
size_t operator()(const Http2SecurityFrame&) { return 0; }
|
127
131
|
size_t operator()(const Http2UnknownFrame&) { Crash("unreachable"); }
|
132
|
+
size_t operator()(const Http2EmptyFrame&) { Crash("unreachable"); }
|
128
133
|
};
|
129
134
|
|
130
135
|
class SerializeHeaderAndPayload {
|
@@ -135,9 +140,10 @@ class SerializeHeaderAndPayload {
|
|
135
140
|
|
136
141
|
void operator()(Http2DataFrame& frame) {
|
137
142
|
auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize);
|
138
|
-
Http2FrameHeader{
|
139
|
-
|
140
|
-
|
143
|
+
Http2FrameHeader{static_cast<uint32_t>(frame.payload.Length()),
|
144
|
+
static_cast<uint8_t>(FrameType::kData),
|
145
|
+
MaybeFlag(frame.end_stream, kFlagEndStream),
|
146
|
+
frame.stream_id}
|
141
147
|
.Serialize(hdr.begin());
|
142
148
|
out_.AppendIndexed(Slice(std::move(hdr)));
|
143
149
|
out_.TakeAndAppend(frame.payload);
|
@@ -146,7 +152,8 @@ class SerializeHeaderAndPayload {
|
|
146
152
|
void operator()(Http2HeaderFrame& frame) {
|
147
153
|
auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize);
|
148
154
|
Http2FrameHeader{
|
149
|
-
static_cast<uint32_t>(frame.payload.Length()),
|
155
|
+
static_cast<uint32_t>(frame.payload.Length()),
|
156
|
+
static_cast<uint8_t>(FrameType::kHeader),
|
150
157
|
static_cast<uint8_t>(MaybeFlag(frame.end_headers, kFlagEndHeaders) |
|
151
158
|
MaybeFlag(frame.end_stream, kFlagEndStream)),
|
152
159
|
frame.stream_id}
|
@@ -158,7 +165,8 @@ class SerializeHeaderAndPayload {
|
|
158
165
|
void operator()(Http2ContinuationFrame& frame) {
|
159
166
|
auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize);
|
160
167
|
Http2FrameHeader{
|
161
|
-
static_cast<uint32_t>(frame.payload.Length()),
|
168
|
+
static_cast<uint32_t>(frame.payload.Length()),
|
169
|
+
static_cast<uint8_t>(FrameType::kContinuation),
|
162
170
|
static_cast<uint8_t>(MaybeFlag(frame.end_headers, kFlagEndHeaders)),
|
163
171
|
frame.stream_id}
|
164
172
|
.Serialize(hdr.begin());
|
@@ -168,8 +176,9 @@ class SerializeHeaderAndPayload {
|
|
168
176
|
|
169
177
|
void operator()(Http2RstStreamFrame& frame) {
|
170
178
|
auto hdr_and_payload = extra_bytes_.TakeFirst(kFrameHeaderSize + 4);
|
171
|
-
Http2FrameHeader{4,
|
172
|
-
|
179
|
+
Http2FrameHeader{4, static_cast<uint8_t>(FrameType::kRstStream), 0,
|
180
|
+
frame.stream_id}
|
181
|
+
.Serialize(hdr_and_payload.begin());
|
173
182
|
Write4b(frame.error_code, hdr_and_payload.begin() + kFrameHeaderSize);
|
174
183
|
out_.AppendIndexed(Slice(std::move(hdr_and_payload)));
|
175
184
|
}
|
@@ -179,7 +188,8 @@ class SerializeHeaderAndPayload {
|
|
179
188
|
const size_t payload_size = 6 * frame.settings.size();
|
180
189
|
auto hdr_and_payload =
|
181
190
|
extra_bytes_.TakeFirst(kFrameHeaderSize + payload_size);
|
182
|
-
Http2FrameHeader{static_cast<uint32_t>(payload_size),
|
191
|
+
Http2FrameHeader{static_cast<uint32_t>(payload_size),
|
192
|
+
static_cast<uint8_t>(FrameType::kSettings),
|
183
193
|
MaybeFlag(frame.ack, kFlagAck), 0}
|
184
194
|
.Serialize(hdr_and_payload.begin());
|
185
195
|
size_t offset = kFrameHeaderSize;
|
@@ -193,7 +203,8 @@ class SerializeHeaderAndPayload {
|
|
193
203
|
|
194
204
|
void operator()(Http2PingFrame& frame) {
|
195
205
|
auto hdr_and_payload = extra_bytes_.TakeFirst(kFrameHeaderSize + 8);
|
196
|
-
Http2FrameHeader{8,
|
206
|
+
Http2FrameHeader{8, static_cast<uint8_t>(FrameType::kPing),
|
207
|
+
MaybeFlag(frame.ack, kFlagAck), 0}
|
197
208
|
.Serialize(hdr_and_payload.begin());
|
198
209
|
Write8b(frame.opaque, hdr_and_payload.begin() + kFrameHeaderSize);
|
199
210
|
out_.AppendIndexed(Slice(std::move(hdr_and_payload)));
|
@@ -202,7 +213,7 @@ class SerializeHeaderAndPayload {
|
|
202
213
|
void operator()(Http2GoawayFrame& frame) {
|
203
214
|
auto hdr_and_fixed_payload = extra_bytes_.TakeFirst(kFrameHeaderSize + 8);
|
204
215
|
Http2FrameHeader{static_cast<uint32_t>(8 + frame.debug_data.length()),
|
205
|
-
|
216
|
+
static_cast<uint8_t>(FrameType::kGoaway), 0, 0}
|
206
217
|
.Serialize(hdr_and_fixed_payload.begin());
|
207
218
|
Write4b(frame.last_stream_id,
|
208
219
|
hdr_and_fixed_payload.begin() + kFrameHeaderSize);
|
@@ -214,8 +225,9 @@ class SerializeHeaderAndPayload {
|
|
214
225
|
|
215
226
|
void operator()(Http2WindowUpdateFrame& frame) {
|
216
227
|
auto hdr_and_payload = extra_bytes_.TakeFirst(kFrameHeaderSize + 4);
|
217
|
-
Http2FrameHeader{4,
|
218
|
-
|
228
|
+
Http2FrameHeader{4, static_cast<uint8_t>(FrameType::kWindowUpdate), 0,
|
229
|
+
frame.stream_id}
|
230
|
+
.Serialize(hdr_and_payload.begin());
|
219
231
|
Write4b(frame.increment, hdr_and_payload.begin() + kFrameHeaderSize);
|
220
232
|
out_.AppendIndexed(Slice(std::move(hdr_and_payload)));
|
221
233
|
}
|
@@ -223,7 +235,7 @@ class SerializeHeaderAndPayload {
|
|
223
235
|
void operator()(Http2SecurityFrame& frame) {
|
224
236
|
auto hdr = extra_bytes_.TakeFirst(kFrameHeaderSize);
|
225
237
|
Http2FrameHeader{static_cast<uint32_t>(frame.payload.Length()),
|
226
|
-
|
238
|
+
static_cast<uint8_t>(FrameType::kCustomSecurity), 0, 0}
|
227
239
|
.Serialize(hdr.begin());
|
228
240
|
out_.AppendIndexed(Slice(std::move(hdr)));
|
229
241
|
out_.TakeAndAppend(frame.payload);
|
@@ -231,6 +243,8 @@ class SerializeHeaderAndPayload {
|
|
231
243
|
|
232
244
|
void operator()(Http2UnknownFrame&) { Crash("unreachable"); }
|
233
245
|
|
246
|
+
void operator()(Http2EmptyFrame&) {}
|
247
|
+
|
234
248
|
private:
|
235
249
|
SliceBuffer& out_;
|
236
250
|
MutableSlice extra_bytes_;
|
@@ -365,18 +379,9 @@ absl::StatusOr<Http2PingFrame> ParsePingFrame(const Http2FrameHeader& hdr,
|
|
365
379
|
absl::StrCat("invalid ping stream id: ", hdr.ToString()));
|
366
380
|
}
|
367
381
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
ack = false;
|
372
|
-
break;
|
373
|
-
case kFlagAck:
|
374
|
-
ack = true;
|
375
|
-
break;
|
376
|
-
default:
|
377
|
-
return absl::InternalError(
|
378
|
-
absl::StrCat("invalid ping flags: ", hdr.ToString()));
|
379
|
-
}
|
382
|
+
// RFC9113 : Unused flags MUST be ignored on receipt and MUST be left unset
|
383
|
+
// (0x00) when sending.
|
384
|
+
bool ack = ((hdr.flags & kFlagAck) == kFlagAck);
|
380
385
|
|
381
386
|
uint8_t buffer[8];
|
382
387
|
payload.CopyToBuffer(buffer);
|
@@ -397,11 +402,6 @@ absl::StatusOr<Http2GoawayFrame> ParseGoawayFrame(const Http2FrameHeader& hdr,
|
|
397
402
|
absl::StrCat("invalid goaway stream id: ", hdr.ToString()));
|
398
403
|
}
|
399
404
|
|
400
|
-
if (hdr.flags != 0) {
|
401
|
-
return absl::InternalError(
|
402
|
-
absl::StrCat("invalid goaway flags: ", hdr.ToString()));
|
403
|
-
}
|
404
|
-
|
405
405
|
uint8_t buffer[8];
|
406
406
|
payload.MoveFirstNBytesIntoBuffer(8, buffer);
|
407
407
|
return Http2GoawayFrame{Read4b(buffer), Read4b(buffer + 4),
|
@@ -445,34 +445,38 @@ Http2FrameHeader Http2FrameHeader::Parse(const uint8_t* input) {
|
|
445
445
|
}
|
446
446
|
|
447
447
|
namespace {
|
448
|
-
|
448
|
+
|
449
|
+
std::string Http2FrameTypeString(FrameType frame_type) {
|
449
450
|
switch (frame_type) {
|
450
|
-
case
|
451
|
+
case FrameType::kData:
|
451
452
|
return "DATA";
|
452
|
-
case
|
453
|
+
case FrameType::kHeader:
|
453
454
|
return "HEADER";
|
454
|
-
case
|
455
|
-
return "CONTINUATION";
|
456
|
-
case kFrameTypeRstStream:
|
455
|
+
case FrameType::kRstStream:
|
457
456
|
return "RST_STREAM";
|
458
|
-
case
|
457
|
+
case FrameType::kSettings:
|
459
458
|
return "SETTINGS";
|
460
|
-
case
|
459
|
+
case FrameType::kPushPromise:
|
460
|
+
return "PUSH_PROMISE";
|
461
|
+
case FrameType::kPing:
|
462
|
+
return "PING";
|
463
|
+
case FrameType::kGoaway:
|
461
464
|
return "GOAWAY";
|
462
|
-
case
|
465
|
+
case FrameType::kWindowUpdate:
|
463
466
|
return "WINDOW_UPDATE";
|
464
|
-
case
|
465
|
-
return "
|
466
|
-
case
|
467
|
+
case FrameType::kContinuation:
|
468
|
+
return "CONTINUATION";
|
469
|
+
case FrameType::kCustomSecurity:
|
467
470
|
return "SECURITY";
|
468
471
|
}
|
469
|
-
return absl::StrCat("UNKNOWN(", frame_type, ")");
|
472
|
+
return absl::StrCat("UNKNOWN(", static_cast<uint8_t>(frame_type), ")");
|
470
473
|
}
|
471
474
|
} // namespace
|
472
475
|
|
473
476
|
std::string Http2FrameHeader::ToString() const {
|
474
|
-
return absl::StrCat("{", Http2FrameTypeString(type),
|
475
|
-
"
|
477
|
+
return absl::StrCat("{", Http2FrameTypeString(static_cast<FrameType>(type)),
|
478
|
+
": flags=", flags, ", stream_id=", stream_id,
|
479
|
+
", length=", length, "}");
|
476
480
|
}
|
477
481
|
|
478
482
|
void Serialize(absl::Span<Http2Frame> frames, SliceBuffer& out) {
|
@@ -492,32 +496,49 @@ void Serialize(absl::Span<Http2Frame> frames, SliceBuffer& out) {
|
|
492
496
|
absl::StatusOr<Http2Frame> ParseFramePayload(const Http2FrameHeader& hdr,
|
493
497
|
SliceBuffer payload) {
|
494
498
|
CHECK(payload.Length() == hdr.length);
|
495
|
-
switch (hdr.type) {
|
496
|
-
case
|
499
|
+
switch (static_cast<FrameType>(hdr.type)) {
|
500
|
+
case FrameType::kData:
|
497
501
|
return ParseDataFrame(hdr, payload);
|
498
|
-
case
|
502
|
+
case FrameType::kHeader:
|
499
503
|
return ParseHeaderFrame(hdr, payload);
|
500
|
-
case
|
504
|
+
case FrameType::kContinuation:
|
501
505
|
return ParseContinuationFrame(hdr, payload);
|
502
|
-
case
|
506
|
+
case FrameType::kRstStream:
|
503
507
|
return ParseRstStreamFrame(hdr, payload);
|
504
|
-
case
|
508
|
+
case FrameType::kSettings:
|
505
509
|
return ParseSettingsFrame(hdr, payload);
|
506
|
-
case
|
510
|
+
case FrameType::kPing:
|
507
511
|
return ParsePingFrame(hdr, payload);
|
508
|
-
case
|
512
|
+
case FrameType::kGoaway:
|
509
513
|
return ParseGoawayFrame(hdr, payload);
|
510
|
-
case
|
514
|
+
case FrameType::kWindowUpdate:
|
511
515
|
return ParseWindowUpdateFrame(hdr, payload);
|
512
|
-
case
|
516
|
+
case FrameType::kPushPromise:
|
513
517
|
return absl::InternalError(
|
514
518
|
"push promise not supported (and SETTINGS_ENABLE_PUSH explicitly "
|
515
519
|
"disabled).");
|
516
|
-
case
|
520
|
+
case FrameType::kCustomSecurity:
|
517
521
|
return ParseSecurityFrame(hdr, payload);
|
518
522
|
default:
|
519
523
|
return Http2UnknownFrame{};
|
520
524
|
}
|
521
525
|
}
|
522
526
|
|
527
|
+
GrpcMessageHeader ExtractGrpcHeader(SliceBuffer& payload) {
|
528
|
+
CHECK_GE(payload.Length(), kGrpcHeaderSizeInBytes);
|
529
|
+
uint8_t buffer[kGrpcHeaderSizeInBytes];
|
530
|
+
payload.MoveFirstNBytesIntoBuffer(kGrpcHeaderSizeInBytes, buffer);
|
531
|
+
GrpcMessageHeader header;
|
532
|
+
header.flags = buffer[0];
|
533
|
+
header.length = Read4b(buffer + 1);
|
534
|
+
return header;
|
535
|
+
}
|
536
|
+
|
537
|
+
void AppendGrpcHeaderToSliceBuffer(SliceBuffer& payload, const uint8_t flags,
|
538
|
+
const uint32_t length) {
|
539
|
+
uint8_t* frame_hdr = payload.AddTiny(kGrpcHeaderSizeInBytes);
|
540
|
+
frame_hdr[0] = flags;
|
541
|
+
Write4b(length, frame_hdr + 1);
|
542
|
+
}
|
543
|
+
|
523
544
|
} // namespace grpc_core
|
@@ -50,6 +50,19 @@ namespace grpc_core {
|
|
50
50
|
//
|
51
51
|
// Equality operators are defined for use in unit tests.
|
52
52
|
|
53
|
+
// All frames begin with a fixed 9-octet header followed by a variable-length
|
54
|
+
// frame payload. The following sizes are in bits.
|
55
|
+
// HTTP Frame {
|
56
|
+
// Length(24),
|
57
|
+
// Type(8),
|
58
|
+
// Flags(8),
|
59
|
+
// Reserved(1),
|
60
|
+
// Stream Identifier(31),
|
61
|
+
// Frame Payload(..),
|
62
|
+
// }
|
63
|
+
// Reference : https://www.rfc-editor.org/rfc/rfc9113.html#name-frame-format
|
64
|
+
constexpr uint8_t kFrameHeaderSize = 9;
|
65
|
+
|
53
66
|
// DATA frame
|
54
67
|
struct Http2DataFrame {
|
55
68
|
uint32_t stream_id = 0;
|
@@ -165,6 +178,11 @@ struct Http2UnknownFrame {
|
|
165
178
|
bool operator==(const Http2UnknownFrame&) const { return true; }
|
166
179
|
};
|
167
180
|
|
181
|
+
// This is used as a fake frame to trigger events in the HTTP2 transport.
|
182
|
+
struct Http2EmptyFrame {
|
183
|
+
bool operator==(const Http2EmptyFrame&) const { return true; }
|
184
|
+
};
|
185
|
+
|
168
186
|
///////////////////////////////////////////////////////////////////////////////
|
169
187
|
// Frame variant
|
170
188
|
//
|
@@ -174,7 +192,7 @@ using Http2Frame =
|
|
174
192
|
std::variant<Http2DataFrame, Http2HeaderFrame, Http2ContinuationFrame,
|
175
193
|
Http2RstStreamFrame, Http2SettingsFrame, Http2PingFrame,
|
176
194
|
Http2GoawayFrame, Http2WindowUpdateFrame, Http2SecurityFrame,
|
177
|
-
Http2UnknownFrame>;
|
195
|
+
Http2UnknownFrame, Http2EmptyFrame>;
|
178
196
|
|
179
197
|
///////////////////////////////////////////////////////////////////////////////
|
180
198
|
// Frame header
|
@@ -218,6 +236,24 @@ absl::StatusOr<Http2Frame> ParseFramePayload(const Http2FrameHeader& hdr,
|
|
218
236
|
// move things out of frames)
|
219
237
|
void Serialize(absl::Span<Http2Frame> frames, SliceBuffer& out);
|
220
238
|
|
239
|
+
///////////////////////////////////////////////////////////////////////////////
|
240
|
+
// GRPC Header
|
241
|
+
|
242
|
+
constexpr uint8_t kGrpcHeaderSizeInBytes = 5;
|
243
|
+
|
244
|
+
struct GrpcMessageHeader {
|
245
|
+
uint8_t flags;
|
246
|
+
uint32_t length;
|
247
|
+
};
|
248
|
+
|
249
|
+
// If the payload SliceBuffer is too small to hold a gRPC header, this function
|
250
|
+
// will crash. The calling function MUST ensure that the payload SliceBuffer
|
251
|
+
// has length greater than or equal to the gRPC header.
|
252
|
+
GrpcMessageHeader ExtractGrpcHeader(SliceBuffer& payload);
|
253
|
+
|
254
|
+
void AppendGrpcHeaderToSliceBuffer(SliceBuffer& payload, const uint8_t flags,
|
255
|
+
const uint32_t length);
|
256
|
+
|
221
257
|
} // namespace grpc_core
|
222
258
|
|
223
259
|
#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "src/core/lib/slice/slice.h"
|
32
32
|
#include "src/core/lib/slice/slice_buffer.h"
|
33
33
|
#include "src/core/lib/transport/transport.h"
|
34
|
+
#include "src/core/telemetry/stats.h"
|
34
35
|
#include "src/core/util/status_helper.h"
|
35
36
|
|
36
37
|
absl::Status grpc_chttp2_data_parser_begin_frame(uint8_t flags,
|
@@ -75,6 +76,7 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf,
|
|
75
76
|
|
76
77
|
grpc_slice_buffer_move_first_no_ref(inbuf, write_bytes, outbuf);
|
77
78
|
|
79
|
+
grpc_core::global_stats().IncrementHttp2WriteDataFrameSize(write_bytes);
|
78
80
|
call_tracer->RecordOutgoingBytes({header_size, 0, 0});
|
79
81
|
}
|
80
82
|
|
@@ -28,16 +28,18 @@
|
|
28
28
|
#include "absl/status/status.h"
|
29
29
|
#include "absl/strings/str_cat.h"
|
30
30
|
#include "absl/strings/str_format.h"
|
31
|
+
#include "src/core/call/metadata_batch.h"
|
31
32
|
#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h"
|
33
|
+
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
32
34
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
33
35
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
34
36
|
#include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
|
35
37
|
#include "src/core/lib/debug/trace.h"
|
36
38
|
#include "src/core/lib/experiments/experiments.h"
|
37
|
-
#include "src/core/lib/transport/http2_errors.h"
|
38
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
39
39
|
#include "src/core/util/status_helper.h"
|
40
40
|
|
41
|
+
using grpc_core::http2::Http2ErrorCode;
|
42
|
+
|
41
43
|
grpc_slice grpc_chttp2_rst_stream_create(
|
42
44
|
uint32_t id, uint32_t code, grpc_core::CallTracerInterface* call_tracer) {
|
43
45
|
static const size_t frame_size = 13;
|
@@ -116,7 +118,8 @@ grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser,
|
|
116
118
|
<< "[chttp2 transport=" << t << " stream=" << s
|
117
119
|
<< "] received RST_STREAM(reason=" << reason << ")";
|
118
120
|
grpc_error_handle error;
|
119
|
-
if (reason !=
|
121
|
+
if (reason != static_cast<uint32_t>(Http2ErrorCode::kNoError) ||
|
122
|
+
s->trailing_metadata_buffer.empty()) {
|
120
123
|
error = grpc_error_set_int(
|
121
124
|
grpc_error_set_str(
|
122
125
|
GRPC_ERROR_CREATE("RST_STREAM"),
|
@@ -40,6 +40,8 @@
|
|
40
40
|
#include "src/core/util/debug_location.h"
|
41
41
|
#include "src/core/util/useful.h"
|
42
42
|
|
43
|
+
using grpc_core::http2::Http2ErrorCode;
|
44
|
+
|
43
45
|
static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) {
|
44
46
|
*out++ = static_cast<uint8_t>(length >> 16);
|
45
47
|
*out++ = static_cast<uint8_t>(length >> 8);
|
@@ -193,9 +195,9 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
|
|
193
195
|
}
|
194
196
|
auto error =
|
195
197
|
parser->incoming_settings->Apply(parser->id, parser->value);
|
196
|
-
if (error !=
|
198
|
+
if (error != Http2ErrorCode::kNoError) {
|
197
199
|
grpc_chttp2_goaway_append(
|
198
|
-
t->last_new_stream_id, error,
|
200
|
+
t->last_new_stream_id, static_cast<uint32_t>(error),
|
199
201
|
grpc_slice_from_static_string("HTTP2 settings error"), &t->qbuf);
|
200
202
|
return GRPC_ERROR_CREATE(absl::StrFormat(
|
201
203
|
"invalid value %u passed for %s", parser->value,
|
@@ -31,12 +31,12 @@
|
|
31
31
|
#include "absl/strings/match.h"
|
32
32
|
#include "absl/strings/str_cat.h"
|
33
33
|
#include "absl/strings/string_view.h"
|
34
|
+
#include "src/core/call/metadata_batch.h"
|
35
|
+
#include "src/core/call/metadata_compression_traits.h"
|
34
36
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
35
37
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
|
36
38
|
#include "src/core/lib/slice/slice.h"
|
37
39
|
#include "src/core/lib/slice/slice_buffer.h"
|
38
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
39
|
-
#include "src/core/lib/transport/metadata_compression_traits.h"
|
40
40
|
#include "src/core/lib/transport/timeout_encoding.h"
|
41
41
|
#include "src/core/lib/transport/transport.h"
|
42
42
|
#include "src/core/telemetry/call_tracer.h"
|
@@ -27,8 +27,8 @@
|
|
27
27
|
#include "absl/status/status.h"
|
28
28
|
#include "absl/strings/str_cat.h"
|
29
29
|
#include "absl/strings/string_view.h"
|
30
|
+
#include "src/core/call/metadata_batch.h"
|
30
31
|
#include "src/core/lib/surface/validate_metadata.h"
|
31
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
32
32
|
#include "src/core/util/crash.h"
|
33
33
|
#include "src/core/util/ref_counted.h"
|
34
34
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -38,6 +38,8 @@
|
|
38
38
|
#include "absl/strings/str_cat.h"
|
39
39
|
#include "absl/strings/string_view.h"
|
40
40
|
#include "absl/types/span.h"
|
41
|
+
#include "src/core/call/metadata_info.h"
|
42
|
+
#include "src/core/call/parsed_metadata.h"
|
41
43
|
#include "src/core/ext/transport/chttp2/transport/decode_huff.h"
|
42
44
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
43
45
|
#include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
|
@@ -46,8 +48,6 @@
|
|
46
48
|
#include "src/core/lib/slice/slice.h"
|
47
49
|
#include "src/core/lib/slice/slice_refcount.h"
|
48
50
|
#include "src/core/lib/surface/validate_metadata.h"
|
49
|
-
#include "src/core/lib/transport/metadata_info.h"
|
50
|
-
#include "src/core/lib/transport/parsed_metadata.h"
|
51
51
|
#include "src/core/telemetry/call_tracer.h"
|
52
52
|
#include "src/core/telemetry/stats.h"
|
53
53
|
#include "src/core/telemetry/stats_data.h"
|
@@ -34,13 +34,13 @@
|
|
34
34
|
#include "absl/strings/str_cat.h"
|
35
35
|
#include "absl/strings/string_view.h"
|
36
36
|
#include "absl/types/span.h"
|
37
|
+
#include "src/core/call/metadata_batch.h"
|
37
38
|
#include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
|
38
39
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
|
39
40
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
40
41
|
#include "src/core/lib/iomgr/error.h"
|
41
42
|
#include "src/core/lib/slice/slice.h"
|
42
43
|
#include "src/core/lib/slice/slice_refcount.h"
|
43
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
44
44
|
#include "src/core/telemetry/call_tracer.h"
|
45
45
|
#include "src/core/util/random_early_detection.h"
|
46
46
|
|
@@ -29,10 +29,10 @@
|
|
29
29
|
#include <vector>
|
30
30
|
|
31
31
|
#include "absl/functional/function_ref.h"
|
32
|
+
#include "src/core/call/metadata_batch.h"
|
33
|
+
#include "src/core/call/parsed_metadata.h"
|
32
34
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
33
35
|
#include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
|
34
|
-
#include "src/core/lib/transport/metadata_batch.h"
|
35
|
-
#include "src/core/lib/transport/parsed_metadata.h"
|
36
36
|
#include "src/core/util/no_destruct.h"
|
37
37
|
#include "src/core/util/unique_ptr_with_bitset.h"
|
38
38
|
|
@@ -24,9 +24,11 @@
|
|
24
24
|
|
25
25
|
#include "absl/strings/str_cat.h"
|
26
26
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
27
|
-
#include "src/core/
|
27
|
+
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
28
28
|
#include "src/core/util/useful.h"
|
29
29
|
|
30
|
+
using grpc_core::http2::Http2ErrorCode;
|
31
|
+
|
30
32
|
namespace grpc_core {
|
31
33
|
|
32
34
|
void Http2Settings::Diff(
|
@@ -88,13 +90,13 @@ std::string Http2Settings::WireIdToName(uint16_t wire_id) {
|
|
88
90
|
}
|
89
91
|
}
|
90
92
|
|
91
|
-
|
93
|
+
Http2ErrorCode Http2Settings::Apply(uint16_t key, uint32_t value) {
|
92
94
|
switch (key) {
|
93
95
|
case kHeaderTableSizeWireId:
|
94
96
|
header_table_size_ = value;
|
95
97
|
break;
|
96
98
|
case kEnablePushWireId:
|
97
|
-
if (value > 1) return
|
99
|
+
if (value > 1) return Http2ErrorCode::kProtocolError;
|
98
100
|
enable_push_ = value != 0;
|
99
101
|
break;
|
100
102
|
case kMaxConcurrentStreamsWireId:
|
@@ -102,13 +104,13 @@ grpc_http2_error_code Http2Settings::Apply(uint16_t key, uint32_t value) {
|
|
102
104
|
break;
|
103
105
|
case kInitialWindowSizeWireId:
|
104
106
|
if (value > max_initial_window_size()) {
|
105
|
-
return
|
107
|
+
return Http2ErrorCode::kFlowControlError;
|
106
108
|
}
|
107
109
|
initial_window_size_ = value;
|
108
110
|
break;
|
109
111
|
case kMaxFrameSizeWireId:
|
110
112
|
if (value < min_max_frame_size() || value > max_max_frame_size()) {
|
111
|
-
return
|
113
|
+
return Http2ErrorCode::kProtocolError;
|
112
114
|
}
|
113
115
|
max_frame_size_ = value;
|
114
116
|
break;
|
@@ -116,7 +118,7 @@ grpc_http2_error_code Http2Settings::Apply(uint16_t key, uint32_t value) {
|
|
116
118
|
max_header_list_size_ = std::min(value, 16777216u);
|
117
119
|
break;
|
118
120
|
case kGrpcAllowTrueBinaryMetadataWireId:
|
119
|
-
if (value > 1) return
|
121
|
+
if (value > 1) return Http2ErrorCode::kProtocolError;
|
120
122
|
allow_true_binary_metadata_ = value != 0;
|
121
123
|
break;
|
122
124
|
case kGrpcPreferredReceiveCryptoFrameSizeWireId:
|
@@ -125,11 +127,11 @@ grpc_http2_error_code Http2Settings::Apply(uint16_t key, uint32_t value) {
|
|
125
127
|
max_preferred_receive_crypto_message_size());
|
126
128
|
break;
|
127
129
|
case kGrpcAllowSecurityFrameWireId:
|
128
|
-
if (value > 1) return
|
130
|
+
if (value > 1) return Http2ErrorCode::kProtocolError;
|
129
131
|
allow_security_frame_ = value != 0;
|
130
132
|
break;
|
131
133
|
}
|
132
|
-
return
|
134
|
+
return Http2ErrorCode::kNoError;
|
133
135
|
}
|
134
136
|
|
135
137
|
std::optional<Http2SettingsFrame> Http2SettingsManager::MaybeSendUpdate() {
|
@@ -26,7 +26,7 @@
|
|
26
26
|
#include "absl/functional/function_ref.h"
|
27
27
|
#include "absl/strings/string_view.h"
|
28
28
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
29
|
-
#include "src/core/
|
29
|
+
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
30
30
|
#include "src/core/util/useful.h"
|
31
31
|
|
32
32
|
namespace grpc_core {
|
@@ -47,7 +47,7 @@ class Http2Settings {
|
|
47
47
|
|
48
48
|
void Diff(bool is_first_send, const Http2Settings& old,
|
49
49
|
absl::FunctionRef<void(uint16_t key, uint32_t value)> cb) const;
|
50
|
-
GRPC_MUST_USE_RESULT
|
50
|
+
GRPC_MUST_USE_RESULT http2::Http2ErrorCode Apply(uint16_t key,
|
51
51
|
uint32_t value);
|
52
52
|
uint32_t header_table_size() const { return header_table_size_; }
|
53
53
|
uint32_t max_concurrent_streams() const { return max_concurrent_streams_; }
|