grpc 1.53.1 → 1.54.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +78 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +142 -0
- data/src/core/ext/gcp/metadata_query.h +82 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +42 -43
- data/src/core/lib/surface/validate_metadata.h +0 -9
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +5 -2
- data/src/core/lib/transport/metadata_batch.h +17 -113
- data/src/core/lib/transport/parsed_metadata.h +6 -16
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +103 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -36,7 +36,14 @@ typedef enum {
|
|
36
36
|
/// Value is a \a census_context.
|
37
37
|
GRPC_CONTEXT_TRACING,
|
38
38
|
|
39
|
-
/// Value is a
|
39
|
+
/// Value is a CallTracerAnnotationInterface. (ClientCallTracer object on the
|
40
|
+
/// client-side call, or ServerCallTracer on the server-side.)
|
41
|
+
GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE,
|
42
|
+
|
43
|
+
/// Value is a CallTracerInterface (ServerCallTracer on the server-side,
|
44
|
+
/// CallAttemptTracer on a subchannel call.)
|
45
|
+
/// TODO(yashykt): Maybe come up with a better name. This will go away in the
|
46
|
+
/// future anyway, so not super important.
|
40
47
|
GRPC_CONTEXT_CALL_TRACER,
|
41
48
|
|
42
49
|
/// Reserved for traffic_class_context.
|
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
#include "src/core/lib/channel/promise_based_filter.h"
|
18
18
|
|
19
|
+
#include <inttypes.h>
|
20
|
+
|
19
21
|
#include <algorithm>
|
20
22
|
#include <initializer_list>
|
21
23
|
#include <memory>
|
@@ -52,7 +54,7 @@ class FakeActivity final : public Activity {
|
|
52
54
|
explicit FakeActivity(Activity* wake_activity)
|
53
55
|
: wake_activity_(wake_activity) {}
|
54
56
|
void Orphan() override {}
|
55
|
-
void ForceImmediateRepoll() override {}
|
57
|
+
void ForceImmediateRepoll(WakeupMask) override {}
|
56
58
|
Waker MakeOwningWaker() override { return wake_activity_->MakeOwningWaker(); }
|
57
59
|
Waker MakeNonOwningWaker() override {
|
58
60
|
return wake_activity_->MakeNonOwningWaker();
|
@@ -91,6 +93,9 @@ BaseCallData::BaseCallData(
|
|
91
93
|
arena_(args->arena),
|
92
94
|
call_combiner_(args->call_combiner),
|
93
95
|
deadline_(args->deadline),
|
96
|
+
call_context_(flags & kFilterExaminesCallContext
|
97
|
+
? arena_->New<CallContext>(nullptr)
|
98
|
+
: nullptr),
|
94
99
|
context_(args->context),
|
95
100
|
server_initial_metadata_pipe_(
|
96
101
|
flags & kFilterExaminesServerInitialMetadata
|
@@ -133,20 +138,22 @@ Waker BaseCallData::MakeNonOwningWaker() { return MakeOwningWaker(); }
|
|
133
138
|
|
134
139
|
Waker BaseCallData::MakeOwningWaker() {
|
135
140
|
GRPC_CALL_STACK_REF(call_stack_, "waker");
|
136
|
-
return Waker(this,
|
141
|
+
return Waker(this, 0);
|
137
142
|
}
|
138
143
|
|
139
|
-
void BaseCallData::Wakeup(
|
144
|
+
void BaseCallData::Wakeup(WakeupMask) {
|
140
145
|
auto wakeup = [](void* p, grpc_error_handle) {
|
141
146
|
auto* self = static_cast<BaseCallData*>(p);
|
142
147
|
self->OnWakeup();
|
143
|
-
self->Drop(
|
148
|
+
self->Drop(0);
|
144
149
|
};
|
145
150
|
auto* closure = GRPC_CLOSURE_CREATE(wakeup, this, nullptr);
|
146
151
|
GRPC_CALL_COMBINER_START(call_combiner_, closure, absl::OkStatus(), "wakeup");
|
147
152
|
}
|
148
153
|
|
149
|
-
void BaseCallData::Drop(
|
154
|
+
void BaseCallData::Drop(WakeupMask) {
|
155
|
+
GRPC_CALL_STACK_UNREF(call_stack_, "waker");
|
156
|
+
}
|
150
157
|
|
151
158
|
std::string BaseCallData::LogTag() const {
|
152
159
|
return absl::StrCat(
|
@@ -214,7 +221,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
|
|
214
221
|
// refcnt==0 ==> cancelled
|
215
222
|
if (grpc_trace_channel.enabled()) {
|
216
223
|
gpr_log(GPR_INFO, "%sRESUME BATCH REQUEST CANCELLED",
|
217
|
-
|
224
|
+
releaser->call()->DebugTag().c_str());
|
218
225
|
}
|
219
226
|
return;
|
220
227
|
}
|
@@ -238,6 +245,10 @@ void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
|
|
238
245
|
auto* batch = std::exchange(batch_, nullptr);
|
239
246
|
GPR_ASSERT(batch != nullptr);
|
240
247
|
uintptr_t& refcnt = *RefCountField(batch);
|
248
|
+
gpr_log(GPR_DEBUG, "%sCancelWith: %p refs=%" PRIdPTR " err=%s [%s]",
|
249
|
+
releaser->call()->DebugTag().c_str(), batch, refcnt,
|
250
|
+
error.ToString().c_str(),
|
251
|
+
grpc_transport_stream_op_batch_string(batch, false).c_str());
|
241
252
|
if (refcnt == 0) {
|
242
253
|
// refcnt==0 ==> cancelled
|
243
254
|
if (grpc_trace_channel.enabled()) {
|
@@ -274,16 +285,20 @@ BaseCallData::Flusher::~Flusher() {
|
|
274
285
|
static_cast<BaseCallData*>(batch->handler_private.extra_arg);
|
275
286
|
if (grpc_trace_channel.enabled()) {
|
276
287
|
gpr_log(GPR_INFO, "FLUSHER:forward batch via closure: %s",
|
277
|
-
grpc_transport_stream_op_batch_string(batch).c_str());
|
288
|
+
grpc_transport_stream_op_batch_string(batch, false).c_str());
|
278
289
|
}
|
279
290
|
grpc_call_next_op(call->elem(), batch);
|
280
291
|
GRPC_CALL_STACK_UNREF(call->call_stack(), "flusher_batch");
|
281
292
|
};
|
282
293
|
for (size_t i = 1; i < release_.size(); i++) {
|
283
294
|
auto* batch = release_[i];
|
295
|
+
if (call_->call_context_ != nullptr && call_->call_context_->traced()) {
|
296
|
+
batch->is_traced = true;
|
297
|
+
}
|
284
298
|
if (grpc_trace_channel.enabled()) {
|
285
|
-
gpr_log(
|
286
|
-
|
299
|
+
gpr_log(
|
300
|
+
GPR_INFO, "FLUSHER:queue batch to forward in closure: %s",
|
301
|
+
grpc_transport_stream_op_batch_string(release_[i], false).c_str());
|
287
302
|
}
|
288
303
|
batch->handler_private.extra_arg = call_;
|
289
304
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure, call_next_op, batch,
|
@@ -295,7 +310,7 @@ BaseCallData::Flusher::~Flusher() {
|
|
295
310
|
call_closures_.RunClosuresWithoutYielding(call_->call_combiner());
|
296
311
|
if (grpc_trace_channel.enabled()) {
|
297
312
|
gpr_log(GPR_INFO, "FLUSHER:forward batch: %s",
|
298
|
-
grpc_transport_stream_op_batch_string(release_[0]).c_str());
|
313
|
+
grpc_transport_stream_op_batch_string(release_[0], false).c_str());
|
299
314
|
}
|
300
315
|
grpc_call_next_op(call_->elem(), release_[0]);
|
301
316
|
GRPC_CALL_STACK_UNREF(call_->call_stack(), "flusher");
|
@@ -324,6 +339,8 @@ const char* BaseCallData::SendMessage::StateString(State state) {
|
|
324
339
|
return "CANCELLED";
|
325
340
|
case State::kCancelledButNotYetPolled:
|
326
341
|
return "CANCELLED_BUT_NOT_YET_POLLED";
|
342
|
+
case State::kCancelledButNoStatus:
|
343
|
+
return "CANCELLED_BUT_NO_STATUS";
|
327
344
|
}
|
328
345
|
return "UNKNOWN";
|
329
346
|
}
|
@@ -348,6 +365,7 @@ void BaseCallData::SendMessage::StartOp(CapturedBatch batch) {
|
|
348
365
|
Crash(absl::StrFormat("ILLEGAL STATE: %s", StateString(state_)));
|
349
366
|
case State::kCancelled:
|
350
367
|
case State::kCancelledButNotYetPolled:
|
368
|
+
case State::kCancelledButNoStatus:
|
351
369
|
return;
|
352
370
|
}
|
353
371
|
batch_ = batch;
|
@@ -375,6 +393,7 @@ void BaseCallData::SendMessage::GotPipe(T* pipe_end) {
|
|
375
393
|
case State::kForwardedBatch:
|
376
394
|
case State::kBatchCompleted:
|
377
395
|
case State::kPushedToPipe:
|
396
|
+
case State::kCancelledButNoStatus:
|
378
397
|
Crash(absl::StrFormat("ILLEGAL STATE: %s", StateString(state_)));
|
379
398
|
case State::kCancelled:
|
380
399
|
case State::kCancelledButNotYetPolled:
|
@@ -390,6 +409,7 @@ bool BaseCallData::SendMessage::IsIdle() const {
|
|
390
409
|
case State::kForwardedBatch:
|
391
410
|
case State::kCancelled:
|
392
411
|
case State::kCancelledButNotYetPolled:
|
412
|
+
case State::kCancelledButNoStatus:
|
393
413
|
return true;
|
394
414
|
case State::kGotBatchNoPipe:
|
395
415
|
case State::kGotBatch:
|
@@ -418,6 +438,7 @@ void BaseCallData::SendMessage::OnComplete(absl::Status status) {
|
|
418
438
|
break;
|
419
439
|
case State::kCancelled:
|
420
440
|
case State::kCancelledButNotYetPolled:
|
441
|
+
case State::kCancelledButNoStatus:
|
421
442
|
flusher.AddClosure(intercepted_on_complete_, status,
|
422
443
|
"forward after cancel");
|
423
444
|
break;
|
@@ -442,10 +463,14 @@ void BaseCallData::SendMessage::Done(const ServerMetadata& metadata,
|
|
442
463
|
case State::kCancelledButNotYetPolled:
|
443
464
|
break;
|
444
465
|
case State::kInitial:
|
466
|
+
state_ = State::kCancelled;
|
467
|
+
break;
|
445
468
|
case State::kIdle:
|
446
469
|
case State::kForwardedBatch:
|
447
470
|
state_ = State::kCancelledButNotYetPolled;
|
471
|
+
if (base_->is_current()) base_->ForceImmediateRepoll();
|
448
472
|
break;
|
473
|
+
case State::kCancelledButNoStatus:
|
449
474
|
case State::kGotBatchNoPipe:
|
450
475
|
case State::kGotBatch: {
|
451
476
|
std::string temp;
|
@@ -464,6 +489,7 @@ void BaseCallData::SendMessage::Done(const ServerMetadata& metadata,
|
|
464
489
|
push_.reset();
|
465
490
|
next_.reset();
|
466
491
|
state_ = State::kCancelledButNotYetPolled;
|
492
|
+
if (base_->is_current()) base_->ForceImmediateRepoll();
|
467
493
|
break;
|
468
494
|
}
|
469
495
|
}
|
@@ -482,6 +508,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
|
|
482
508
|
case State::kIdle:
|
483
509
|
case State::kGotBatchNoPipe:
|
484
510
|
case State::kCancelled:
|
511
|
+
case State::kCancelledButNoStatus:
|
485
512
|
break;
|
486
513
|
case State::kCancelledButNotYetPolled:
|
487
514
|
interceptor()->Push()->Close();
|
@@ -523,13 +550,18 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
|
|
523
550
|
"result.has_value=%s",
|
524
551
|
base_->LogTag().c_str(), p->has_value() ? "true" : "false");
|
525
552
|
}
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
553
|
+
if (p->has_value()) {
|
554
|
+
batch_->payload->send_message.send_message->Swap((**p)->payload());
|
555
|
+
batch_->payload->send_message.flags = (**p)->flags();
|
556
|
+
state_ = State::kForwardedBatch;
|
557
|
+
batch_.ResumeWith(flusher);
|
558
|
+
next_.reset();
|
559
|
+
if ((*push_)().ready()) push_.reset();
|
560
|
+
} else {
|
561
|
+
state_ = State::kCancelledButNoStatus;
|
562
|
+
next_.reset();
|
563
|
+
push_.reset();
|
564
|
+
}
|
533
565
|
}
|
534
566
|
} break;
|
535
567
|
case State::kForwardedBatch:
|
@@ -1087,11 +1119,14 @@ class ClientCallData::PollContext {
|
|
1087
1119
|
// Poll the promise once since we're waiting for it.
|
1088
1120
|
Poll<ServerMetadataHandle> poll = self_->promise_();
|
1089
1121
|
if (grpc_trace_channel.enabled()) {
|
1090
|
-
gpr_log(GPR_INFO, "%s ClientCallData.PollContext.Run: poll=%s",
|
1122
|
+
gpr_log(GPR_INFO, "%s ClientCallData.PollContext.Run: poll=%s; %s",
|
1091
1123
|
self_->LogTag().c_str(),
|
1092
|
-
PollToString(poll,
|
1093
|
-
|
1094
|
-
|
1124
|
+
PollToString(poll,
|
1125
|
+
[](const ServerMetadataHandle& h) {
|
1126
|
+
return h->DebugString();
|
1127
|
+
})
|
1128
|
+
.c_str(),
|
1129
|
+
self_->DebugString().c_str());
|
1095
1130
|
}
|
1096
1131
|
if (auto* r = poll.value_if_ready()) {
|
1097
1132
|
auto md = std::move(*r);
|
@@ -1271,7 +1306,11 @@ ClientCallData::ClientCallData(grpc_call_element* elem,
|
|
1271
1306
|
[args]() {
|
1272
1307
|
return args->arena->New<ReceiveInterceptor>(args->arena);
|
1273
1308
|
},
|
1274
|
-
[args]() { return args->arena->New<SendInterceptor>(args->arena); })
|
1309
|
+
[args]() { return args->arena->New<SendInterceptor>(args->arena); }),
|
1310
|
+
initial_metadata_outstanding_token_(
|
1311
|
+
(flags & kFilterIsLast) != 0
|
1312
|
+
? ClientInitialMetadataOutstandingToken::New(arena())
|
1313
|
+
: ClientInitialMetadataOutstandingToken::Empty()) {
|
1275
1314
|
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
|
1276
1315
|
RecvTrailingMetadataReadyCallback, this,
|
1277
1316
|
grpc_schedule_on_exec_ctx);
|
@@ -1287,8 +1326,12 @@ ClientCallData::~ClientCallData() {
|
|
1287
1326
|
}
|
1288
1327
|
}
|
1289
1328
|
|
1329
|
+
std::string ClientCallData::DebugTag() const {
|
1330
|
+
return absl::StrFormat("PBF_CLIENT[%p]: [%s] ", this, elem()->filter->name);
|
1331
|
+
}
|
1332
|
+
|
1290
1333
|
// Activity implementation.
|
1291
|
-
void ClientCallData::ForceImmediateRepoll() {
|
1334
|
+
void ClientCallData::ForceImmediateRepoll(WakeupMask) {
|
1292
1335
|
GPR_ASSERT(poll_ctx_ != nullptr);
|
1293
1336
|
poll_ctx_->Repoll();
|
1294
1337
|
}
|
@@ -1540,6 +1583,7 @@ void ClientCallData::StartPromise(Flusher* flusher) {
|
|
1540
1583
|
promise_ = filter->MakeCallPromise(
|
1541
1584
|
CallArgs{WrapMetadata(send_initial_metadata_batch_->payload
|
1542
1585
|
->send_initial_metadata.send_initial_metadata),
|
1586
|
+
std::move(initial_metadata_outstanding_token_),
|
1543
1587
|
server_initial_metadata_pipe() == nullptr
|
1544
1588
|
? nullptr
|
1545
1589
|
: &server_initial_metadata_pipe()->sender,
|
@@ -1647,8 +1691,7 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
|
|
1647
1691
|
GPR_ASSERT(poll_ctx_ != nullptr);
|
1648
1692
|
GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued);
|
1649
1693
|
send_initial_metadata_batch_->payload->send_initial_metadata
|
1650
|
-
.send_initial_metadata =
|
1651
|
-
UnwrapMetadata(std::move(call_args.client_initial_metadata));
|
1694
|
+
.send_initial_metadata = call_args.client_initial_metadata.get();
|
1652
1695
|
if (recv_initial_metadata_ != nullptr) {
|
1653
1696
|
// Call args should contain a latch for receiving initial metadata.
|
1654
1697
|
// It might be the one we passed in - in which case we know this filter
|
@@ -1860,8 +1903,15 @@ struct ServerCallData::SendInitialMetadata {
|
|
1860
1903
|
|
1861
1904
|
class ServerCallData::PollContext {
|
1862
1905
|
public:
|
1863
|
-
explicit PollContext(ServerCallData* self, Flusher* flusher
|
1864
|
-
|
1906
|
+
explicit PollContext(ServerCallData* self, Flusher* flusher,
|
1907
|
+
DebugLocation created = DebugLocation())
|
1908
|
+
: self_(self), flusher_(flusher), created_(created) {
|
1909
|
+
if (self_->poll_ctx_ != nullptr) {
|
1910
|
+
Crash(absl::StrCat(
|
1911
|
+
"PollContext: disallowed recursion. New: ", created_.file(), ":",
|
1912
|
+
created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":",
|
1913
|
+
self_->poll_ctx_->created_.line()));
|
1914
|
+
}
|
1865
1915
|
GPR_ASSERT(self_->poll_ctx_ == nullptr);
|
1866
1916
|
self_->poll_ctx_ = this;
|
1867
1917
|
scoped_activity_.Init(self_);
|
@@ -1907,6 +1957,7 @@ class ServerCallData::PollContext {
|
|
1907
1957
|
Flusher* const flusher_;
|
1908
1958
|
bool repoll_ = false;
|
1909
1959
|
bool have_scoped_activity_;
|
1960
|
+
GPR_NO_UNIQUE_ADDRESS DebugLocation created_;
|
1910
1961
|
};
|
1911
1962
|
|
1912
1963
|
const char* ServerCallData::StateString(RecvInitialState state) {
|
@@ -1966,11 +2017,18 @@ ServerCallData::~ServerCallData() {
|
|
1966
2017
|
gpr_log(GPR_INFO, "%s ~ServerCallData %s", LogTag().c_str(),
|
1967
2018
|
DebugString().c_str());
|
1968
2019
|
}
|
2020
|
+
if (send_initial_metadata_ != nullptr) {
|
2021
|
+
send_initial_metadata_->~SendInitialMetadata();
|
2022
|
+
}
|
1969
2023
|
GPR_ASSERT(poll_ctx_ == nullptr);
|
1970
2024
|
}
|
1971
2025
|
|
2026
|
+
std::string ServerCallData::DebugTag() const {
|
2027
|
+
return absl::StrFormat("PBF_SERVER[%p]: [%s] ", this, elem()->filter->name);
|
2028
|
+
}
|
2029
|
+
|
1972
2030
|
// Activity implementation.
|
1973
|
-
void ServerCallData::ForceImmediateRepoll() {
|
2031
|
+
void ServerCallData::ForceImmediateRepoll(WakeupMask) {
|
1974
2032
|
GPR_ASSERT(poll_ctx_ != nullptr);
|
1975
2033
|
poll_ctx_->Repoll();
|
1976
2034
|
}
|
@@ -2076,7 +2134,10 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
2076
2134
|
switch (send_trailing_state_) {
|
2077
2135
|
case SendTrailingState::kInitial:
|
2078
2136
|
send_trailing_metadata_batch_ = batch;
|
2079
|
-
if (receive_message() != nullptr
|
2137
|
+
if (receive_message() != nullptr &&
|
2138
|
+
batch->payload->send_trailing_metadata.send_trailing_metadata
|
2139
|
+
->get(GrpcStatusMetadata())
|
2140
|
+
.value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) {
|
2080
2141
|
receive_message()->Done(
|
2081
2142
|
*batch->payload->send_trailing_metadata.send_trailing_metadata,
|
2082
2143
|
&flusher);
|
@@ -2133,9 +2194,12 @@ void ServerCallData::Completed(grpc_error_handle error, Flusher* flusher) {
|
|
2133
2194
|
case SendTrailingState::kForwarded:
|
2134
2195
|
send_trailing_state_ = SendTrailingState::kCancelled;
|
2135
2196
|
if (!error.ok()) {
|
2197
|
+
call_stack()->IncrementRefCount();
|
2136
2198
|
auto* batch = grpc_make_transport_stream_op(
|
2137
|
-
NewClosure([call_combiner = call_combiner()
|
2199
|
+
NewClosure([call_combiner = call_combiner(),
|
2200
|
+
call_stack = call_stack()](absl::Status) {
|
2138
2201
|
GRPC_CALL_COMBINER_STOP(call_combiner, "done-cancel");
|
2202
|
+
call_stack->Unref();
|
2139
2203
|
}));
|
2140
2204
|
batch->cancel_stream = true;
|
2141
2205
|
batch->payload->cancel_stream.cancel_error = error;
|
@@ -2187,7 +2251,7 @@ void ServerCallData::Completed(grpc_error_handle error, Flusher* flusher) {
|
|
2187
2251
|
ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
|
2188
2252
|
CallArgs call_args) {
|
2189
2253
|
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kComplete);
|
2190
|
-
GPR_ASSERT(
|
2254
|
+
GPR_ASSERT(std::move(call_args.client_initial_metadata).get() ==
|
2191
2255
|
recv_initial_metadata_);
|
2192
2256
|
forward_recv_initial_metadata_callback_ = true;
|
2193
2257
|
if (send_initial_metadata_ != nullptr) {
|
@@ -2309,6 +2373,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
|
|
2309
2373
|
FakeActivity(this).Run([this, filter] {
|
2310
2374
|
promise_ = filter->MakeCallPromise(
|
2311
2375
|
CallArgs{WrapMetadata(recv_initial_metadata_),
|
2376
|
+
ClientInitialMetadataOutstandingToken::Empty(),
|
2312
2377
|
server_initial_metadata_pipe() == nullptr
|
2313
2378
|
? nullptr
|
2314
2379
|
: &server_initial_metadata_pipe()->sender,
|
@@ -2409,9 +2474,14 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2409
2474
|
(send_trailing_metadata_batch_->send_message &&
|
2410
2475
|
send_message()->IsForwarded()))) {
|
2411
2476
|
send_trailing_state_ = SendTrailingState::kQueued;
|
2412
|
-
|
2413
|
-
|
2414
|
-
|
2477
|
+
if (send_trailing_metadata_batch_->payload->send_trailing_metadata
|
2478
|
+
.send_trailing_metadata->get(GrpcStatusMetadata())
|
2479
|
+
.value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) {
|
2480
|
+
send_message()->Done(
|
2481
|
+
*send_trailing_metadata_batch_->payload->send_trailing_metadata
|
2482
|
+
.send_trailing_metadata,
|
2483
|
+
flusher);
|
2484
|
+
}
|
2415
2485
|
}
|
2416
2486
|
}
|
2417
2487
|
if (receive_message() != nullptr) {
|
@@ -2462,8 +2532,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2462
2532
|
}
|
2463
2533
|
if (auto* r = poll.value_if_ready()) {
|
2464
2534
|
promise_ = ArenaPromise<ServerMetadataHandle>();
|
2465
|
-
auto
|
2466
|
-
bool destroy_md = true;
|
2535
|
+
auto md = std::move(*r);
|
2467
2536
|
if (send_message() != nullptr) {
|
2468
2537
|
send_message()->Done(*md, flusher);
|
2469
2538
|
}
|
@@ -2475,11 +2544,9 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2475
2544
|
case SendTrailingState::kQueuedButHaventClosedSends:
|
2476
2545
|
case SendTrailingState::kQueued: {
|
2477
2546
|
if (send_trailing_metadata_batch_->payload->send_trailing_metadata
|
2478
|
-
.send_trailing_metadata != md) {
|
2547
|
+
.send_trailing_metadata != md.get()) {
|
2479
2548
|
*send_trailing_metadata_batch_->payload->send_trailing_metadata
|
2480
2549
|
.send_trailing_metadata = std::move(*md);
|
2481
|
-
} else {
|
2482
|
-
destroy_md = false;
|
2483
2550
|
}
|
2484
2551
|
send_trailing_metadata_batch_.ResumeWith(flusher);
|
2485
2552
|
send_trailing_state_ = SendTrailingState::kForwarded;
|
@@ -2497,9 +2564,6 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2497
2564
|
// Nothing to do.
|
2498
2565
|
break;
|
2499
2566
|
}
|
2500
|
-
if (destroy_md) {
|
2501
|
-
md->~grpc_metadata_batch();
|
2502
|
-
}
|
2503
2567
|
}
|
2504
2568
|
}
|
2505
2569
|
if (std::exchange(forward_recv_initial_metadata_callback_, false)) {
|
@@ -62,6 +62,7 @@
|
|
62
62
|
#include "src/core/lib/promise/poll.h"
|
63
63
|
#include "src/core/lib/resource_quota/arena.h"
|
64
64
|
#include "src/core/lib/slice/slice_buffer.h"
|
65
|
+
#include "src/core/lib/surface/call.h"
|
65
66
|
#include "src/core/lib/transport/error_utils.h"
|
66
67
|
#include "src/core/lib/transport/metadata_batch.h"
|
67
68
|
#include "src/core/lib/transport/transport.h"
|
@@ -134,6 +135,7 @@ static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
|
|
134
135
|
static constexpr uint8_t kFilterIsLast = 2;
|
135
136
|
static constexpr uint8_t kFilterExaminesOutboundMessages = 4;
|
136
137
|
static constexpr uint8_t kFilterExaminesInboundMessages = 8;
|
138
|
+
static constexpr uint8_t kFilterExaminesCallContext = 16;
|
137
139
|
|
138
140
|
namespace promise_filter_detail {
|
139
141
|
|
@@ -182,7 +184,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
182
184
|
Waker MakeNonOwningWaker() final;
|
183
185
|
Waker MakeOwningWaker() final;
|
184
186
|
|
185
|
-
std::string ActivityDebugTag(
|
187
|
+
std::string ActivityDebugTag(WakeupMask) const override { return DebugTag(); }
|
186
188
|
|
187
189
|
void Finalize(const grpc_call_final_info* final_info) {
|
188
190
|
finalization_.Run(final_info);
|
@@ -197,7 +199,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
197
199
|
public promise_detail::Context<grpc_polling_entity>,
|
198
200
|
public promise_detail::Context<CallFinalization>,
|
199
201
|
public promise_detail::Context<
|
200
|
-
grpc_event_engine::experimental::EventEngine
|
202
|
+
grpc_event_engine::experimental::EventEngine>,
|
203
|
+
public promise_detail::Context<CallContext> {
|
201
204
|
public:
|
202
205
|
explicit ScopedContext(BaseCallData* call_data)
|
203
206
|
: promise_detail::Context<Arena>(call_data->arena_),
|
@@ -207,7 +210,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
207
210
|
call_data->pollent_.load(std::memory_order_acquire)),
|
208
211
|
promise_detail::Context<CallFinalization>(&call_data->finalization_),
|
209
212
|
promise_detail::Context<grpc_event_engine::experimental::EventEngine>(
|
210
|
-
call_data->event_engine_)
|
213
|
+
call_data->event_engine_),
|
214
|
+
promise_detail::Context<CallContext>(call_data->call_context_) {}
|
211
215
|
};
|
212
216
|
|
213
217
|
class Flusher {
|
@@ -218,7 +222,11 @@ class BaseCallData : public Activity, private Wakeable {
|
|
218
222
|
|
219
223
|
void Resume(grpc_transport_stream_op_batch* batch) {
|
220
224
|
GPR_ASSERT(!call_->is_last());
|
221
|
-
|
225
|
+
if (batch->HasOp()) {
|
226
|
+
release_.push_back(batch);
|
227
|
+
} else if (batch->on_complete != nullptr) {
|
228
|
+
Complete(batch);
|
229
|
+
}
|
222
230
|
}
|
223
231
|
|
224
232
|
void Cancel(grpc_transport_stream_op_batch* batch,
|
@@ -237,6 +245,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
237
245
|
call_closures_.Add(closure, error, reason);
|
238
246
|
}
|
239
247
|
|
248
|
+
BaseCallData* call() const { return call_; }
|
249
|
+
|
240
250
|
private:
|
241
251
|
absl::InlinedVector<grpc_transport_stream_op_batch*, 1> release_;
|
242
252
|
CallCombinerClosureList call_closures_;
|
@@ -280,11 +290,6 @@ class BaseCallData : public Activity, private Wakeable {
|
|
280
290
|
Arena::PooledDeleter(nullptr));
|
281
291
|
}
|
282
292
|
|
283
|
-
static grpc_metadata_batch* UnwrapMetadata(
|
284
|
-
Arena::PoolPtr<grpc_metadata_batch> p) {
|
285
|
-
return p.release();
|
286
|
-
}
|
287
|
-
|
288
293
|
class ReceiveInterceptor final : public Interceptor {
|
289
294
|
public:
|
290
295
|
explicit ReceiveInterceptor(Arena* arena) : pipe_{arena} {}
|
@@ -398,6 +403,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
398
403
|
kCancelledButNotYetPolled,
|
399
404
|
// We're done.
|
400
405
|
kCancelled,
|
406
|
+
// We're done, but we haven't gotten a status yet
|
407
|
+
kCancelledButNoStatus,
|
401
408
|
};
|
402
409
|
static const char* StateString(State);
|
403
410
|
|
@@ -538,8 +545,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
538
545
|
|
539
546
|
private:
|
540
547
|
// Wakeable implementation.
|
541
|
-
void Wakeup(
|
542
|
-
void Drop(
|
548
|
+
void Wakeup(WakeupMask) final;
|
549
|
+
void Drop(WakeupMask) final;
|
543
550
|
|
544
551
|
virtual void OnWakeup() = 0;
|
545
552
|
|
@@ -549,6 +556,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
549
556
|
CallCombiner* const call_combiner_;
|
550
557
|
const Timestamp deadline_;
|
551
558
|
CallFinalization finalization_;
|
559
|
+
CallContext* call_context_ = nullptr;
|
552
560
|
grpc_call_context_element* const context_;
|
553
561
|
std::atomic<grpc_polling_entity*> pollent_{nullptr};
|
554
562
|
Pipe<ServerMetadataHandle>* const server_initial_metadata_pipe_;
|
@@ -564,10 +572,12 @@ class ClientCallData : public BaseCallData {
|
|
564
572
|
~ClientCallData() override;
|
565
573
|
|
566
574
|
// Activity implementation.
|
567
|
-
void ForceImmediateRepoll() final;
|
575
|
+
void ForceImmediateRepoll(WakeupMask) final;
|
568
576
|
// Handle one grpc_transport_stream_op_batch
|
569
577
|
void StartBatch(grpc_transport_stream_op_batch* batch) override;
|
570
578
|
|
579
|
+
std::string DebugTag() const override;
|
580
|
+
|
571
581
|
private:
|
572
582
|
// At what stage is our handling of send initial metadata?
|
573
583
|
enum class SendInitialState {
|
@@ -664,6 +674,8 @@ class ClientCallData : public BaseCallData {
|
|
664
674
|
RecvTrailingState recv_trailing_state_ = RecvTrailingState::kInitial;
|
665
675
|
// Polling related data. Non-null if we're actively polling
|
666
676
|
PollContext* poll_ctx_ = nullptr;
|
677
|
+
// Initial metadata outstanding token
|
678
|
+
ClientInitialMetadataOutstandingToken initial_metadata_outstanding_token_;
|
667
679
|
};
|
668
680
|
|
669
681
|
class ServerCallData : public BaseCallData {
|
@@ -673,10 +685,12 @@ class ServerCallData : public BaseCallData {
|
|
673
685
|
~ServerCallData() override;
|
674
686
|
|
675
687
|
// Activity implementation.
|
676
|
-
void ForceImmediateRepoll() final;
|
688
|
+
void ForceImmediateRepoll(WakeupMask) final;
|
677
689
|
// Handle one grpc_transport_stream_op_batch
|
678
690
|
void StartBatch(grpc_transport_stream_op_batch* batch) override;
|
679
691
|
|
692
|
+
std::string DebugTag() const override;
|
693
|
+
|
680
694
|
protected:
|
681
695
|
absl::string_view ClientOrServerString() const override { return "SVR"; }
|
682
696
|
|
@@ -0,0 +1,110 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2023 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include <functional>
|
20
|
+
#include <utility>
|
21
|
+
|
22
|
+
#include "absl/status/status.h"
|
23
|
+
#include "absl/status/statusor.h"
|
24
|
+
|
25
|
+
#include "src/core/lib/channel/call_finalization.h"
|
26
|
+
#include "src/core/lib/channel/call_tracer.h"
|
27
|
+
#include "src/core/lib/channel/channel_args.h"
|
28
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
29
|
+
#include "src/core/lib/channel/channel_stack.h"
|
30
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
31
|
+
#include "src/core/lib/channel/context.h"
|
32
|
+
#include "src/core/lib/channel/promise_based_filter.h"
|
33
|
+
#include "src/core/lib/config/core_configuration.h"
|
34
|
+
#include "src/core/lib/promise/arena_promise.h"
|
35
|
+
#include "src/core/lib/promise/cancel_callback.h"
|
36
|
+
#include "src/core/lib/promise/context.h"
|
37
|
+
#include "src/core/lib/promise/map.h"
|
38
|
+
#include "src/core/lib/promise/pipe.h"
|
39
|
+
#include "src/core/lib/promise/poll.h"
|
40
|
+
#include "src/core/lib/surface/channel_init.h"
|
41
|
+
#include "src/core/lib/surface/channel_stack_type.h"
|
42
|
+
#include "src/core/lib/transport/transport.h"
|
43
|
+
|
44
|
+
namespace grpc_core {
|
45
|
+
|
46
|
+
namespace {
|
47
|
+
|
48
|
+
// TODO(yashykt): This filter is not really needed. We should be able to move
|
49
|
+
// this to the connected filter.
|
50
|
+
class ServerCallTracerFilter : public ChannelFilter {
|
51
|
+
public:
|
52
|
+
static const grpc_channel_filter kFilter;
|
53
|
+
|
54
|
+
static absl::StatusOr<ServerCallTracerFilter> Create(
|
55
|
+
const ChannelArgs& /*args*/, ChannelFilter::Args /*filter_args*/);
|
56
|
+
|
57
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
58
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
59
|
+
};
|
60
|
+
|
61
|
+
const grpc_channel_filter ServerCallTracerFilter::kFilter =
|
62
|
+
MakePromiseBasedFilter<ServerCallTracerFilter, FilterEndpoint::kServer,
|
63
|
+
kFilterExaminesServerInitialMetadata>(
|
64
|
+
"server_call_tracer");
|
65
|
+
|
66
|
+
absl::StatusOr<ServerCallTracerFilter> ServerCallTracerFilter::Create(
|
67
|
+
const ChannelArgs& /*args*/, ChannelFilter::Args /*filter_args*/) {
|
68
|
+
return ServerCallTracerFilter();
|
69
|
+
}
|
70
|
+
|
71
|
+
ArenaPromise<ServerMetadataHandle> ServerCallTracerFilter::MakeCallPromise(
|
72
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
73
|
+
auto* call_context = GetContext<grpc_call_context_element>();
|
74
|
+
auto* call_tracer = static_cast<ServerCallTracer*>(
|
75
|
+
call_context[GRPC_CONTEXT_CALL_TRACER].value);
|
76
|
+
if (call_tracer == nullptr) {
|
77
|
+
return next_promise_factory(std::move(call_args));
|
78
|
+
}
|
79
|
+
call_tracer->RecordReceivedInitialMetadata(
|
80
|
+
call_args.client_initial_metadata.get());
|
81
|
+
call_args.server_initial_metadata->InterceptAndMap(
|
82
|
+
[call_tracer](ServerMetadataHandle metadata) {
|
83
|
+
call_tracer->RecordSendInitialMetadata(metadata.get());
|
84
|
+
return metadata;
|
85
|
+
});
|
86
|
+
GetContext<CallFinalization>()->Add(
|
87
|
+
[call_tracer](const grpc_call_final_info* final_info) {
|
88
|
+
call_tracer->RecordEnd(final_info);
|
89
|
+
});
|
90
|
+
return OnCancel(
|
91
|
+
Map(next_promise_factory(std::move(call_args)),
|
92
|
+
[call_tracer](ServerMetadataHandle md) {
|
93
|
+
call_tracer->RecordSendTrailingMetadata(md.get());
|
94
|
+
return md;
|
95
|
+
}),
|
96
|
+
[call_tracer]() { call_tracer->RecordCancel(absl::CancelledError()); });
|
97
|
+
}
|
98
|
+
|
99
|
+
} // namespace
|
100
|
+
|
101
|
+
void RegisterServerCallTracerFilter(CoreConfiguration::Builder* builder) {
|
102
|
+
builder->channel_init()->RegisterStage(
|
103
|
+
GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
104
|
+
[](ChannelStackBuilder* builder) {
|
105
|
+
builder->AppendFilter(&ServerCallTracerFilter::kFilter);
|
106
|
+
return true;
|
107
|
+
});
|
108
|
+
}
|
109
|
+
|
110
|
+
} // namespace grpc_core
|