grpc 1.83.0 → 1.84.0.pre1
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 +21 -17
- data/include/grpc/credentials.h +10 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +9 -0
- data/src/core/call/call_filters.h +4 -2
- data/src/core/call/client_call.cc +20 -8
- data/src/core/call/client_call.h +4 -0
- data/src/core/call/interception_chain.cc +2 -0
- data/src/core/call/interception_chain.h +14 -1
- data/src/core/call/metadata.cc +1 -3
- data/src/core/call/metadata_batch.h +13 -5
- data/src/core/call/server_call.cc +31 -14
- data/src/core/call/server_call.h +4 -0
- data/src/core/channelz/text_encode.cc +9 -4
- data/src/core/channelz/v2tov1/convert.cc +2 -2
- data/src/core/client_channel/backup_poller.cc +1 -2
- data/src/core/client_channel/client_channel.cc +6 -33
- data/src/core/client_channel/client_channel_filter.cc +22 -55
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_service_config.cc +3 -19
- data/src/core/client_channel/direct_channel.cc +7 -1
- data/src/core/client_channel/direct_channel.h +2 -2
- data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
- data/src/core/client_channel/subchannel.cc +310 -1058
- data/src/core/client_channel/subchannel.h +44 -329
- data/src/core/client_channel/subchannel_metrics.cc +48 -0
- data/src/core/client_channel/subchannel_metrics.h +60 -0
- data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
- data/src/core/credentials/call/json_util.h +1 -0
- data/src/core/credentials/call/jwt/json_token.cc +10 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
- data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
- data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
- data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
- data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
- data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
- data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
- data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
- data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
- data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +25 -32
- data/src/core/ext/filters/http/message_compress/compression_filter.h +0 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
- data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +80 -70
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +55 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
- data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +13 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
- data/src/core/filter/auth/server_auth_filter.cc +2 -3
- data/src/core/filter/composite/composite_filter.cc +45 -33
- data/src/core/filter/composite/composite_filter.h +5 -4
- data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
- data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
- data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
- data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
- data/src/core/filter/filter_args.h +13 -2
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
- data/src/core/handshaker/security/security_handshaker.cc +9 -6
- data/src/core/lib/channel/channel_stack.cc +3 -0
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
- data/src/core/lib/channel/promise_based_filter.cc +132 -20
- data/src/core/lib/channel/promise_based_filter.h +42 -12
- data/src/core/lib/compression/compression_internal.cc +4 -5
- data/src/core/lib/compression/message_compress.cc +132 -97
- data/src/core/lib/compression/message_compress.h +24 -0
- data/src/core/lib/debug/trace_flags.cc +8 -0
- data/src/core/lib/debug/trace_flags.h +3 -0
- data/src/core/lib/event_engine/ares_resolver.cc +54 -50
- data/src/core/lib/event_engine/ares_resolver.h +3 -2
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
- data/src/core/lib/experiments/experiments.cc +81 -102
- data/src/core/lib/experiments/experiments.h +57 -56
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
- data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/systemd_utils.cc +0 -1
- data/src/core/lib/iomgr/tcp_client.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +23 -15
- data/src/core/lib/iomgr/tcp_server.h +1 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.cc +5 -10
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/vsock.h +3 -1
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
- data/src/core/lib/security/authorization/rbac_policy.h +21 -3
- data/src/core/lib/surface/call.cc +3 -9
- data/src/core/lib/surface/call_utils.h +113 -0
- data/src/core/lib/surface/channel_create.cc +1 -1
- data/src/core/lib/surface/channel_create.h +0 -2
- data/src/core/lib/surface/channel_init.cc +77 -38
- data/src/core/lib/surface/channel_init.h +30 -16
- data/src/core/lib/surface/filter_stack_call.cc +5 -10
- data/src/core/lib/surface/init.cc +13 -27
- data/src/core/lib/surface/legacy_channel.cc +3 -1
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -27
- data/src/core/lib/transport/error_utils.h +0 -16
- data/src/core/lib/transport/transport.h +7 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
- data/src/core/load_balancing/rls/rls.cc +28 -11
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
- data/src/core/load_balancing/xds/cds.cc +3 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
- data/src/core/mitigation_engine/mitigation.h +14 -5
- data/src/core/mitigation_engine/mitigation_engine.h +7 -3
- data/src/core/mitigation_engine/mitigation_provider.h +2 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
- data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
- data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +35 -9
- data/src/core/server/server.cc +2 -6
- data/src/core/server/server_config_selector.h +18 -3
- data/src/core/server/server_config_selector_filter.cc +178 -91
- data/src/core/server/server_config_selector_filter.h +58 -3
- data/src/core/server/xds_server_config_fetcher.cc +196 -129
- data/src/core/server/xds_server_config_fetcher.h +49 -0
- data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
- data/src/core/telemetry/histogram.h +94 -14
- data/src/core/telemetry/instrument.cc +179 -74
- data/src/core/telemetry/instrument.h +78 -30
- data/src/core/telemetry/metrics.h +5 -0
- data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
- data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
- data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
- data/src/core/tsi/ssl_telemetry_utils.h +12 -2
- data/src/core/tsi/ssl_transport_security.cc +238 -80
- data/src/core/tsi/ssl_transport_security.h +63 -33
- data/src/core/tsi/tls_telemetry.cc +31 -0
- data/src/core/tsi/tls_telemetry.h +47 -0
- data/src/core/tsi/transport_security.cc +2 -2
- data/src/core/tsi/transport_security.h +1 -1
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
- data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
- data/src/core/util/http_client/httpcli.cc +16 -53
- data/src/core/util/http_client/httpcli.h +0 -7
- data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +3 -9
- data/src/core/util/load_file.h +3 -4
- data/src/core/util/matchers.h +8 -0
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/status_helper.cc +0 -20
- data/src/core/util/status_helper.h +3 -14
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
- data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
- data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
- data/src/core/xds/grpc/xds_client_grpc.h +0 -4
- data/src/core/xds/grpc/xds_cluster.h +1 -0
- data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
- data/src/core/xds/grpc/xds_common_types.cc +0 -91
- data/src/core/xds/grpc/xds_common_types.h +1 -47
- data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
- data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
- data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
- data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
- data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
- data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
- data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
- data/src/core/xds/grpc/xds_http_filter.cc +2 -1
- data/src/core/xds/grpc/xds_http_filter.h +6 -5
- data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
- data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
- data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
- data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
- data/src/core/xds/grpc/xds_listener.cc +2 -0
- data/src/core/xds/grpc/xds_listener.h +5 -0
- data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
- data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
- data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
- data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
- data/src/core/xds/grpc/xds_route_config.cc +2 -0
- data/src/core/xds/grpc/xds_route_config.h +3 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
- data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
- data/src/core/xds/grpc/xds_routing.cc +116 -69
- data/src/core/xds/grpc/xds_routing.h +19 -8
- data/src/core/xds/grpc/xds_tls_context.cc +117 -0
- data/src/core/xds/grpc/xds_tls_context.h +76 -0
- data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
- data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
- data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_call.c +26 -15
- data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +5 -4
- data/src/ruby/spec/call_spec.rb +14 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
- metadata +50 -35
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
- data/src/core/lib/iomgr/resolve_address.cc +0 -59
- data/src/core/lib/iomgr/resolve_address.h +0 -125
- data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
- data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
- data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
- data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
- data/src/core/util/json/json_util.cc +0 -101
- data/src/core/util/json/json_util.h +0 -163
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
#include <algorithm>
|
|
21
21
|
#include <memory>
|
|
22
|
+
#include <optional>
|
|
22
23
|
#include <string>
|
|
23
24
|
#include <utility>
|
|
24
25
|
#include <vector>
|
|
@@ -74,10 +75,8 @@ absl::Status StatusFromMetadata(const ServerMetadata& md) {
|
|
|
74
75
|
return absl::OkStatus();
|
|
75
76
|
}
|
|
76
77
|
const auto* message = md.get_pointer(GrpcMessageMetadata());
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
message == nullptr ? "" : message->as_string_view()),
|
|
80
|
-
StatusIntProperty::kRpcStatus, status_code);
|
|
78
|
+
return absl::Status(static_cast<absl::StatusCode>(status_code),
|
|
79
|
+
message == nullptr ? "" : message->as_string_view());
|
|
81
80
|
}
|
|
82
81
|
} // namespace
|
|
83
82
|
|
|
@@ -831,7 +830,8 @@ void BaseCallData::ReceiveMessage::OnComplete(absl::Status status) {
|
|
|
831
830
|
}
|
|
832
831
|
|
|
833
832
|
void BaseCallData::ReceiveMessage::Done(const ServerMetadata& metadata,
|
|
834
|
-
Flusher* flusher
|
|
833
|
+
Flusher* flusher,
|
|
834
|
+
bool discard_buffered_message) {
|
|
835
835
|
GRPC_TRACE_LOG(channel, INFO)
|
|
836
836
|
<< base_->LogTag() << " ReceiveMessage.Done st=" << StateString(state_)
|
|
837
837
|
<< " md=" << metadata.DebugString();
|
|
@@ -849,16 +849,36 @@ void BaseCallData::ReceiveMessage::Done(const ServerMetadata& metadata,
|
|
|
849
849
|
state_ = State::kCancelledWhilstForwardingNoPipe;
|
|
850
850
|
break;
|
|
851
851
|
case State::kCompletedWhileBatchCompleted:
|
|
852
|
-
case State::kBatchCompleted:
|
|
853
|
-
|
|
854
|
-
|
|
852
|
+
case State::kBatchCompleted: {
|
|
853
|
+
if (IsRecvMessageFilterBypassFixEnabled() && discard_buffered_message) {
|
|
854
|
+
state_ = State::kBatchCompletedButCancelled;
|
|
855
|
+
// Store the cancellation status so that WakeInsideCombiner() can
|
|
856
|
+
// propagate it to the application's message ready callback instead of
|
|
857
|
+
// defaulting to OK.
|
|
858
|
+
completed_status_ = StatusFromMetadata(metadata);
|
|
859
|
+
// Drop the buffered message here so it cannot bypass the trailing
|
|
860
|
+
// metadata; WakeInsideCombiner() just fires the completion.
|
|
861
|
+
if (intercepted_slice_buffer_ != nullptr) {
|
|
862
|
+
*intercepted_slice_buffer_ = std::nullopt;
|
|
863
|
+
}
|
|
864
|
+
} else {
|
|
865
|
+
state_ = State::kCompletedWhileBatchCompleted;
|
|
866
|
+
}
|
|
867
|
+
} break;
|
|
855
868
|
case State::kCompletedWhilePulledFromPipe:
|
|
856
869
|
case State::kCompletedWhilePushedToPipe:
|
|
857
870
|
case State::kPulledFromPipe:
|
|
858
871
|
case State::kPushedToPipe: {
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
872
|
+
// Discard the buffered message only when the call is being torn down
|
|
873
|
+
// (short-circuit / cancellation / server-initiated non-OK);
|
|
874
|
+
// With the feature disabled, fall back to keying the discard off a
|
|
875
|
+
// non-OK trailing status.
|
|
876
|
+
bool discard =
|
|
877
|
+
IsRecvMessageFilterBypassFixEnabled()
|
|
878
|
+
? discard_buffered_message
|
|
879
|
+
: metadata.get(GrpcStatusMetadata())
|
|
880
|
+
.value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK;
|
|
881
|
+
if (!discard) {
|
|
862
882
|
if (state_ == State::kCompletedWhilePulledFromPipe ||
|
|
863
883
|
state_ == State::kPulledFromPipe) {
|
|
864
884
|
state_ = State::kCompletedWhilePulledFromPipe;
|
|
@@ -868,12 +888,31 @@ void BaseCallData::ReceiveMessage::Done(const ServerMetadata& metadata,
|
|
|
868
888
|
} else {
|
|
869
889
|
push_.reset();
|
|
870
890
|
next_.reset();
|
|
871
|
-
|
|
872
|
-
|
|
891
|
+
if (IsRecvMessageFilterBypassFixEnabled()) {
|
|
892
|
+
completed_status_ = StatusFromMetadata(metadata);
|
|
893
|
+
if (intercepted_slice_buffer_ != nullptr) {
|
|
894
|
+
*intercepted_slice_buffer_ = std::nullopt;
|
|
895
|
+
}
|
|
896
|
+
} else {
|
|
897
|
+
completed_status_ = StatusFromMetadata(metadata);
|
|
898
|
+
}
|
|
899
|
+
flusher->AddClosure(intercepted_on_complete_, completed_status_,
|
|
900
|
+
"recv_message_done");
|
|
873
901
|
state_ = State::kCancelled;
|
|
874
902
|
}
|
|
875
903
|
} break;
|
|
876
904
|
case State::kBatchCompletedNoPipe:
|
|
905
|
+
if (IsRecvMessageFilterBypassFixEnabled() && discard_buffered_message) {
|
|
906
|
+
// Store the cancellation status so that WakeInsideCombiner() can
|
|
907
|
+
// propagate it to the application's message ready callback instead of
|
|
908
|
+
// defaulting to OK.
|
|
909
|
+
completed_status_ = StatusFromMetadata(metadata);
|
|
910
|
+
// Drop the buffered message here so it cannot bypass the trailing
|
|
911
|
+
// metadata; WakeInsideCombiner() just fires the completion.
|
|
912
|
+
if (intercepted_slice_buffer_ != nullptr) {
|
|
913
|
+
*intercepted_slice_buffer_ = std::nullopt;
|
|
914
|
+
}
|
|
915
|
+
}
|
|
877
916
|
state_ = State::kBatchCompletedButCancelledNoPipe;
|
|
878
917
|
break;
|
|
879
918
|
case State::kBatchCompletedButCancelled:
|
|
@@ -887,6 +926,18 @@ void BaseCallData::ReceiveMessage::Done(const ServerMetadata& metadata,
|
|
|
887
926
|
}
|
|
888
927
|
}
|
|
889
928
|
|
|
929
|
+
bool BaseCallData::ReceiveMessage::IsIdle() const {
|
|
930
|
+
switch (state_) {
|
|
931
|
+
case State::kInitial:
|
|
932
|
+
case State::kIdle:
|
|
933
|
+
case State::kCancelled:
|
|
934
|
+
case State::kCancelledWhilstIdle:
|
|
935
|
+
return true;
|
|
936
|
+
default:
|
|
937
|
+
return false;
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
|
|
890
941
|
void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
891
942
|
bool allow_push_to_pipe) {
|
|
892
943
|
GRPC_TRACE_LOG(channel, INFO)
|
|
@@ -910,7 +961,6 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
|
910
961
|
state_ = State::kCancelled;
|
|
911
962
|
break;
|
|
912
963
|
case State::kBatchCompletedButCancelled:
|
|
913
|
-
case State::kCompletedWhileBatchCompleted:
|
|
914
964
|
interceptor()->Push()->Close();
|
|
915
965
|
state_ = State::kCancelled;
|
|
916
966
|
flusher->AddClosure(std::exchange(intercepted_on_complete_, nullptr),
|
|
@@ -921,6 +971,16 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
|
921
971
|
flusher->AddClosure(std::exchange(intercepted_on_complete_, nullptr),
|
|
922
972
|
completed_status_, "recv_message");
|
|
923
973
|
break;
|
|
974
|
+
case State::kCompletedWhileBatchCompleted:
|
|
975
|
+
if (!IsRecvMessageFilterBypassFixEnabled()) {
|
|
976
|
+
// existing behavior
|
|
977
|
+
interceptor()->Push()->Close();
|
|
978
|
+
state_ = State::kCancelled;
|
|
979
|
+
flusher->AddClosure(std::exchange(intercepted_on_complete_, nullptr),
|
|
980
|
+
completed_status_, "recv_message");
|
|
981
|
+
break;
|
|
982
|
+
}
|
|
983
|
+
[[fallthrough]];
|
|
924
984
|
case State::kBatchCompleted:
|
|
925
985
|
if (completed_status_.ok() && intercepted_slice_buffer_->has_value()) {
|
|
926
986
|
if (!allow_push_to_pipe) break;
|
|
@@ -1122,6 +1182,14 @@ class ClientCallData::PollContext {
|
|
|
1122
1182
|
flusher_, self_->recv_initial_metadata_ == nullptr
|
|
1123
1183
|
? true
|
|
1124
1184
|
: self_->recv_initial_metadata_->AllowRecvMessage());
|
|
1185
|
+
if (self_->recv_trailing_state_ ==
|
|
1186
|
+
RecvTrailingState::kCompletedQueuedBehindReceiveMessage &&
|
|
1187
|
+
self_->receive_message()->IsIdle()) {
|
|
1188
|
+
// Now that the receive message pump is idle (finished processing all
|
|
1189
|
+
// in-flight messages), we can finally release the trailing metadata.
|
|
1190
|
+
self_->recv_trailing_state_ = RecvTrailingState::kComplete;
|
|
1191
|
+
repoll_ = true;
|
|
1192
|
+
}
|
|
1125
1193
|
}
|
|
1126
1194
|
if (self_->server_initial_metadata_pipe() != nullptr) {
|
|
1127
1195
|
if (self_->recv_initial_metadata_->metadata_push_.has_value()) {
|
|
@@ -1208,7 +1276,34 @@ class ClientCallData::PollContext {
|
|
|
1208
1276
|
self_->send_message()->Done(*md, flusher_);
|
|
1209
1277
|
}
|
|
1210
1278
|
if (self_->receive_message() != nullptr) {
|
|
1211
|
-
|
|
1279
|
+
if (IsRecvMessageFilterBypassFixEnabled()) {
|
|
1280
|
+
// The promise produced its own terminal metadata while a
|
|
1281
|
+
// message was still in flight: the call is being
|
|
1282
|
+
// short-circuited, so that message is discarded rather than
|
|
1283
|
+
// delivered.
|
|
1284
|
+
self_->receive_message()->Done(*md, flusher_,
|
|
1285
|
+
/*discard_buffered_message=*/true);
|
|
1286
|
+
// Done() defers the completion closure to WakeInsideCombiner,
|
|
1287
|
+
// which already ran this poll. If the pump isn't idle, repoll to
|
|
1288
|
+
// drain it, else the call stalls.
|
|
1289
|
+
if (!self_->receive_message()->IsIdle()) {
|
|
1290
|
+
repoll_ = true;
|
|
1291
|
+
}
|
|
1292
|
+
// The promise terminated with its own (error) metadata while the
|
|
1293
|
+
// transport's trailing metadata was queued behind the receive
|
|
1294
|
+
// message pump. The buffered message was discarded above; since
|
|
1295
|
+
// receive_message()->IsIdle() will not become true until the
|
|
1296
|
+
// pending message completion callbacks execute, immediately
|
|
1297
|
+
// promote the queued trailing metadata to kComplete so the
|
|
1298
|
+
// synchronous handling below picks it up within this polling
|
|
1299
|
+
// pass.
|
|
1300
|
+
if (self_->recv_trailing_state_ ==
|
|
1301
|
+
RecvTrailingState::kCompletedQueuedBehindReceiveMessage) {
|
|
1302
|
+
self_->recv_trailing_state_ = RecvTrailingState::kComplete;
|
|
1303
|
+
}
|
|
1304
|
+
} else {
|
|
1305
|
+
self_->receive_message()->Done(*md, flusher_);
|
|
1306
|
+
}
|
|
1212
1307
|
}
|
|
1213
1308
|
if (self_->recv_trailing_state_ == RecvTrailingState::kComplete) {
|
|
1214
1309
|
if (self_->recv_trailing_metadata_ != md.get()) {
|
|
@@ -1438,6 +1533,8 @@ const char* ClientCallData::StateString(RecvTrailingState state) {
|
|
|
1438
1533
|
return "INITIAL";
|
|
1439
1534
|
case RecvTrailingState::kQueued:
|
|
1440
1535
|
return "QUEUED";
|
|
1536
|
+
case RecvTrailingState::kCompletedQueuedBehindReceiveMessage:
|
|
1537
|
+
return "QUEUED_BEHIND_RECEIVE_MESSAGE";
|
|
1441
1538
|
case RecvTrailingState::kComplete:
|
|
1442
1539
|
return "COMPLETE";
|
|
1443
1540
|
case RecvTrailingState::kForwarded:
|
|
@@ -1645,7 +1742,8 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
|
|
|
1645
1742
|
send_message()->Done(*ServerMetadataFromStatus(error), flusher);
|
|
1646
1743
|
}
|
|
1647
1744
|
if (receive_message() != nullptr) {
|
|
1648
|
-
receive_message()->Done(*ServerMetadataFromStatus(error), flusher
|
|
1745
|
+
receive_message()->Done(*ServerMetadataFromStatus(error), flusher,
|
|
1746
|
+
/*discard_buffered_message=*/true);
|
|
1649
1747
|
}
|
|
1650
1748
|
}
|
|
1651
1749
|
|
|
@@ -1838,6 +1936,7 @@ Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
|
|
|
1838
1936
|
case RecvTrailingState::kInitial:
|
|
1839
1937
|
case RecvTrailingState::kQueued:
|
|
1840
1938
|
case RecvTrailingState::kForwarded:
|
|
1939
|
+
case RecvTrailingState::kCompletedQueuedBehindReceiveMessage:
|
|
1841
1940
|
// No trailing metadata yet: we are pending.
|
|
1842
1941
|
// We return that and expect the promise to be repolled later (if it's
|
|
1843
1942
|
// not cancelled).
|
|
@@ -1892,9 +1991,19 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
|
|
|
1892
1991
|
}
|
|
1893
1992
|
// Record that we've got the callback.
|
|
1894
1993
|
GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
|
|
1895
|
-
|
|
1994
|
+
if (IsRecvMessageFilterBypassFixEnabled() && receive_message() != nullptr &&
|
|
1995
|
+
!receive_message()->IsIdle()) {
|
|
1996
|
+
// If the receive message pump is still active processing a message,
|
|
1997
|
+
// queue the trailing metadata until the pump goes idle to avoid bypassing
|
|
1998
|
+
// the message interceptors of filters higher in the stack.
|
|
1999
|
+
recv_trailing_state_ =
|
|
2000
|
+
RecvTrailingState::kCompletedQueuedBehindReceiveMessage;
|
|
2001
|
+
} else {
|
|
2002
|
+
recv_trailing_state_ = RecvTrailingState::kComplete;
|
|
2003
|
+
}
|
|
1896
2004
|
if (receive_message() != nullptr) {
|
|
1897
|
-
receive_message()->Done(*recv_trailing_metadata_, &flusher
|
|
2005
|
+
receive_message()->Done(*recv_trailing_metadata_, &flusher,
|
|
2006
|
+
/*discard_buffered_message=*/!error.ok());
|
|
1898
2007
|
}
|
|
1899
2008
|
if (send_message() != nullptr) {
|
|
1900
2009
|
send_message()->Done(*recv_trailing_metadata_, &flusher);
|
|
@@ -2208,13 +2317,15 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
|
2208
2317
|
switch (send_trailing_state_) {
|
|
2209
2318
|
case SendTrailingState::kInitial:
|
|
2210
2319
|
send_trailing_metadata_batch_ = batch;
|
|
2320
|
+
// Server ends the RPC non-OK, so the app is done reading: any buffered
|
|
2321
|
+
// inbound (client->server) message has no consumer. Drop it.
|
|
2211
2322
|
if (receive_message() != nullptr &&
|
|
2212
2323
|
batch->payload->send_trailing_metadata.send_trailing_metadata
|
|
2213
2324
|
->get(GrpcStatusMetadata())
|
|
2214
2325
|
.value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) {
|
|
2215
2326
|
receive_message()->Done(
|
|
2216
2327
|
*batch->payload->send_trailing_metadata.send_trailing_metadata,
|
|
2217
|
-
&flusher);
|
|
2328
|
+
&flusher, /* discard_buffered_message */ true);
|
|
2218
2329
|
}
|
|
2219
2330
|
if (send_message() != nullptr && !send_message()->IsIdle()) {
|
|
2220
2331
|
send_trailing_state_ = SendTrailingState::kQueuedBehindSendMessage;
|
|
@@ -2317,7 +2428,8 @@ void ServerCallData::Completed(grpc_error_handle error,
|
|
|
2317
2428
|
send_message()->Done(*ServerMetadataFromStatus(error), flusher);
|
|
2318
2429
|
}
|
|
2319
2430
|
if (receive_message() != nullptr) {
|
|
2320
|
-
receive_message()->Done(*ServerMetadataFromStatus(error), flusher
|
|
2431
|
+
receive_message()->Done(*ServerMetadataFromStatus(error), flusher,
|
|
2432
|
+
/* discard_buffered_message */ true);
|
|
2321
2433
|
}
|
|
2322
2434
|
}
|
|
2323
2435
|
|
|
@@ -1175,7 +1175,8 @@ MakeFilterCall(Derived* derived) {
|
|
|
1175
1175
|
// failure (in which case the call will be aborted).
|
|
1176
1176
|
// useful for cases where the exact metadata returned needs to be customized.
|
|
1177
1177
|
// It's also acceptable to return a promise that resolves to the
|
|
1178
|
-
// relevant return type listed above
|
|
1178
|
+
// relevant return type listed above (except for OnClientToServerHalfClose
|
|
1179
|
+
// and OnServerTrailingMetadata, which must be synchronous).
|
|
1179
1180
|
// Finally, OnFinalize can be added to intercept call finalization.
|
|
1180
1181
|
// It must have one of the signatures:
|
|
1181
1182
|
// - static inline const NoInterceptor OnFinalize:
|
|
@@ -1239,10 +1240,18 @@ struct ArenaContextType<V3InterceptorToV2State> {
|
|
|
1239
1240
|
// Note that this bridge does not support the full functionality of the
|
|
1240
1241
|
// v3 interceptor API. In particular, it assumes that the interceptor
|
|
1241
1242
|
// will create exactly one child call.
|
|
1243
|
+
//
|
|
1244
|
+
// When not running in a v3 stack, the interceptor's Init() method will
|
|
1245
|
+
// not be called, but the wrapped destination will be set before the
|
|
1246
|
+
// ctor runs, so implementations must perform any necessary initialization
|
|
1247
|
+
// in their ctor instead.
|
|
1242
1248
|
template <typename Derived>
|
|
1243
1249
|
class V3InterceptorToV2Bridge : public ChannelFilter, public Interceptor {
|
|
1244
1250
|
public:
|
|
1245
|
-
V3InterceptorToV2Bridge() {
|
|
1251
|
+
explicit V3InterceptorToV2Bridge(ChannelArgs args) {
|
|
1252
|
+
// If running in a v3 stack, disable the bridge. The interceptor
|
|
1253
|
+
// will be used normally.
|
|
1254
|
+
if (args.GetBool(GRPC_ARG_USE_V3_STACK).value_or(false)) return;
|
|
1246
1255
|
// Insert CallDestinationToNextV2Filter as the wrapped destination in
|
|
1247
1256
|
// Interceptor, so that we can route the server side of the
|
|
1248
1257
|
// interceptor back into the v2 filter chain.
|
|
@@ -1486,12 +1495,28 @@ class V3InterceptorToV2Bridge : public ChannelFilter, public Interceptor {
|
|
|
1486
1495
|
call_args.client_initial_metadata = std::move(metadata);
|
|
1487
1496
|
return Seq(
|
|
1488
1497
|
next_promise_factory(std::move(call_args)),
|
|
1489
|
-
[handler](ServerMetadataHandle metadata) mutable
|
|
1490
|
-
-> Poll<ServerMetadataHandle> {
|
|
1498
|
+
[handler](ServerMetadataHandle metadata) mutable {
|
|
1491
1499
|
handler.SpawnPushServerTrailingMetadata(
|
|
1492
1500
|
std::move(metadata));
|
|
1501
|
+
// We return a lambda (promise) here instead of
|
|
1502
|
+
// returning `Pending{}` directly to make this
|
|
1503
|
+
// step safe for subsequent polls. During V2 call
|
|
1504
|
+
// teardown, cancellation of active streams
|
|
1505
|
+
// propagates through the V2 filter stack, which
|
|
1506
|
+
// wakes up this activity and triggers re-polls of
|
|
1507
|
+
// the bridge promise. If we returned `Pending{}`
|
|
1508
|
+
// directly, this factory lambda would be
|
|
1509
|
+
// re-evaluated on every poll, causing duplicate
|
|
1510
|
+
// calls to `SpawnPushServerTrailingMetadata` and
|
|
1511
|
+
// attempting to move from the already-moved
|
|
1512
|
+
// `metadata` parameter (leading to
|
|
1513
|
+
// crashes/undefined behavior). Returning the
|
|
1514
|
+
// inner lambda ensures that the side-effects in
|
|
1515
|
+
// this factory run exactly once, and subsequent
|
|
1516
|
+
// polls only execute the trivial,
|
|
1517
|
+
// side-effect-free inner lambda.
|
|
1493
1518
|
// We always lose the race.
|
|
1494
|
-
return
|
|
1519
|
+
return Never<ServerMetadataHandle>();
|
|
1495
1520
|
});
|
|
1496
1521
|
});
|
|
1497
1522
|
})),
|
|
@@ -1512,11 +1537,6 @@ class V3InterceptorToV2Bridge : public ChannelFilter, public Interceptor {
|
|
|
1512
1537
|
});
|
|
1513
1538
|
}
|
|
1514
1539
|
|
|
1515
|
-
protected:
|
|
1516
|
-
RefCountedPtr<UnstartedCallDestination> wrapped_destination() const {
|
|
1517
|
-
return wrapped_destination_; // From Interceptor class.
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
1540
|
private:
|
|
1521
1541
|
// A custom UnstartedCallDestination that starts the call and returns
|
|
1522
1542
|
// the resulting handler via a latch obtained from call context.
|
|
@@ -1867,7 +1887,14 @@ class BaseCallData : public Activity,
|
|
|
1867
1887
|
// work.
|
|
1868
1888
|
void WakeInsideCombiner(Flusher* flusher, bool allow_push_to_pipe);
|
|
1869
1889
|
// Call is completed, we have trailing metadata. Close things out.
|
|
1870
|
-
|
|
1890
|
+
// discard_buffered_message: the call is being torn down (the promise
|
|
1891
|
+
// produced its own terminal metadata, an out-of-band cancellation, or a
|
|
1892
|
+
// server-initiated non-OK termination) and the receiver has stopped
|
|
1893
|
+
// reading, so drop any message buffered here instead of delivering it up
|
|
1894
|
+
// the stack.
|
|
1895
|
+
void Done(const ServerMetadata& metadata, Flusher* flusher,
|
|
1896
|
+
bool discard_buffered_message = false);
|
|
1897
|
+
bool IsIdle() const;
|
|
1871
1898
|
|
|
1872
1899
|
channelz::PropertyList ChannelzProperties() {
|
|
1873
1900
|
return channelz::PropertyList().Set("state", StateString(state_));
|
|
@@ -2026,6 +2053,9 @@ class ClientCallData : public BaseCallData {
|
|
|
2026
2053
|
kQueued,
|
|
2027
2054
|
// We've forwarded the op to the next filter.
|
|
2028
2055
|
kForwarded,
|
|
2056
|
+
// Trailing metadata is received, but we queue it until the in-progress
|
|
2057
|
+
// receive message operation finishes.
|
|
2058
|
+
kCompletedQueuedBehindReceiveMessage,
|
|
2029
2059
|
// The op has completed from below, but we haven't yet forwarded it up
|
|
2030
2060
|
// (the promise gets to interject and mutate it).
|
|
2031
2061
|
kComplete,
|
|
@@ -2324,7 +2354,7 @@ struct ChannelFilterWithFlagsMethods {
|
|
|
2324
2354
|
args->config));
|
|
2325
2355
|
if (!status.ok()) {
|
|
2326
2356
|
new (elem->channel_data) F*(nullptr);
|
|
2327
|
-
return
|
|
2357
|
+
return status.status();
|
|
2328
2358
|
}
|
|
2329
2359
|
new (elem->channel_data) F*(status->release());
|
|
2330
2360
|
return absl::OkStatus();
|
|
@@ -250,15 +250,14 @@ grpc_compression_options CompressionOptionsFromChannelArgs(
|
|
|
250
250
|
Clamp(*default_level, static_cast<int>(GRPC_COMPRESS_LEVEL_NONE),
|
|
251
251
|
static_cast<int>(GRPC_COMPRESS_LEVEL_COUNT - 1)));
|
|
252
252
|
}
|
|
253
|
-
|
|
253
|
+
std::optional<int> default_algorithm =
|
|
254
254
|
args.GetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM);
|
|
255
255
|
if (default_algorithm.has_value()) {
|
|
256
256
|
compression_options.default_algorithm.is_set = true;
|
|
257
257
|
compression_options.default_algorithm.algorithm =
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
GRPC_COMPRESS_ALGORITHMS_COUNT - 1));
|
|
258
|
+
static_cast<grpc_compression_algorithm>(
|
|
259
|
+
Clamp(*default_algorithm, static_cast<int>(GRPC_COMPRESS_NONE),
|
|
260
|
+
static_cast<int>(GRPC_COMPRESS_ALGORITHMS_COUNT - 1)));
|
|
262
261
|
}
|
|
263
262
|
auto enabled_algorithms_bitset =
|
|
264
263
|
args.GetInt(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET);
|