grpc 1.64.3 → 1.65.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 +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -29,7 +29,6 @@
|
|
29
29
|
|
30
30
|
#include "src/core/channelz/channelz.h"
|
31
31
|
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
32
|
-
#include "src/core/lib/channel/call_tracer.h"
|
33
32
|
#include "src/core/lib/channel/channel_args.h"
|
34
33
|
#include "src/core/lib/debug/trace.h"
|
35
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -39,11 +38,7 @@
|
|
39
38
|
#include "src/core/lib/iomgr/endpoint.h"
|
40
39
|
#include "src/core/lib/iomgr/error.h"
|
41
40
|
#include "src/core/lib/transport/transport.h"
|
42
|
-
|
43
|
-
extern grpc_core::TraceFlag grpc_keepalive_trace;
|
44
|
-
extern grpc_core::TraceFlag grpc_trace_http2_stream_state;
|
45
|
-
extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount;
|
46
|
-
extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser;
|
41
|
+
#include "src/core/telemetry/call_tracer.h"
|
47
42
|
|
48
43
|
/// Creates a CHTTP2 Transport. This takes ownership of a \a resource_user ref
|
49
44
|
/// from the caller; if the caller still needs the resource_user after creating
|
@@ -59,9 +54,14 @@ grpc_chttp2_transport_get_socket_node(grpc_core::Transport* transport);
|
|
59
54
|
/// leftover bytes previously read from the endpoint (e.g., by handshakers).
|
60
55
|
/// If non-null, \a notify_on_receive_settings will be scheduled when
|
61
56
|
/// HTTP/2 settings are received from the peer.
|
57
|
+
/// If non-null, the endpoint will be removed from
|
58
|
+
/// interested_parties_until_recv_settings before
|
59
|
+
/// notify_on_receive_settings is invoked.
|
62
60
|
void grpc_chttp2_transport_start_reading(
|
63
61
|
grpc_core::Transport* transport, grpc_slice_buffer* read_buffer,
|
64
|
-
grpc_closure* notify_on_receive_settings,
|
62
|
+
grpc_closure* notify_on_receive_settings,
|
63
|
+
grpc_pollset_set* interested_parties_until_recv_settings,
|
64
|
+
grpc_closure* notify_on_close);
|
65
65
|
|
66
66
|
namespace grpc_core {
|
67
67
|
typedef void (*TestOnlyGlobalHttp2TransportInitCallback)();
|
@@ -83,7 +83,7 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
|
|
83
83
|
|
84
84
|
typedef void (*WriteTimestampsCallback)(void*, Timestamps*,
|
85
85
|
grpc_error_handle error);
|
86
|
-
typedef void* (*CopyContextFn)(
|
86
|
+
typedef void* (*CopyContextFn)(Arena*);
|
87
87
|
|
88
88
|
void GrpcHttp2SetWriteTimestampsCallback(WriteTimestampsCallback fn);
|
89
89
|
void GrpcHttp2SetCopyContextFn(CopyContextFn fn);
|
@@ -37,10 +37,8 @@
|
|
37
37
|
|
38
38
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
39
39
|
#include "src/core/lib/experiments/experiments.h"
|
40
|
-
#include "src/core/lib/gpr/useful.h"
|
41
40
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
42
|
-
|
43
|
-
grpc_core::TraceFlag grpc_flowctl_trace(false, "flowctl");
|
41
|
+
#include "src/core/util/useful.h"
|
44
42
|
|
45
43
|
namespace grpc_core {
|
46
44
|
namespace chttp2 {
|
@@ -235,7 +233,7 @@ void TransportFlowControl::UpdateSetting(
|
|
235
233
|
FlowControlAction& (FlowControlAction::*set)(FlowControlAction::Urgency,
|
236
234
|
uint32_t)) {
|
237
235
|
if (new_desired_value != *desired_value) {
|
238
|
-
if (
|
236
|
+
if (GRPC_TRACE_FLAG_ENABLED(flowctl)) {
|
239
237
|
gpr_log(GPR_INFO, "[flowctl] UPDATE SETTING %s from %" PRId64 " to %d",
|
240
238
|
std::string(name).c_str(), *desired_value, new_desired_value);
|
241
239
|
}
|
@@ -37,9 +37,6 @@
|
|
37
37
|
#include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
|
38
38
|
#include "src/core/lib/debug/trace.h"
|
39
39
|
|
40
|
-
extern grpc_core::TraceFlag grpc_keepalive_trace;
|
41
|
-
extern grpc_core::TraceFlag grpc_http_trace;
|
42
|
-
|
43
40
|
grpc_slice grpc_chttp2_ping_create(uint8_t ack, uint64_t opaque_8bytes) {
|
44
41
|
grpc_slice slice = GRPC_SLICE_MALLOC(9 + 8);
|
45
42
|
uint8_t* p = GRPC_SLICE_START_PTR(slice);
|
@@ -96,7 +93,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
|
|
96
93
|
if (p->byte == 8) {
|
97
94
|
CHECK(is_last);
|
98
95
|
if (p->is_ack) {
|
99
|
-
if (
|
96
|
+
if (GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
|
100
97
|
gpr_log(GPR_INFO, "%s[%p]: received ping ack %" PRIx64,
|
101
98
|
t->is_client ? "CLIENT" : "SERVER", t, p->opaque_8bytes);
|
102
99
|
}
|
@@ -105,7 +102,8 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
|
|
105
102
|
if (!t->is_client) {
|
106
103
|
const bool transport_idle =
|
107
104
|
t->keepalive_permit_without_calls == 0 && t->stream_map.empty();
|
108
|
-
if (
|
105
|
+
if (GRPC_TRACE_FLAG_ENABLED(http_keepalive) ||
|
106
|
+
GRPC_TRACE_FLAG_ENABLED(http)) {
|
109
107
|
gpr_log(GPR_INFO, "SERVER[%p]: received ping %" PRIx64 ": %s", t,
|
110
108
|
p->opaque_8bytes,
|
111
109
|
t->ping_abuse_policy.GetDebugString(transport_idle).c_str());
|
@@ -113,7 +111,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
|
|
113
111
|
if (t->ping_abuse_policy.ReceivedOnePing(transport_idle)) {
|
114
112
|
grpc_chttp2_exceeded_ping_strikes(t);
|
115
113
|
}
|
116
|
-
} else if (
|
114
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
|
117
115
|
gpr_log(GPR_INFO, "CLIENT[%p]: received ping %" PRIx64, t,
|
118
116
|
p->opaque_8bytes);
|
119
117
|
}
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
#include <grpc/support/port_platform.h>
|
32
32
|
|
33
|
-
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
34
33
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
35
34
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
36
35
|
#include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
|
@@ -111,7 +110,7 @@ grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser,
|
|
111
110
|
((static_cast<uint32_t>(p->reason_bytes[1])) << 16) |
|
112
111
|
((static_cast<uint32_t>(p->reason_bytes[2])) << 8) |
|
113
112
|
((static_cast<uint32_t>(p->reason_bytes[3])));
|
114
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
113
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
115
114
|
gpr_log(GPR_INFO,
|
116
115
|
"[chttp2 transport=%p stream=%p] received RST_STREAM(reason=%d)",
|
117
116
|
t, s, reason);
|
@@ -33,14 +33,13 @@
|
|
33
33
|
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
34
34
|
#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
|
35
35
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
36
|
-
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
37
36
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
38
37
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
39
38
|
#include "src/core/lib/debug/trace.h"
|
40
|
-
#include "src/core/lib/gpr/useful.h"
|
41
39
|
#include "src/core/lib/gprpp/debug_location.h"
|
42
40
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
43
41
|
#include "src/core/lib/slice/slice.h"
|
42
|
+
#include "src/core/util/useful.h"
|
44
43
|
|
45
44
|
static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) {
|
46
45
|
*out++ = static_cast<uint8_t>(length >> 16);
|
@@ -109,6 +108,11 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
|
|
109
108
|
grpc_chttp2_initiate_write(t,
|
110
109
|
GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK);
|
111
110
|
if (t->notify_on_receive_settings != nullptr) {
|
111
|
+
if (t->interested_parties_until_recv_settings != nullptr) {
|
112
|
+
grpc_endpoint_delete_from_pollset_set(
|
113
|
+
t->ep, t->interested_parties_until_recv_settings);
|
114
|
+
t->interested_parties_until_recv_settings = nullptr;
|
115
|
+
}
|
112
116
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION,
|
113
117
|
t->notify_on_receive_settings,
|
114
118
|
absl::OkStatus());
|
@@ -166,8 +170,8 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
|
|
166
170
|
t->initial_window_update +=
|
167
171
|
static_cast<int64_t>(parser->value) -
|
168
172
|
parser->incoming_settings->initial_window_size();
|
169
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
170
|
-
GRPC_TRACE_FLAG_ENABLED(
|
173
|
+
if (GRPC_TRACE_FLAG_ENABLED(http) ||
|
174
|
+
GRPC_TRACE_FLAG_ENABLED(flowctl)) {
|
171
175
|
gpr_log(GPR_INFO, "%p[%s] adding %d for initial_window change", t,
|
172
176
|
t->is_client ? "cli" : "svr",
|
173
177
|
static_cast<int>(t->initial_window_update));
|
@@ -183,7 +187,7 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
|
|
183
187
|
"invalid value %u passed for %s", parser->value,
|
184
188
|
grpc_core::Http2Settings::WireIdToName(parser->id).c_str()));
|
185
189
|
}
|
186
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
190
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
187
191
|
gpr_log(GPR_INFO, "CHTTP2:%s:%s: got setting %s = %d",
|
188
192
|
t->is_client ? "CLI" : "SVR",
|
189
193
|
std::string(t->peer_string.as_string_view()).c_str(),
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
|
32
32
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
33
33
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
|
34
|
-
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
35
34
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
36
35
|
#include "src/core/ext/transport/chttp2/transport/varint.h"
|
37
36
|
#include "src/core/lib/debug/trace.h"
|
@@ -118,7 +117,7 @@ void HPackCompressor::SetMaxUsableSize(uint32_t max_table_size) {
|
|
118
117
|
void HPackCompressor::SetMaxTableSize(uint32_t max_table_size) {
|
119
118
|
if (table_.SetMaxSize(std::min(max_usable_size_, max_table_size))) {
|
120
119
|
advertise_table_size_change_ = true;
|
121
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
120
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
122
121
|
gpr_log(GPR_INFO, "set max table size from encoder to %d",
|
123
122
|
max_table_size);
|
124
123
|
}
|
@@ -378,7 +377,8 @@ void Compressor<HttpSchemeMetadata, HttpSchemeCompressor>::EncodeWith(
|
|
378
377
|
encoder->EmitIndexed(7); // :scheme: https
|
379
378
|
break;
|
380
379
|
case HttpSchemeMetadata::ValueType::kInvalid:
|
381
|
-
|
380
|
+
LOG(ERROR) << "Not encoding bad http scheme";
|
381
|
+
encoder->NoteEncodingError();
|
382
382
|
break;
|
383
383
|
}
|
384
384
|
}
|
@@ -435,7 +435,8 @@ void Compressor<HttpMethodMetadata, HttpMethodCompressor>::EncodeWith(
|
|
435
435
|
Slice::FromStaticString(":method"), Slice::FromStaticString("PUT"));
|
436
436
|
break;
|
437
437
|
case HttpMethodMetadata::ValueType::kInvalid:
|
438
|
-
|
438
|
+
LOG(ERROR) << "Not encoding bad http method";
|
439
|
+
encoder->NoteEncodingError();
|
439
440
|
break;
|
440
441
|
}
|
441
442
|
}
|
@@ -82,10 +82,14 @@ class Encoder {
|
|
82
82
|
const Slice& slice, uint32_t* index,
|
83
83
|
size_t max_compression_size);
|
84
84
|
|
85
|
+
void NoteEncodingError() { saw_encoding_errors_ = true; }
|
86
|
+
bool saw_encoding_errors() const { return saw_encoding_errors_; }
|
87
|
+
|
85
88
|
HPackEncoderTable& hpack_table();
|
86
89
|
|
87
90
|
private:
|
88
91
|
const bool use_true_binary_metadata_;
|
92
|
+
bool saw_encoding_errors_ = false;
|
89
93
|
HPackCompressor* const compressor_;
|
90
94
|
SliceBuffer& output_;
|
91
95
|
};
|
@@ -207,6 +211,7 @@ class Compressor<
|
|
207
211
|
gpr_log(GPR_ERROR, "%s",
|
208
212
|
absl::StrCat("Not encoding bad ", MetadataTrait::key(), " header")
|
209
213
|
.c_str());
|
214
|
+
encoder->NoteEncodingError();
|
210
215
|
return;
|
211
216
|
}
|
212
217
|
Slice encoded(MetadataTrait::Encode(known_value));
|
@@ -354,19 +359,21 @@ class HPackCompressor {
|
|
354
359
|
};
|
355
360
|
|
356
361
|
template <typename HeaderSet>
|
357
|
-
|
362
|
+
bool EncodeHeaders(const EncodeHeaderOptions& options,
|
358
363
|
const HeaderSet& headers, grpc_slice_buffer* output) {
|
359
364
|
SliceBuffer raw;
|
360
365
|
hpack_encoder_detail::Encoder encoder(
|
361
366
|
this, options.use_true_binary_metadata, raw);
|
362
367
|
headers.Encode(&encoder);
|
363
368
|
Frame(options, raw, output);
|
369
|
+
return !encoder.saw_encoding_errors();
|
364
370
|
}
|
365
371
|
|
366
372
|
template <typename HeaderSet>
|
367
|
-
|
373
|
+
bool EncodeRawHeaders(const HeaderSet& headers, SliceBuffer& output) {
|
368
374
|
hpack_encoder_detail::Encoder encoder(this, true, output);
|
369
375
|
headers.Encode(&encoder);
|
376
|
+
return !encoder.saw_encoding_errors();
|
370
377
|
}
|
371
378
|
|
372
379
|
private:
|
@@ -44,9 +44,6 @@
|
|
44
44
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
45
45
|
#include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
|
46
46
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
|
47
|
-
#include "src/core/lib/channel/call_tracer.h"
|
48
|
-
#include "src/core/lib/debug/stats.h"
|
49
|
-
#include "src/core/lib/debug/stats_data.h"
|
50
47
|
#include "src/core/lib/debug/trace.h"
|
51
48
|
#include "src/core/lib/gprpp/match.h"
|
52
49
|
#include "src/core/lib/slice/slice.h"
|
@@ -54,13 +51,14 @@
|
|
54
51
|
#include "src/core/lib/surface/validate_metadata.h"
|
55
52
|
#include "src/core/lib/transport/metadata_info.h"
|
56
53
|
#include "src/core/lib/transport/parsed_metadata.h"
|
54
|
+
#include "src/core/telemetry/call_tracer.h"
|
55
|
+
#include "src/core/telemetry/stats.h"
|
56
|
+
#include "src/core/telemetry/stats_data.h"
|
57
57
|
|
58
58
|
// IWYU pragma: no_include <type_traits>
|
59
59
|
|
60
60
|
namespace grpc_core {
|
61
61
|
|
62
|
-
TraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
|
63
|
-
|
64
62
|
namespace {
|
65
63
|
// The alphabet used for base64 encoding binary metadata.
|
66
64
|
constexpr char kBase64Alphabet[] =
|
@@ -92,14 +90,12 @@ constexpr Base64InverseTable kBase64InverseTable;
|
|
92
90
|
class HPackParser::Input {
|
93
91
|
public:
|
94
92
|
Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
|
95
|
-
const uint8_t* end, absl::BitGenRef bitsrc,
|
96
|
-
HpackParseResult& frame_error, HpackParseResult& field_error)
|
93
|
+
const uint8_t* end, absl::BitGenRef bitsrc, HpackParseResult& error)
|
97
94
|
: current_slice_refcount_(current_slice_refcount),
|
98
95
|
begin_(begin),
|
99
96
|
end_(end),
|
100
97
|
frontier_(begin),
|
101
|
-
|
102
|
-
field_error_(field_error),
|
98
|
+
error_(error),
|
103
99
|
bitsrc_(bitsrc) {}
|
104
100
|
|
105
101
|
// If input is backed by a slice, retrieve its refcount. If not, return
|
@@ -218,18 +214,14 @@ class HPackParser::Input {
|
|
218
214
|
|
219
215
|
// Check if we saw an EOF
|
220
216
|
bool eof_error() const {
|
221
|
-
return min_progress_size_ != 0 ||
|
222
|
-
}
|
223
|
-
|
224
|
-
// Reset the field error to be ok
|
225
|
-
void ClearFieldError() {
|
226
|
-
if (field_error_.ok()) return;
|
227
|
-
field_error_ = HpackParseResult();
|
217
|
+
return min_progress_size_ != 0 || error_.connection_error();
|
228
218
|
}
|
229
219
|
|
230
220
|
// Minimum number of bytes to unstuck the current parse
|
231
221
|
size_t min_progress_size() const { return min_progress_size_; }
|
232
222
|
|
223
|
+
bool has_error() const { return !error_.ok(); }
|
224
|
+
|
233
225
|
// Set the current error - tweaks the error to include a stream id so that
|
234
226
|
// chttp2 does not close the connection.
|
235
227
|
// Intended for errors that are specific to a stream and recoverable.
|
@@ -253,7 +245,10 @@ class HPackParser::Input {
|
|
253
245
|
// read prior to being able to get further in this parse.
|
254
246
|
void UnexpectedEOF(size_t min_progress_size) {
|
255
247
|
CHECK_GT(min_progress_size, 0u);
|
256
|
-
if (
|
248
|
+
if (min_progress_size_ != 0 || error_.connection_error()) {
|
249
|
+
DCHECK(eof_error());
|
250
|
+
return;
|
251
|
+
}
|
257
252
|
// Set min progress size, taking into account bytes parsed already but not
|
258
253
|
// consumed.
|
259
254
|
min_progress_size_ = min_progress_size + (begin_ - frontier_);
|
@@ -306,18 +301,13 @@ class HPackParser::Input {
|
|
306
301
|
// Do not use this directly, instead use SetErrorAndContinueParsing or
|
307
302
|
// SetErrorAndStopParsing.
|
308
303
|
void SetError(HpackParseResult error) {
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
void SetErrorFor(HpackParseResult& error, HpackParseResult new_error) {
|
314
|
-
if (!error.ok() || min_progress_size_ > 0) {
|
315
|
-
if (new_error.connection_error() && !error.connection_error()) {
|
316
|
-
error = std::move(new_error); // connection errors dominate
|
304
|
+
if (!error_.ok() || min_progress_size_ > 0) {
|
305
|
+
if (error.connection_error() && !error_.connection_error()) {
|
306
|
+
error_ = std::move(error); // connection errors dominate
|
317
307
|
}
|
318
308
|
return;
|
319
309
|
}
|
320
|
-
|
310
|
+
error_ = std::move(error);
|
321
311
|
}
|
322
312
|
|
323
313
|
// Refcount if we are backed by a slice
|
@@ -329,8 +319,7 @@ class HPackParser::Input {
|
|
329
319
|
// Frontier denotes the first byte past successfully processed input
|
330
320
|
const uint8_t* frontier_;
|
331
321
|
// Current error
|
332
|
-
HpackParseResult&
|
333
|
-
HpackParseResult& field_error_;
|
322
|
+
HpackParseResult& error_;
|
334
323
|
// If the error was EOF, we flag it here by noting how many more bytes would
|
335
324
|
// be needed to make progress
|
336
325
|
size_t min_progress_size_ = 0;
|
@@ -607,7 +596,6 @@ class HPackParser::Parser {
|
|
607
596
|
bool ParseTop() {
|
608
597
|
DCHECK(state_.parse_state == ParseState::kTop);
|
609
598
|
auto cur = *input_->Next();
|
610
|
-
input_->ClearFieldError();
|
611
599
|
switch (cur >> 4) {
|
612
600
|
// Literal header not indexed - First byte format: 0000xxxx
|
613
601
|
// Literal header never indexed - First byte format: 0001xxxx
|
@@ -713,7 +701,7 @@ class HPackParser::Parser {
|
|
713
701
|
break;
|
714
702
|
}
|
715
703
|
gpr_log(
|
716
|
-
|
704
|
+
GPR_DEBUG, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
|
717
705
|
log_info_.is_client ? "CLI" : "SVR", memento.md.DebugString().c_str(),
|
718
706
|
memento.parse_status == nullptr
|
719
707
|
? ""
|
@@ -743,7 +731,7 @@ class HPackParser::Parser {
|
|
743
731
|
|
744
732
|
bool FinishHeaderAndAddToTable(HPackTable::Memento md) {
|
745
733
|
// Log if desired
|
746
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
734
|
+
if (GRPC_TRACE_FLAG_ENABLED(chttp2_hpack_parser)) {
|
747
735
|
LogHeader(md);
|
748
736
|
}
|
749
737
|
// Emit whilst we own the metadata.
|
@@ -768,7 +756,7 @@ class HPackParser::Parser {
|
|
768
756
|
|
769
757
|
void FinishHeaderOmitFromTable(const HPackTable::Memento& md) {
|
770
758
|
// Log if desired
|
771
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
759
|
+
if (GRPC_TRACE_FLAG_ENABLED(chttp2_hpack_parser)) {
|
772
760
|
LogHeader(md);
|
773
761
|
}
|
774
762
|
EmitHeader(md);
|
@@ -962,10 +950,11 @@ class HPackParser::Parser {
|
|
962
950
|
state_.string_length)
|
963
951
|
: String::Parse(input_, state_.is_string_huff_compressed,
|
964
952
|
state_.string_length);
|
953
|
+
HpackParseResult& status = state_.frame_error;
|
965
954
|
absl::string_view key_string;
|
966
955
|
if (auto* s = absl::get_if<Slice>(&state_.key)) {
|
967
956
|
key_string = s->as_string_view();
|
968
|
-
if (
|
957
|
+
if (status.ok()) {
|
969
958
|
auto r = ValidateKey(key_string);
|
970
959
|
if (r != ValidateMetadataResult::kOk) {
|
971
960
|
input_->SetErrorAndContinueParsing(
|
@@ -975,7 +964,7 @@ class HPackParser::Parser {
|
|
975
964
|
} else {
|
976
965
|
const auto* memento = absl::get<const HPackTable::Memento*>(state_.key);
|
977
966
|
key_string = memento->md.key();
|
978
|
-
if (
|
967
|
+
if (status.ok() && memento->parse_status != nullptr) {
|
979
968
|
input_->SetErrorAndContinueParsing(*memento->parse_status);
|
980
969
|
}
|
981
970
|
}
|
@@ -1002,16 +991,16 @@ class HPackParser::Parser {
|
|
1002
991
|
key_string.size() + value.wire_size + hpack_constants::kEntryOverhead;
|
1003
992
|
auto md = grpc_metadata_batch::Parse(
|
1004
993
|
key_string, std::move(value_slice), state_.add_to_table, transport_size,
|
1005
|
-
[key_string, this](absl::string_view message, const Slice&) {
|
1006
|
-
if (!
|
994
|
+
[key_string, &status, this](absl::string_view message, const Slice&) {
|
995
|
+
if (!status.ok()) return;
|
1007
996
|
input_->SetErrorAndContinueParsing(
|
1008
997
|
HpackParseResult::MetadataParseError(key_string));
|
1009
998
|
gpr_log(GPR_ERROR, "Error parsing '%s' metadata: %s",
|
1010
999
|
std::string(key_string).c_str(),
|
1011
1000
|
std::string(message).c_str());
|
1012
1001
|
});
|
1013
|
-
HPackTable::Memento memento{
|
1014
|
-
|
1002
|
+
HPackTable::Memento memento{std::move(md),
|
1003
|
+
status.PersistentStreamErrorOrNullptr()};
|
1015
1004
|
input_->UpdateFrontier();
|
1016
1005
|
state_.parse_state = ParseState::kTop;
|
1017
1006
|
if (state_.add_to_table) {
|
@@ -1124,13 +1113,13 @@ grpc_error_handle HPackParser::Parse(
|
|
1124
1113
|
std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
|
1125
1114
|
return ParseInput(
|
1126
1115
|
Input(nullptr, buffer.data(), buffer.data() + buffer.size(), bitsrc,
|
1127
|
-
state_.frame_error
|
1116
|
+
state_.frame_error),
|
1128
1117
|
is_last, call_tracer);
|
1129
1118
|
}
|
1130
|
-
return ParseInput(
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1119
|
+
return ParseInput(
|
1120
|
+
Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
|
1121
|
+
GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error),
|
1122
|
+
is_last, call_tracer);
|
1134
1123
|
}
|
1135
1124
|
|
1136
1125
|
grpc_error_handle HPackParser::ParseInput(
|
@@ -40,11 +40,11 @@
|
|
40
40
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
|
41
41
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
42
42
|
#include "src/core/lib/backoff/random_early_detection.h"
|
43
|
-
#include "src/core/lib/channel/call_tracer.h"
|
44
43
|
#include "src/core/lib/iomgr/error.h"
|
45
44
|
#include "src/core/lib/slice/slice.h"
|
46
45
|
#include "src/core/lib/slice/slice_refcount.h"
|
47
46
|
#include "src/core/lib/transport/metadata_batch.h"
|
47
|
+
#include "src/core/telemetry/call_tracer.h"
|
48
48
|
|
49
49
|
// IWYU pragma: no_include <type_traits>
|
50
50
|
|
@@ -235,8 +235,6 @@ class HPackParser {
|
|
235
235
|
HPackTable hpack_table;
|
236
236
|
// Error so far for this frame (set by class Input)
|
237
237
|
HpackParseResult frame_error;
|
238
|
-
// Error so far for this field (set by class Input)
|
239
|
-
HpackParseResult field_error;
|
240
238
|
// Length of frame so far.
|
241
239
|
uint32_t frame_length = 0;
|
242
240
|
// Length of the string being parsed
|
@@ -26,16 +26,15 @@
|
|
26
26
|
#include <utility>
|
27
27
|
|
28
28
|
#include "absl/log/check.h"
|
29
|
+
#include "absl/log/log.h"
|
29
30
|
#include "absl/status/status.h"
|
30
31
|
#include "absl/strings/str_cat.h"
|
31
32
|
#include "absl/strings/string_view.h"
|
32
33
|
|
33
|
-
#include <grpc/support/log.h>
|
34
34
|
#include <grpc/support/port_platform.h>
|
35
35
|
|
36
36
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
37
37
|
#include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
|
38
|
-
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
39
38
|
#include "src/core/lib/debug/trace.h"
|
40
39
|
#include "src/core/lib/slice/slice.h"
|
41
40
|
|
@@ -99,9 +98,7 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) {
|
|
99
98
|
if (max_bytes_ == max_bytes) {
|
100
99
|
return;
|
101
100
|
}
|
102
|
-
|
103
|
-
gpr_log(GPR_INFO, "Update hpack parser max size to %d", max_bytes);
|
104
|
-
}
|
101
|
+
GRPC_TRACE_LOG(http, INFO) << "Update hpack parser max size to " << max_bytes;
|
105
102
|
while (mem_used_ > max_bytes) {
|
106
103
|
EvictOne();
|
107
104
|
}
|
@@ -111,9 +108,7 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) {
|
|
111
108
|
bool HPackTable::SetCurrentTableSize(uint32_t bytes) {
|
112
109
|
if (current_table_bytes_ == bytes) return true;
|
113
110
|
if (bytes > max_bytes_) return false;
|
114
|
-
|
115
|
-
gpr_log(GPR_INFO, "Update hpack parser table size to %d", bytes);
|
116
|
-
}
|
111
|
+
GRPC_TRACE_LOG(http, INFO) << "Update hpack parser table size to " << bytes;
|
117
112
|
while (mem_used_ > bytes) {
|
118
113
|
EvictOne();
|
119
114
|
}
|
@@ -25,8 +25,8 @@
|
|
25
25
|
#include <grpc/support/port_platform.h>
|
26
26
|
|
27
27
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
28
|
-
#include "src/core/lib/gpr/useful.h"
|
29
28
|
#include "src/core/lib/transport/http2_errors.h"
|
29
|
+
#include "src/core/util/useful.h"
|
30
30
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
@@ -28,8 +28,8 @@
|
|
28
28
|
#include <grpc/support/port_platform.h>
|
29
29
|
|
30
30
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
31
|
-
#include "src/core/lib/gpr/useful.h"
|
32
31
|
#include "src/core/lib/transport/http2_errors.h"
|
32
|
+
#include "src/core/util/useful.h"
|
33
33
|
|
34
34
|
namespace grpc_core {
|
35
35
|
|