grpc 1.53.0.pre2 → 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 +80 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +11 -2
- 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/http_proxy.cc +1 -1
- 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 +1 -15
- 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 +13 -5
- 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/chttp2_transport.cc +149 -60
- 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_parser.cc +42 -23
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -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/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- 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/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- 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/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 +9 -6
- data/src/core/lib/transport/metadata_batch.h +58 -16
- data/src/core/lib/transport/parsed_metadata.h +3 -3
- 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 +107 -72
- 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/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
data/src/core/lib/surface/call.h
CHANGED
@@ -119,12 +119,20 @@ class CallContext {
|
|
119
119
|
// TODO(ctiller): remove this once transport APIs are promise based
|
120
120
|
void Unref(const char* reason = "call_context");
|
121
121
|
|
122
|
+
RefCountedPtr<CallContext> Ref() {
|
123
|
+
IncrementRefCount();
|
124
|
+
return RefCountedPtr<CallContext>(this);
|
125
|
+
}
|
126
|
+
|
122
127
|
grpc_call_stats* call_stats() { return &call_stats_; }
|
123
128
|
gpr_atm* peer_string_atm_ptr();
|
124
129
|
grpc_polling_entity* polling_entity() { return &pollent_; }
|
125
130
|
|
126
131
|
ServerCallContext* server_call_context();
|
127
132
|
|
133
|
+
void set_traced(bool traced) { traced_ = traced; }
|
134
|
+
bool traced() const { return traced_; }
|
135
|
+
|
128
136
|
private:
|
129
137
|
friend class PromiseBasedCall;
|
130
138
|
// Call final info.
|
@@ -135,6 +143,8 @@ class CallContext {
|
|
135
143
|
// TODO(ctiller): remove this once transport APIs are promise based and we
|
136
144
|
// don't need refcounting here.
|
137
145
|
PromiseBasedCall* const call_;
|
146
|
+
// Is this call traced?
|
147
|
+
bool traced_ = false;
|
138
148
|
};
|
139
149
|
|
140
150
|
template <>
|
@@ -79,6 +79,7 @@ ArenaPromise<ServerMetadataHandle> LameClientFilter::MakeCallPromise(
|
|
79
79
|
if (args.server_to_client_messages != nullptr) {
|
80
80
|
args.server_to_client_messages->Close();
|
81
81
|
}
|
82
|
+
args.client_initial_metadata_outstanding.Complete(true);
|
82
83
|
return Immediate(ServerMetadataFromStatus(error_));
|
83
84
|
}
|
84
85
|
|
@@ -23,6 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "31.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) { return "
|
28
|
+
const char* grpc_g_stands_for(void) { return "gracious"; }
|
@@ -0,0 +1,179 @@
|
|
1
|
+
// Copyright 2023 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/support/port_platform.h>
|
16
|
+
|
17
|
+
#include "src/core/lib/transport/batch_builder.h"
|
18
|
+
|
19
|
+
#include <type_traits>
|
20
|
+
|
21
|
+
#include "src/core/lib/promise/poll.h"
|
22
|
+
#include "src/core/lib/slice/slice.h"
|
23
|
+
#include "src/core/lib/surface/call_trace.h"
|
24
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
25
|
+
#include "src/core/lib/transport/transport.h"
|
26
|
+
#include "src/core/lib/transport/transport_impl.h"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
BatchBuilder::BatchBuilder(grpc_transport_stream_op_batch_payload* payload)
|
31
|
+
: payload_(payload) {}
|
32
|
+
|
33
|
+
void BatchBuilder::PendingCompletion::CompletionCallback(
|
34
|
+
void* self, grpc_error_handle error) {
|
35
|
+
auto* pc = static_cast<PendingCompletion*>(self);
|
36
|
+
auto* party = pc->batch->party.get();
|
37
|
+
if (grpc_call_trace.enabled()) {
|
38
|
+
gpr_log(
|
39
|
+
GPR_DEBUG, "%s[connected] Finish batch-component %s for %s: status=%s",
|
40
|
+
party->DebugTag().c_str(), std::string(pc->name()).c_str(),
|
41
|
+
grpc_transport_stream_op_batch_string(&pc->batch->batch, false).c_str(),
|
42
|
+
error.ToString().c_str());
|
43
|
+
}
|
44
|
+
party->Spawn(
|
45
|
+
"batch-completion",
|
46
|
+
[pc, error = std::move(error)]() mutable {
|
47
|
+
RefCountedPtr<Batch> batch = std::exchange(pc->batch, nullptr);
|
48
|
+
pc->done_latch.Set(std::move(error));
|
49
|
+
return Empty{};
|
50
|
+
},
|
51
|
+
[](Empty) {});
|
52
|
+
}
|
53
|
+
|
54
|
+
BatchBuilder::PendingCompletion::PendingCompletion(RefCountedPtr<Batch> batch)
|
55
|
+
: batch(std::move(batch)) {
|
56
|
+
GRPC_CLOSURE_INIT(&on_done_closure, CompletionCallback, this, nullptr);
|
57
|
+
}
|
58
|
+
|
59
|
+
BatchBuilder::Batch::Batch(grpc_transport_stream_op_batch_payload* payload,
|
60
|
+
grpc_stream_refcount* stream_refcount)
|
61
|
+
: party(static_cast<Party*>(Activity::current())->Ref()),
|
62
|
+
stream_refcount(stream_refcount) {
|
63
|
+
batch.payload = payload;
|
64
|
+
batch.is_traced = GetContext<CallContext>()->traced();
|
65
|
+
#ifndef NDEBUG
|
66
|
+
grpc_stream_ref(stream_refcount, "pending-batch");
|
67
|
+
#else
|
68
|
+
grpc_stream_ref(stream_refcount);
|
69
|
+
#endif
|
70
|
+
}
|
71
|
+
|
72
|
+
BatchBuilder::Batch::~Batch() {
|
73
|
+
auto* arena = party->arena();
|
74
|
+
if (pending_receive_message != nullptr) {
|
75
|
+
arena->DeletePooled(pending_receive_message);
|
76
|
+
}
|
77
|
+
if (pending_receive_initial_metadata != nullptr) {
|
78
|
+
arena->DeletePooled(pending_receive_initial_metadata);
|
79
|
+
}
|
80
|
+
if (pending_receive_trailing_metadata != nullptr) {
|
81
|
+
arena->DeletePooled(pending_receive_trailing_metadata);
|
82
|
+
}
|
83
|
+
if (pending_sends != nullptr) {
|
84
|
+
arena->DeletePooled(pending_sends);
|
85
|
+
}
|
86
|
+
if (batch.cancel_stream) {
|
87
|
+
arena->DeletePooled(batch.payload);
|
88
|
+
}
|
89
|
+
#ifndef NDEBUG
|
90
|
+
grpc_stream_unref(stream_refcount, "pending-batch");
|
91
|
+
#else
|
92
|
+
grpc_stream_unref(stream_refcount);
|
93
|
+
#endif
|
94
|
+
}
|
95
|
+
|
96
|
+
BatchBuilder::Batch* BatchBuilder::GetBatch(Target target) {
|
97
|
+
if (target_.has_value() &&
|
98
|
+
(target_->stream != target.stream ||
|
99
|
+
target.transport->vtable
|
100
|
+
->hacky_disable_stream_op_batch_coalescing_in_connected_channel)) {
|
101
|
+
FlushBatch();
|
102
|
+
}
|
103
|
+
if (!target_.has_value()) {
|
104
|
+
target_ = target;
|
105
|
+
batch_ = GetContext<Arena>()->NewPooled<Batch>(payload_,
|
106
|
+
target_->stream_refcount);
|
107
|
+
}
|
108
|
+
GPR_ASSERT(batch_ != nullptr);
|
109
|
+
return batch_;
|
110
|
+
}
|
111
|
+
|
112
|
+
void BatchBuilder::FlushBatch() {
|
113
|
+
GPR_ASSERT(batch_ != nullptr);
|
114
|
+
GPR_ASSERT(target_.has_value());
|
115
|
+
if (grpc_call_trace.enabled()) {
|
116
|
+
gpr_log(
|
117
|
+
GPR_DEBUG, "%s[connected] Perform transport stream op batch: %p %s",
|
118
|
+
batch_->party->DebugTag().c_str(), &batch_->batch,
|
119
|
+
grpc_transport_stream_op_batch_string(&batch_->batch, false).c_str());
|
120
|
+
}
|
121
|
+
std::exchange(batch_, nullptr)->PerformWith(*target_);
|
122
|
+
target_.reset();
|
123
|
+
}
|
124
|
+
|
125
|
+
void BatchBuilder::Batch::PerformWith(Target target) {
|
126
|
+
grpc_transport_perform_stream_op(target.transport, target.stream, &batch);
|
127
|
+
}
|
128
|
+
|
129
|
+
ServerMetadataHandle BatchBuilder::CompleteSendServerTrailingMetadata(
|
130
|
+
ServerMetadataHandle sent_metadata, absl::Status send_result,
|
131
|
+
bool actually_sent) {
|
132
|
+
if (!send_result.ok()) {
|
133
|
+
if (grpc_call_trace.enabled()) {
|
134
|
+
gpr_log(GPR_DEBUG,
|
135
|
+
"%s[connected] Send metadata failed with error: %s, "
|
136
|
+
"fabricating trailing metadata",
|
137
|
+
Activity::current()->DebugTag().c_str(),
|
138
|
+
send_result.ToString().c_str());
|
139
|
+
}
|
140
|
+
sent_metadata->Clear();
|
141
|
+
sent_metadata->Set(GrpcStatusMetadata(),
|
142
|
+
static_cast<grpc_status_code>(send_result.code()));
|
143
|
+
sent_metadata->Set(GrpcMessageMetadata(),
|
144
|
+
Slice::FromCopiedString(send_result.message()));
|
145
|
+
sent_metadata->Set(GrpcCallWasCancelled(), true);
|
146
|
+
}
|
147
|
+
if (!sent_metadata->get(GrpcCallWasCancelled()).has_value()) {
|
148
|
+
if (grpc_call_trace.enabled()) {
|
149
|
+
gpr_log(
|
150
|
+
GPR_DEBUG,
|
151
|
+
"%s[connected] Tagging trailing metadata with "
|
152
|
+
"cancellation status from transport: %s",
|
153
|
+
Activity::current()->DebugTag().c_str(),
|
154
|
+
actually_sent ? "sent => not-cancelled" : "not-sent => cancelled");
|
155
|
+
}
|
156
|
+
sent_metadata->Set(GrpcCallWasCancelled(), !actually_sent);
|
157
|
+
}
|
158
|
+
return sent_metadata;
|
159
|
+
}
|
160
|
+
|
161
|
+
BatchBuilder::Batch* BatchBuilder::MakeCancel(
|
162
|
+
grpc_stream_refcount* stream_refcount, absl::Status status) {
|
163
|
+
auto* arena = GetContext<Arena>();
|
164
|
+
auto* payload =
|
165
|
+
arena->NewPooled<grpc_transport_stream_op_batch_payload>(nullptr);
|
166
|
+
auto* batch = arena->NewPooled<Batch>(payload, stream_refcount);
|
167
|
+
batch->batch.cancel_stream = true;
|
168
|
+
payload->cancel_stream.cancel_error = std::move(status);
|
169
|
+
return batch;
|
170
|
+
}
|
171
|
+
|
172
|
+
void BatchBuilder::Cancel(Target target, absl::Status status) {
|
173
|
+
auto* batch = MakeCancel(target.stream_refcount, std::move(status));
|
174
|
+
batch->batch.on_complete = NewClosure(
|
175
|
+
[batch](absl::Status) { batch->party->arena()->DeletePooled(batch); });
|
176
|
+
batch->PerformWith(target);
|
177
|
+
}
|
178
|
+
|
179
|
+
} // namespace grpc_core
|
@@ -0,0 +1,468 @@
|
|
1
|
+
// Copyright 2023 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_TRANSPORT_BATCH_BUILDER_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_TRANSPORT_BATCH_BUILDER_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <stdint.h>
|
21
|
+
|
22
|
+
#include <memory>
|
23
|
+
#include <string>
|
24
|
+
#include <utility>
|
25
|
+
|
26
|
+
#include "absl/status/status.h"
|
27
|
+
#include "absl/status/statusor.h"
|
28
|
+
#include "absl/strings/string_view.h"
|
29
|
+
#include "absl/types/optional.h"
|
30
|
+
|
31
|
+
#include <grpc/status.h>
|
32
|
+
#include <grpc/support/log.h>
|
33
|
+
|
34
|
+
#include "src/core/lib/channel/channel_stack.h"
|
35
|
+
#include "src/core/lib/debug/trace.h"
|
36
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
37
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
38
|
+
#include "src/core/lib/iomgr/closure.h"
|
39
|
+
#include "src/core/lib/iomgr/error.h"
|
40
|
+
#include "src/core/lib/promise/activity.h"
|
41
|
+
#include "src/core/lib/promise/context.h"
|
42
|
+
#include "src/core/lib/promise/latch.h"
|
43
|
+
#include "src/core/lib/promise/map.h"
|
44
|
+
#include "src/core/lib/promise/party.h"
|
45
|
+
#include "src/core/lib/resource_quota/arena.h"
|
46
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
47
|
+
#include "src/core/lib/surface/call.h"
|
48
|
+
#include "src/core/lib/surface/call_trace.h"
|
49
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
50
|
+
#include "src/core/lib/transport/transport.h"
|
51
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
52
|
+
|
53
|
+
namespace grpc_core {
|
54
|
+
|
55
|
+
// Build up a transport stream op batch for a stream for a promise based
|
56
|
+
// connected channel.
|
57
|
+
// Offered as a context from Call, so that it can collect ALL the updates during
|
58
|
+
// a single party round, and then push them down to the transport as a single
|
59
|
+
// transaction.
|
60
|
+
class BatchBuilder {
|
61
|
+
public:
|
62
|
+
explicit BatchBuilder(grpc_transport_stream_op_batch_payload* payload);
|
63
|
+
~BatchBuilder() {
|
64
|
+
if (batch_ != nullptr) FlushBatch();
|
65
|
+
}
|
66
|
+
|
67
|
+
struct Target {
|
68
|
+
grpc_transport* transport;
|
69
|
+
grpc_stream* stream;
|
70
|
+
grpc_stream_refcount* stream_refcount;
|
71
|
+
};
|
72
|
+
|
73
|
+
BatchBuilder(const BatchBuilder&) = delete;
|
74
|
+
BatchBuilder& operator=(const BatchBuilder&) = delete;
|
75
|
+
|
76
|
+
// Returns a promise that will resolve to a Status when the send is completed.
|
77
|
+
auto SendMessage(Target target, MessageHandle message);
|
78
|
+
|
79
|
+
// Returns a promise that will resolve to a Status when the send is completed.
|
80
|
+
auto SendClientInitialMetadata(Target target, ClientMetadataHandle metadata);
|
81
|
+
|
82
|
+
// Returns a promise that will resolve to a Status when the send is completed.
|
83
|
+
auto SendClientTrailingMetadata(Target target);
|
84
|
+
|
85
|
+
// Returns a promise that will resolve to a Status when the send is completed.
|
86
|
+
auto SendServerInitialMetadata(Target target, ServerMetadataHandle metadata);
|
87
|
+
|
88
|
+
// Returns a promise that will resolve to a ServerMetadataHandle when the send
|
89
|
+
// is completed.
|
90
|
+
//
|
91
|
+
// If convert_to_cancellation is true, then the status will be converted to a
|
92
|
+
// cancellation batch instead of a trailing metadata op in a coalesced batch.
|
93
|
+
//
|
94
|
+
// This quirk exists as in the filter based stack upon which our transports
|
95
|
+
// were written if a trailing metadata op were sent it always needed to be
|
96
|
+
// paired with an initial op batch, and the transports would wait for the
|
97
|
+
// initial metadata batch to arrive (in case of reordering up the stack).
|
98
|
+
auto SendServerTrailingMetadata(Target target, ServerMetadataHandle metadata,
|
99
|
+
bool convert_to_cancellation);
|
100
|
+
|
101
|
+
// Returns a promise that will resolve to a StatusOr<optional<MessageHandle>>
|
102
|
+
// when a message is received.
|
103
|
+
// Error => non-ok status
|
104
|
+
// End of stream => Ok, nullopt (no message)
|
105
|
+
// Message => Ok, message
|
106
|
+
auto ReceiveMessage(Target target);
|
107
|
+
|
108
|
+
// Returns a promise that will resolve to a StatusOr<ClientMetadataHandle>
|
109
|
+
// when the receive is complete.
|
110
|
+
auto ReceiveClientInitialMetadata(Target target);
|
111
|
+
|
112
|
+
// Returns a promise that will resolve to a StatusOr<ClientMetadataHandle>
|
113
|
+
// when the receive is complete.
|
114
|
+
auto ReceiveClientTrailingMetadata(Target target);
|
115
|
+
|
116
|
+
// Returns a promise that will resolve to a StatusOr<ServerMetadataHandle>
|
117
|
+
// when the receive is complete.
|
118
|
+
auto ReceiveServerInitialMetadata(Target target);
|
119
|
+
|
120
|
+
// Returns a promise that will resolve to a StatusOr<ServerMetadataHandle>
|
121
|
+
// when the receive is complete.
|
122
|
+
auto ReceiveServerTrailingMetadata(Target target);
|
123
|
+
|
124
|
+
// Send a cancellation: does not occupy the same payload, nor does it
|
125
|
+
// coalesce with other ops.
|
126
|
+
void Cancel(Target target, absl::Status status);
|
127
|
+
|
128
|
+
private:
|
129
|
+
struct Batch;
|
130
|
+
|
131
|
+
// Base pending operation
|
132
|
+
struct PendingCompletion {
|
133
|
+
explicit PendingCompletion(RefCountedPtr<Batch> batch);
|
134
|
+
virtual absl::string_view name() const = 0;
|
135
|
+
static void CompletionCallback(void* self, grpc_error_handle error);
|
136
|
+
grpc_closure on_done_closure;
|
137
|
+
Latch<absl::Status> done_latch;
|
138
|
+
RefCountedPtr<Batch> batch;
|
139
|
+
|
140
|
+
protected:
|
141
|
+
~PendingCompletion() = default;
|
142
|
+
};
|
143
|
+
|
144
|
+
// A pending receive message.
|
145
|
+
struct PendingReceiveMessage final : public PendingCompletion {
|
146
|
+
using PendingCompletion::PendingCompletion;
|
147
|
+
|
148
|
+
absl::string_view name() const override { return "receive_message"; }
|
149
|
+
|
150
|
+
MessageHandle IntoMessageHandle() {
|
151
|
+
return GetContext<Arena>()->MakePooled<Message>(std::move(*payload),
|
152
|
+
flags);
|
153
|
+
}
|
154
|
+
|
155
|
+
absl::optional<SliceBuffer> payload;
|
156
|
+
uint32_t flags;
|
157
|
+
};
|
158
|
+
|
159
|
+
// A pending receive metadata.
|
160
|
+
struct PendingReceiveMetadata : public PendingCompletion {
|
161
|
+
using PendingCompletion::PendingCompletion;
|
162
|
+
|
163
|
+
Arena::PoolPtr<grpc_metadata_batch> metadata =
|
164
|
+
GetContext<Arena>()->MakePooled<grpc_metadata_batch>(
|
165
|
+
GetContext<Arena>());
|
166
|
+
|
167
|
+
protected:
|
168
|
+
~PendingReceiveMetadata() = default;
|
169
|
+
};
|
170
|
+
|
171
|
+
struct PendingReceiveInitialMetadata final : public PendingReceiveMetadata {
|
172
|
+
using PendingReceiveMetadata::PendingReceiveMetadata;
|
173
|
+
absl::string_view name() const override {
|
174
|
+
return "receive_initial_metadata";
|
175
|
+
}
|
176
|
+
};
|
177
|
+
|
178
|
+
struct PendingReceiveTrailingMetadata final : public PendingReceiveMetadata {
|
179
|
+
using PendingReceiveMetadata::PendingReceiveMetadata;
|
180
|
+
absl::string_view name() const override {
|
181
|
+
return "receive_trailing_metadata";
|
182
|
+
}
|
183
|
+
};
|
184
|
+
|
185
|
+
// Pending sends in a batch
|
186
|
+
struct PendingSends final : public PendingCompletion {
|
187
|
+
using PendingCompletion::PendingCompletion;
|
188
|
+
|
189
|
+
absl::string_view name() const override { return "sends"; }
|
190
|
+
|
191
|
+
MessageHandle send_message;
|
192
|
+
Arena::PoolPtr<grpc_metadata_batch> send_initial_metadata;
|
193
|
+
Arena::PoolPtr<grpc_metadata_batch> send_trailing_metadata;
|
194
|
+
bool trailing_metadata_sent = false;
|
195
|
+
};
|
196
|
+
|
197
|
+
// One outstanding batch.
|
198
|
+
struct Batch final {
|
199
|
+
Batch(grpc_transport_stream_op_batch_payload* payload,
|
200
|
+
grpc_stream_refcount* stream_refcount);
|
201
|
+
~Batch();
|
202
|
+
Batch(const Batch&) = delete;
|
203
|
+
Batch& operator=(const Batch&) = delete;
|
204
|
+
void IncrementRefCount() { ++refs; }
|
205
|
+
void Unref() {
|
206
|
+
if (--refs == 0) party->arena()->DeletePooled(this);
|
207
|
+
}
|
208
|
+
RefCountedPtr<Batch> Ref() {
|
209
|
+
IncrementRefCount();
|
210
|
+
return RefCountedPtr<Batch>(this);
|
211
|
+
}
|
212
|
+
// Get an initialized pending completion.
|
213
|
+
// There are four pending completions potentially contained within a batch.
|
214
|
+
// They can be rather large so we don't create all of them always. Instead,
|
215
|
+
// we dynamically create them on the arena as needed.
|
216
|
+
// This method either returns the existing completion in a batch if that
|
217
|
+
// completion has already been initialized, or it creates a new completion
|
218
|
+
// and returns that.
|
219
|
+
template <typename T>
|
220
|
+
T* GetInitializedCompletion(T*(Batch::*field)) {
|
221
|
+
if (this->*field != nullptr) return this->*field;
|
222
|
+
this->*field = party->arena()->NewPooled<T>(Ref());
|
223
|
+
if (grpc_call_trace.enabled()) {
|
224
|
+
gpr_log(GPR_DEBUG, "%s[connected] Add batch closure for %s @ %s",
|
225
|
+
Activity::current()->DebugTag().c_str(),
|
226
|
+
std::string((this->*field)->name()).c_str(),
|
227
|
+
(this->*field)->on_done_closure.DebugString().c_str());
|
228
|
+
}
|
229
|
+
return this->*field;
|
230
|
+
}
|
231
|
+
// grpc_transport_perform_stream_op on target.stream
|
232
|
+
void PerformWith(Target target);
|
233
|
+
// Take a promise, and return a promise that holds a ref on this batch until
|
234
|
+
// the promise completes or is cancelled.
|
235
|
+
template <typename P>
|
236
|
+
auto RefUntil(P promise) {
|
237
|
+
return [self = Ref(), promise = std::move(promise)]() mutable {
|
238
|
+
return promise();
|
239
|
+
};
|
240
|
+
}
|
241
|
+
|
242
|
+
grpc_transport_stream_op_batch batch;
|
243
|
+
PendingReceiveMessage* pending_receive_message = nullptr;
|
244
|
+
PendingReceiveInitialMetadata* pending_receive_initial_metadata = nullptr;
|
245
|
+
PendingReceiveTrailingMetadata* pending_receive_trailing_metadata = nullptr;
|
246
|
+
PendingSends* pending_sends = nullptr;
|
247
|
+
const RefCountedPtr<Party> party;
|
248
|
+
grpc_stream_refcount* const stream_refcount;
|
249
|
+
uint8_t refs = 0;
|
250
|
+
};
|
251
|
+
|
252
|
+
// Get a batch for the given target.
|
253
|
+
// Currently: if the current batch is for this target, return it - otherwise
|
254
|
+
// flush the batch and start a new one (and return that).
|
255
|
+
// This function may change in the future to allow multiple batches to be
|
256
|
+
// building at once (if that turns out to be useful for hedging).
|
257
|
+
Batch* GetBatch(Target target);
|
258
|
+
// Flush the current batch down to the transport.
|
259
|
+
void FlushBatch();
|
260
|
+
// Create a cancel batch with its own payload.
|
261
|
+
Batch* MakeCancel(grpc_stream_refcount* stream_refcount, absl::Status status);
|
262
|
+
|
263
|
+
// Note: we don't distinguish between client and server metadata here.
|
264
|
+
// At the time of writing they're both the same thing - and it's unclear
|
265
|
+
// whether we'll get to separate them prior to batches going away or not.
|
266
|
+
// So for now we claim YAGNI and just do the simplest possible implementation.
|
267
|
+
auto SendInitialMetadata(Target target,
|
268
|
+
Arena::PoolPtr<grpc_metadata_batch> md);
|
269
|
+
auto ReceiveInitialMetadata(Target target);
|
270
|
+
auto ReceiveTrailingMetadata(Target target);
|
271
|
+
|
272
|
+
// Combine send status and server metadata into a final status to report back
|
273
|
+
// to the containing call.
|
274
|
+
static ServerMetadataHandle CompleteSendServerTrailingMetadata(
|
275
|
+
ServerMetadataHandle sent_metadata, absl::Status send_result,
|
276
|
+
bool actually_sent);
|
277
|
+
|
278
|
+
grpc_transport_stream_op_batch_payload* const payload_;
|
279
|
+
absl::optional<Target> target_;
|
280
|
+
Batch* batch_ = nullptr;
|
281
|
+
};
|
282
|
+
|
283
|
+
inline auto BatchBuilder::SendMessage(Target target, MessageHandle message) {
|
284
|
+
if (grpc_call_trace.enabled()) {
|
285
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue send message: %s",
|
286
|
+
Activity::current()->DebugTag().c_str(),
|
287
|
+
message->DebugString().c_str());
|
288
|
+
}
|
289
|
+
auto* batch = GetBatch(target);
|
290
|
+
auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
|
291
|
+
batch->batch.on_complete = &pc->on_done_closure;
|
292
|
+
batch->batch.send_message = true;
|
293
|
+
payload_->send_message.send_message = message->payload();
|
294
|
+
payload_->send_message.flags = message->flags();
|
295
|
+
pc->send_message = std::move(message);
|
296
|
+
return batch->RefUntil(pc->done_latch.WaitAndCopy());
|
297
|
+
}
|
298
|
+
|
299
|
+
inline auto BatchBuilder::SendInitialMetadata(
|
300
|
+
Target target, Arena::PoolPtr<grpc_metadata_batch> md) {
|
301
|
+
if (grpc_call_trace.enabled()) {
|
302
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue send initial metadata: %s",
|
303
|
+
Activity::current()->DebugTag().c_str(), md->DebugString().c_str());
|
304
|
+
}
|
305
|
+
auto* batch = GetBatch(target);
|
306
|
+
auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
|
307
|
+
batch->batch.on_complete = &pc->on_done_closure;
|
308
|
+
batch->batch.send_initial_metadata = true;
|
309
|
+
payload_->send_initial_metadata.send_initial_metadata = md.get();
|
310
|
+
pc->send_initial_metadata = std::move(md);
|
311
|
+
return batch->RefUntil(pc->done_latch.WaitAndCopy());
|
312
|
+
}
|
313
|
+
|
314
|
+
inline auto BatchBuilder::SendClientInitialMetadata(
|
315
|
+
Target target, ClientMetadataHandle metadata) {
|
316
|
+
return SendInitialMetadata(target, std::move(metadata));
|
317
|
+
}
|
318
|
+
|
319
|
+
inline auto BatchBuilder::SendClientTrailingMetadata(Target target) {
|
320
|
+
if (grpc_call_trace.enabled()) {
|
321
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue send trailing metadata",
|
322
|
+
Activity::current()->DebugTag().c_str());
|
323
|
+
}
|
324
|
+
auto* batch = GetBatch(target);
|
325
|
+
auto* pc = batch->GetInitializedCompletion(&Batch::pending_sends);
|
326
|
+
batch->batch.on_complete = &pc->on_done_closure;
|
327
|
+
batch->batch.send_trailing_metadata = true;
|
328
|
+
auto metadata =
|
329
|
+
GetContext<Arena>()->MakePooled<grpc_metadata_batch>(GetContext<Arena>());
|
330
|
+
payload_->send_trailing_metadata.send_trailing_metadata = metadata.get();
|
331
|
+
payload_->send_trailing_metadata.sent = nullptr;
|
332
|
+
pc->send_trailing_metadata = std::move(metadata);
|
333
|
+
return batch->RefUntil(pc->done_latch.WaitAndCopy());
|
334
|
+
}
|
335
|
+
|
336
|
+
inline auto BatchBuilder::SendServerInitialMetadata(
|
337
|
+
Target target, ServerMetadataHandle metadata) {
|
338
|
+
return SendInitialMetadata(target, std::move(metadata));
|
339
|
+
}
|
340
|
+
|
341
|
+
inline auto BatchBuilder::SendServerTrailingMetadata(
|
342
|
+
Target target, ServerMetadataHandle metadata,
|
343
|
+
bool convert_to_cancellation) {
|
344
|
+
if (grpc_call_trace.enabled()) {
|
345
|
+
gpr_log(GPR_DEBUG, "%s[connected] %s: %s",
|
346
|
+
Activity::current()->DebugTag().c_str(),
|
347
|
+
convert_to_cancellation ? "Send trailing metadata as cancellation"
|
348
|
+
: "Queue send trailing metadata",
|
349
|
+
metadata->DebugString().c_str());
|
350
|
+
}
|
351
|
+
Batch* batch;
|
352
|
+
PendingSends* pc;
|
353
|
+
if (convert_to_cancellation) {
|
354
|
+
const auto status_code =
|
355
|
+
metadata->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
356
|
+
auto status = grpc_error_set_int(
|
357
|
+
absl::Status(static_cast<absl::StatusCode>(status_code),
|
358
|
+
metadata->GetOrCreatePointer(GrpcMessageMetadata())
|
359
|
+
->as_string_view()),
|
360
|
+
StatusIntProperty::kRpcStatus, status_code);
|
361
|
+
batch = MakeCancel(target.stream_refcount, std::move(status));
|
362
|
+
pc = batch->GetInitializedCompletion(&Batch::pending_sends);
|
363
|
+
} else {
|
364
|
+
batch = GetBatch(target);
|
365
|
+
pc = batch->GetInitializedCompletion(&Batch::pending_sends);
|
366
|
+
batch->batch.send_trailing_metadata = true;
|
367
|
+
payload_->send_trailing_metadata.send_trailing_metadata = metadata.get();
|
368
|
+
payload_->send_trailing_metadata.sent = &pc->trailing_metadata_sent;
|
369
|
+
}
|
370
|
+
batch->batch.on_complete = &pc->on_done_closure;
|
371
|
+
pc->send_trailing_metadata = std::move(metadata);
|
372
|
+
auto promise = batch->RefUntil(
|
373
|
+
Map(pc->done_latch.WaitAndCopy(), [pc](absl::Status status) {
|
374
|
+
return CompleteSendServerTrailingMetadata(
|
375
|
+
std::move(pc->send_trailing_metadata), std::move(status),
|
376
|
+
pc->trailing_metadata_sent);
|
377
|
+
}));
|
378
|
+
if (convert_to_cancellation) {
|
379
|
+
batch->PerformWith(target);
|
380
|
+
}
|
381
|
+
return promise;
|
382
|
+
}
|
383
|
+
|
384
|
+
inline auto BatchBuilder::ReceiveMessage(Target target) {
|
385
|
+
if (grpc_call_trace.enabled()) {
|
386
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue receive message",
|
387
|
+
Activity::current()->DebugTag().c_str());
|
388
|
+
}
|
389
|
+
auto* batch = GetBatch(target);
|
390
|
+
auto* pc = batch->GetInitializedCompletion(&Batch::pending_receive_message);
|
391
|
+
batch->batch.recv_message = true;
|
392
|
+
payload_->recv_message.recv_message_ready = &pc->on_done_closure;
|
393
|
+
payload_->recv_message.recv_message = &pc->payload;
|
394
|
+
payload_->recv_message.flags = &pc->flags;
|
395
|
+
return batch->RefUntil(
|
396
|
+
Map(pc->done_latch.Wait(),
|
397
|
+
[pc](absl::Status status)
|
398
|
+
-> absl::StatusOr<absl::optional<MessageHandle>> {
|
399
|
+
if (!status.ok()) return status;
|
400
|
+
if (!pc->payload.has_value()) return absl::nullopt;
|
401
|
+
return pc->IntoMessageHandle();
|
402
|
+
}));
|
403
|
+
}
|
404
|
+
|
405
|
+
inline auto BatchBuilder::ReceiveInitialMetadata(Target target) {
|
406
|
+
if (grpc_call_trace.enabled()) {
|
407
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue receive initial metadata",
|
408
|
+
Activity::current()->DebugTag().c_str());
|
409
|
+
}
|
410
|
+
auto* batch = GetBatch(target);
|
411
|
+
auto* pc =
|
412
|
+
batch->GetInitializedCompletion(&Batch::pending_receive_initial_metadata);
|
413
|
+
batch->batch.recv_initial_metadata = true;
|
414
|
+
payload_->recv_initial_metadata.recv_initial_metadata_ready =
|
415
|
+
&pc->on_done_closure;
|
416
|
+
payload_->recv_initial_metadata.recv_initial_metadata = pc->metadata.get();
|
417
|
+
return batch->RefUntil(
|
418
|
+
Map(pc->done_latch.Wait(),
|
419
|
+
[pc](absl::Status status) -> absl::StatusOr<ClientMetadataHandle> {
|
420
|
+
if (!status.ok()) return status;
|
421
|
+
return std::move(pc->metadata);
|
422
|
+
}));
|
423
|
+
}
|
424
|
+
|
425
|
+
inline auto BatchBuilder::ReceiveClientInitialMetadata(Target target) {
|
426
|
+
return ReceiveInitialMetadata(target);
|
427
|
+
}
|
428
|
+
|
429
|
+
inline auto BatchBuilder::ReceiveServerInitialMetadata(Target target) {
|
430
|
+
return ReceiveInitialMetadata(target);
|
431
|
+
}
|
432
|
+
|
433
|
+
inline auto BatchBuilder::ReceiveTrailingMetadata(Target target) {
|
434
|
+
if (grpc_call_trace.enabled()) {
|
435
|
+
gpr_log(GPR_DEBUG, "%s[connected] Queue receive trailing metadata",
|
436
|
+
Activity::current()->DebugTag().c_str());
|
437
|
+
}
|
438
|
+
auto* batch = GetBatch(target);
|
439
|
+
auto* pc = batch->GetInitializedCompletion(
|
440
|
+
&Batch::pending_receive_trailing_metadata);
|
441
|
+
batch->batch.recv_trailing_metadata = true;
|
442
|
+
payload_->recv_trailing_metadata.recv_trailing_metadata_ready =
|
443
|
+
&pc->on_done_closure;
|
444
|
+
payload_->recv_trailing_metadata.recv_trailing_metadata = pc->metadata.get();
|
445
|
+
payload_->recv_trailing_metadata.collect_stats =
|
446
|
+
&GetContext<CallContext>()->call_stats()->transport_stream_stats;
|
447
|
+
return batch->RefUntil(
|
448
|
+
Map(pc->done_latch.Wait(),
|
449
|
+
[pc](absl::Status status) -> absl::StatusOr<ServerMetadataHandle> {
|
450
|
+
if (!status.ok()) return status;
|
451
|
+
return std::move(pc->metadata);
|
452
|
+
}));
|
453
|
+
}
|
454
|
+
|
455
|
+
inline auto BatchBuilder::ReceiveClientTrailingMetadata(Target target) {
|
456
|
+
return ReceiveTrailingMetadata(target);
|
457
|
+
}
|
458
|
+
|
459
|
+
inline auto BatchBuilder::ReceiveServerTrailingMetadata(Target target) {
|
460
|
+
return ReceiveTrailingMetadata(target);
|
461
|
+
}
|
462
|
+
|
463
|
+
template <>
|
464
|
+
struct ContextType<BatchBuilder> {};
|
465
|
+
|
466
|
+
} // namespace grpc_core
|
467
|
+
|
468
|
+
#endif // GRPC_SRC_CORE_LIB_TRANSPORT_BATCH_BUILDER_H
|