grpc 1.69.0 → 1.70.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +251 -249
- data/include/grpc/support/atm.h +0 -13
- data/src/core/call/request_buffer.cc +224 -0
- data/src/core/call/request_buffer.h +192 -0
- data/src/core/client_channel/client_channel.cc +2 -3
- data/src/core/client_channel/client_channel_args.h +21 -0
- data/src/core/client_channel/client_channel_filter.h +1 -3
- data/src/core/client_channel/retry_interceptor.cc +406 -0
- data/src/core/client_channel/retry_interceptor.h +157 -0
- data/src/core/client_channel/retry_service_config.h +13 -0
- data/src/core/client_channel/retry_throttle.cc +33 -18
- data/src/core/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +596 -94
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +189 -13
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -3
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +3 -1
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +66 -36
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +19 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +116 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +67 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +12 -8
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +228 -21
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +6 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +7 -106
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +7 -28
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +85 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +25 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +152 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +40 -10
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +135 -4
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +41 -9
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +0 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +3 -2
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +60 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +13 -2
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +102 -24
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +28 -19
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +251 -18
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +41 -16
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +2 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +11 -10
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +418 -413
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +161 -153
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +267 -261
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +29 -19
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +58 -65
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +73 -63
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +49 -48
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +117 -100
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +905 -897
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +460 -457
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +95 -95
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +202 -191
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +148 -135
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +23 -22
- data/src/core/filter/filter_args.h +112 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +1 -1
- data/src/core/lib/channel/promise_based_filter.h +5 -79
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +14 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +1 -0
- data/src/core/lib/experiments/experiments.cc +90 -39
- data/src/core/lib/experiments/experiments.h +43 -24
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -1
- data/src/core/lib/promise/activity.cc +2 -0
- data/src/core/lib/promise/activity.h +29 -8
- data/src/core/lib/promise/map.h +42 -0
- data/src/core/lib/promise/party.cc +36 -1
- data/src/core/lib/promise/party.h +13 -5
- data/src/core/lib/promise/sleep.h +1 -0
- data/src/core/lib/promise/status_flag.h +10 -0
- data/src/core/lib/resource_quota/arena.h +8 -0
- data/src/core/lib/resource_quota/connection_quota.h +4 -0
- data/src/core/lib/surface/call_utils.h +2 -0
- data/src/core/lib/surface/client_call.cc +43 -35
- data/src/core/lib/surface/client_call.h +5 -0
- data/src/core/lib/surface/event_string.cc +7 -1
- data/src/core/lib/surface/init_internally.h +13 -2
- data/src/core/lib/surface/server_call.cc +100 -85
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/call_filters.cc +10 -4
- data/src/core/lib/transport/call_filters.h +8 -0
- data/src/core/lib/transport/call_spine.cc +36 -71
- data/src/core/lib/transport/call_spine.h +131 -7
- data/src/core/lib/transport/call_state.h +132 -39
- data/src/core/lib/transport/interception_chain.cc +8 -0
- data/src/core/lib/transport/interception_chain.h +9 -0
- data/src/core/load_balancing/endpoint_list.cc +10 -0
- data/src/core/load_balancing/endpoint_list.h +13 -6
- data/src/core/load_balancing/lb_policy.h +0 -8
- data/src/core/load_balancing/pick_first/pick_first.cc +89 -56
- data/src/core/load_balancing/ring_hash/ring_hash.cc +158 -70
- data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -14
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +12 -15
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +4 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +139 -135
- data/src/core/resolver/xds/xds_dependency_manager.h +24 -18
- data/src/core/resolver/xds/xds_resolver.cc +28 -47
- data/src/core/server/server.cc +290 -24
- data/src/core/server/server.h +199 -61
- data/src/core/server/xds_server_config_fetcher.cc +78 -142
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/util/backoff.cc +15 -4
- data/src/core/util/http_client/httpcli.cc +66 -18
- data/src/core/util/http_client/httpcli.h +14 -4
- data/src/core/util/matchers.h +5 -10
- data/src/core/util/ref_counted.h +1 -0
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/useful.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +54 -23
- data/src/core/xds/grpc/xds_metadata.h +8 -0
- data/src/core/xds/xds_client/xds_api.cc +0 -223
- data/src/core/xds/xds_client/xds_api.h +1 -133
- data/src/core/xds/xds_client/xds_client.cc +599 -466
- data/src/core/xds/xds_client/xds_client.h +107 -26
- data/src/core/xds/xds_client/xds_resource_type_impl.h +10 -5
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bitstr.c → a_bitstr.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_d2i_fp.c → a_d2i_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_dup.c → a_dup.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_i2d_fp.c → a_i2d_fp.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_int.c → a_int.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_mbstr.c → a_mbstr.cc} +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_object.c → a_object.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strnid.c → a_strnid.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_type.c → a_type.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_lib.c → asn1_lib.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn_pack.c → asn_pack.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{posix_time.c → posix_time.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_dec.c → tasn_dec.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_enc.c → tasn_enc.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_fre.c → tasn_fre.cc} +14 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_new.c → tasn_new.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_utl.c → tasn_utl.cc} +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/base64/{base64.c → base64.cc} +9 -12
- data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio.c → bio.cc} +32 -58
- data/third_party/boringssl-with-bazel/src/crypto/bio/{bio_mem.c → bio_mem.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/{connect.c → connect.cc} +24 -16
- data/third_party/boringssl-with-bazel/src/crypto/bio/{file.c → file.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/{pair.c → pair.cc} +22 -20
- data/third_party/boringssl-with-bazel/src/crypto/bio/{printf.c → printf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/{socket_helper.c → socket_helper.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/blake2/{blake2.c → blake2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{bn_asn1.c → bn_asn1.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/{convert.c → convert.cc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/buf/{buf.c → buf.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{asn1_compat.c → asn1_compat.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{ber.c → ber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbb.c → cbb.cc} +33 -49
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{cbs.c → cbs.cc} +20 -27
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/{unicode.c → unicode.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/{chacha.c → chacha.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesctrhmac.c → e_aesctrhmac.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_aesgcmsiv.c → e_aesgcmsiv.cc} +23 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_chacha20poly1305.c → e_chacha20poly1305.cc} +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_des.c → e_des.cc} +61 -49
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_null.c → e_null.cc} +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc2.c → e_rc2.cc} +23 -19
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_rc4.c → e_rc4.cc} +10 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{e_tls.c → e_tls.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/{conf.c → conf.cc} +17 -14
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_apple.c → cpu_aarch64_apple.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_fuchsia.c → cpu_aarch64_fuchsia.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_linux.c → cpu_aarch64_linux.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_openbsd.c → cpu_aarch64_openbsd.cc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_sysreg.c → cpu_aarch64_sysreg.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_win.c → cpu_aarch64_win.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_freebsd.c → cpu_arm_freebsd.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm_linux.c → cpu_arm_linux.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{cpu_intel.c → cpu_intel.cc} +47 -32
- data/third_party/boringssl-with-bazel/src/crypto/{crypto.c → crypto.cc} +6 -11
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519.c → curve25519.cc} +28 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{curve25519_64_adx.c → curve25519_64_adx.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/{spake25519.c → spake25519.cc} +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{dh_asn1.c → dh_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/{digest_extra.c → digest_extra.cc} +113 -31
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa.c → dsa.cc} +153 -154
- data/third_party/boringssl-with-bazel/src/crypto/dsa/{dsa_asn1.c → dsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_asn1.c → ec_asn1.cc} +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{ec_derive.c → ec_derive.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/{hash_to_curve.c → hash_to_curve.cc} +66 -64
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/{ecdsa_asn1.c → ecdsa_asn1.cc} +15 -25
- data/third_party/boringssl-with-bazel/src/crypto/engine/{engine.c → engine.cc} +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/err/{err.c → err.cc} +24 -27
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp.c → evp.cc} +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_ctx.c → evp_ctx.cc} +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh.c → p_dh.cc} +23 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dh_asn1.c → p_dh_asn1.cc} +38 -21
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_dsa_asn1.c → p_dsa_asn1.cc} +19 -24
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec.c → p_ec.cc} +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ec_asn1.c → p_ec_asn1.cc} +20 -20
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519.c → p_ed25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_ed25519_asn1.c → p_ed25519_asn1.cc} +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_hkdf.c → p_hkdf.cc} +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa.c → p_rsa.cc} +38 -37
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_rsa_asn1.c → p_rsa_asn1.cc} +16 -18
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519.c → p_x25519.cc} +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/evp/{p_x25519_asn1.c → p_x25519_asn1.cc} +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/evp/{pbkdf.c → pbkdf.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/{print.c → print.cc} +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/{scrypt.c → scrypt.cc} +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/{ex_data.c → ex_data.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c.inc → aes_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c.inc → key_wrap.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{bcm.c → bcm.cc} +96 -101
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +165 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c.inc → add.cc.inc} +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c.inc → x86_64-gcc.cc.inc} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c.inc → bn.cc.inc} +12 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c.inc → ctx.cc.inc} +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c.inc → div.cc.inc} +29 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c.inc → div_extra.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c.inc → exponentiation.cc.inc} +22 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c.inc → gcd.cc.inc} +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c.inc → gcd_extra.cc.inc} +33 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c.inc → montgomery.cc.inc} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c.inc → mul.cc.inc} +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c.inc → prime.cc.inc} +31 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c.inc → shift.cc.inc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c.inc → aead.cc.inc} +18 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c.inc → cipher.cc.inc} +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c.inc → e_aes.cc.inc} +46 -54
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c.inc → cmac.cc.inc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +14 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c.inc → dh.cc.inc} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c.inc → digest.cc.inc} +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c.inc → digests.cc.inc} +29 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c.inc → digestsign.cc.inc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c.inc → ec.cc.inc} +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c.inc → ec_key.cc.inc} +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c.inc → felem.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c.inc → oct.cc.inc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c.inc → p224-64.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c.inc → p256-nistz.cc.inc} +15 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c.inc → p256.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c.inc → scalar.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c.inc → simple_mul.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c.inc → util.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c.inc → wnaf.cc.inc} +24 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c.inc → ecdh.cc.inc} +14 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c.inc → ecdsa.cc.inc} +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{fips_shared_support.c → fips_shared_support.cc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c.inc → hkdf.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c.inc → hmac.cc.inc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c.inc → gcm.cc.inc} +69 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c.inc → gcm_nohw.cc.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +53 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c.inc → polyval.cc.inc} +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c.inc → ctrdrbg.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c.inc → rand.cc.inc} +20 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c.inc → blinding.cc.inc} +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c.inc → padding.cc.inc} +21 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c.inc → rsa.cc.inc} +77 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c.inc → rsa_impl.cc.inc} +50 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c.inc → fips.cc.inc} +14 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c.inc → self_check.cc.inc} +56 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c.inc → service_indicator.cc.inc} +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c.inc → sha1.cc.inc} +26 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c.inc → sha256.cc.inc} +37 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c.inc → sha512.cc.inc} +48 -76
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/hpke/{hpke.c → hpke.cc} +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/hrss/{hrss.c → hrss.cc} +53 -110
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +191 -248
- data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/keccak/{keccak.c → keccak.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/kyber/{kyber.c → kyber.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/lhash/{lhash.c → lhash.cc} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md4/md4.c.inc → md4/md4.cc} +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5 → md5}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/md5/md5.c.inc → md5/md5.cc} +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/{mem.c → mem.cc} +34 -22
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/{mldsa.c → mldsa.cc} +646 -543
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/{obj.c → obj.cc} +27 -30
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_info.c → pem_info.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_lib.c → pem_lib.cc} +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_oth.c → pem_oth.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7.c → pkcs7.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/{pkcs7_x509.c → pkcs7_x509.cc} +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{p5_pbev2.c → p5_pbev2.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8.c → pkcs8.cc} +159 -158
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/{pkcs8_x509.c → pkcs8_x509.cc} +90 -97
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305.c → poly1305.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_arm.c → poly1305_arm.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/{poly1305_vec.c → poly1305_vec.cc} +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/{pool.c → pool.cc} +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{deterministic.c → deterministic.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fork_detect.c → fork_detect.cc} +11 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{forkunsafe.c → forkunsafe.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{getentropy.c → getentropy.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{ios.c → ios.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{passive.c → passive.cc} +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{rand_extra.c → rand_extra.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{trusty.c → trusty.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{urandom.c → urandom.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{windows.c → windows.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{refcount.c → refcount.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_asn1.c → rsa_asn1.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_crypt.c → rsa_crypt.cc} +81 -78
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +17 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/{siphash.c → siphash.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/address.h +123 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.cc +169 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +63 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.cc +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +70 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/params.h +83 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +307 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +173 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +85 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.cc +171 -0
- data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +50 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/{stack.c → stack.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/{thread_none.c → thread_none.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{thread_pthread.c → thread_pthread.cc} +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/{thread_win.c → thread_win.cc} +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{pmbtoken.c → pmbtoken.cc} +146 -158
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{trust_token.c → trust_token.cc} +19 -21
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/{voprf.c → voprf.cc} +165 -169
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_digest.c → a_digest.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_sign.c → a_sign.cc} +37 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/{a_verify.c → a_verify.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{algorithm.c → algorithm.cc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{asn1_gen.c → asn1_gen.cc} +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{by_dir.c → by_dir.cc} +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{policy.c → policy.cc} +188 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/{rsa_pss.c → rsa_pss.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akey.c → v3_akey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_alt.c → v3_alt.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bcons.c → v3_bcons.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_bitst.c → v3_bitst.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_conf.c → v3_conf.cc} +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_cpols.c → v3_cpols.cc} +47 -41
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_crld.c → v3_crld.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_enum.c → v3_enum.cc} +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_extku.c → v3_extku.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_genn.c → v3_genn.cc} +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ia5.c → v3_ia5.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_info.c → v3_info.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_int.c → v3_int.cc} +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_lib.c → v3_lib.cc} +9 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ncons.c → v3_ncons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_ocsp.c → v3_ocsp.cc} +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pcons.c → v3_pcons.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_pmaps.c → v3_pmaps.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_prn.c → v3_prn.cc} +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_purp.c → v3_purp.cc} +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_skey.c → v3_skey.cc} +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_utl.c → v3_utl.cc} +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_att.c → x509_att.cc} +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_lu.c → x509_lu.cc} +6 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_v3.c → x509_v3.cc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vfy.c → x509_vfy.cc} +216 -212
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_vpm.c → x509_vpm.cc} +55 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x509spki.c → x509spki.cc} +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_all.c → x_all.cc} +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_crl.c → x_crl.cc} +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_name.c → x_name.cc} +39 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_pubkey.c → x_pubkey.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509.c → x_x509.cc} +48 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/{x_x509a.c → x_x509a.cc} +4 -2
- data/third_party/boringssl-with-bazel/src/gen/crypto/{err_data.c → err_data.cc} +359 -358
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +237 -275
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +13 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +17 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +8 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +2 -40
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +133 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +160 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -6
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +667 -322
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +116 -119
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +163 -21
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +4 -12
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +94 -49
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +296 -198
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +23 -14
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +363 -343
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +48 -58
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +44 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +65 -58
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +910 -356
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +29 -41
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +13 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +90 -183
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +38 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +103 -44
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +210 -220
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +70 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +20 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +146 -169
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +79 -95
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +91 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +30 -16
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +51 -56
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +22 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +43 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +63 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +204 -121
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +86 -59
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +51 -62
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +37 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
- metadata +339 -339
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -408
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
- data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
- data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
- data/src/core/util/atm.cc +0 -34
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
- data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
- data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
- data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
- data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
- data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
- data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
- data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bool.c → a_bool.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_gentm.c → a_gentm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_octet.c → a_octet.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_utctm.c → a_utctm.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_par.c → asn1_par.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_int.c → f_int.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_string.c → f_string.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_typ.c → tasn_typ.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{errno.c → errno.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{hexdump.c → hexdump.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/bio/{socket.c → socket.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{cipher_extra.c → cipher_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{derive_key.c → derive_key.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{tls_cbc.c → tls_cbc.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{params.c → params.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/{ecdh_extra.c → ecdh_extra.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/evp/{sign.c → sign.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c.inc → aes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c.inc → mode_wrappers.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c.inc → bytes.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c.inc → cmp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c.inc → generic.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c.inc → jacobi.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c.inc → montgomery_inv.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c.inc → random.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c.inc → rsaz_exp.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c.inc → sqrt.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c.inc → e_aesccm.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c.inc → check.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c.inc → ec_montgomery.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c.inc → simple.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c.inc → cbc.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c.inc → cfb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c.inc → ctr.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c.inc → ofb.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c.inc → kdf.cc.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/obj/{obj_xref.c → obj_xref.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_all.c → pem_all.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pk8.c → pem_pk8.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_pkey.c → pem_pkey.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_x509.c → pem_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_xaux.c → pem_xaux.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rc4/{rc4.c → rc4.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_print.c → rsa_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/{thread.c → thread.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{i2d_pr.c → i2d_pr.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_crl.c → t_crl.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509a.c → t_x509a.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akeya.c → v3_akeya.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509.c → x509.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_d2.c → x509_d2.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_def.c → x509_def.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509rset.c → x509rset.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_algor.c → x_algor.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_attrib.c → x_attrib.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_exten.c → x_exten.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_req.c → x_req.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_sig.c → x_sig.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_spki.c → x_spki.cc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_val.c → x_val.cc} +0 -0
@@ -82,6 +82,7 @@
|
|
82
82
|
#include "src/core/lib/transport/transport.h"
|
83
83
|
#include "src/core/server/server.h"
|
84
84
|
#include "src/core/util/debug_location.h"
|
85
|
+
#include "src/core/util/match.h"
|
85
86
|
#include "src/core/util/orphanable.h"
|
86
87
|
#include "src/core/util/ref_counted_ptr.h"
|
87
88
|
#include "src/core/util/status_helper.h"
|
@@ -107,24 +108,26 @@ const char kUnixUriPrefix[] = "unix:";
|
|
107
108
|
const char kUnixAbstractUriPrefix[] = "unix-abstract:";
|
108
109
|
const char kVSockUriPrefix[] = "vsock:";
|
109
110
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
111
|
+
namespace {
|
112
|
+
Timestamp GetConnectionDeadline(const ChannelArgs& args) {
|
113
|
+
return Timestamp::Now() +
|
114
|
+
std::max(
|
115
|
+
Duration::Milliseconds(1),
|
116
|
+
args.GetDurationFromIntMillis(GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS)
|
117
|
+
.value_or(Duration::Minutes(2)));
|
118
|
+
}
|
119
|
+
} // namespace
|
120
|
+
|
115
121
|
using AcceptorPtr = std::unique_ptr<grpc_tcp_server_acceptor, AcceptorDeleter>;
|
116
122
|
|
117
123
|
class Chttp2ServerListener : public Server::ListenerInterface {
|
118
124
|
public:
|
119
125
|
static grpc_error_handle Create(Server* server,
|
120
126
|
const EventEngine::ResolvedAddress& addr,
|
121
|
-
const ChannelArgs& args,
|
122
|
-
Chttp2ServerArgsModifier args_modifier,
|
123
|
-
int* port_num);
|
127
|
+
const ChannelArgs& args, int* port_num);
|
124
128
|
|
125
|
-
static grpc_error_handle CreateWithAcceptor(
|
126
|
-
|
127
|
-
Chttp2ServerArgsModifier args_modifier);
|
129
|
+
static grpc_error_handle CreateWithAcceptor(Server* server, const char* name,
|
130
|
+
const ChannelArgs& args);
|
128
131
|
|
129
132
|
static Chttp2ServerListener* CreateForPassiveListener(
|
130
133
|
Server* server, const ChannelArgs& args,
|
@@ -132,14 +135,12 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
132
135
|
|
133
136
|
// Do not instantiate directly. Use one of the factory methods above.
|
134
137
|
Chttp2ServerListener(Server* server, const ChannelArgs& args,
|
135
|
-
|
136
|
-
grpc_server_config_fetcher* config_fetcher,
|
138
|
+
ServerConfigFetcher* config_fetcher,
|
137
139
|
std::shared_ptr<experimental::PassiveListenerImpl>
|
138
140
|
passive_listener = nullptr);
|
139
141
|
~Chttp2ServerListener() override;
|
140
142
|
|
141
|
-
void Start(
|
142
|
-
const std::vector<grpc_pollset*>* pollsets) override;
|
143
|
+
void Start() override;
|
143
144
|
|
144
145
|
void AcceptConnectedEndpoint(std::unique_ptr<EventEngine::Endpoint> endpoint);
|
145
146
|
|
@@ -147,6 +148,15 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
147
148
|
return channelz_listen_socket_.get();
|
148
149
|
}
|
149
150
|
|
151
|
+
void SetServerListenerState(
|
152
|
+
RefCountedPtr<Server::ListenerState> /*listener_state*/) override {}
|
153
|
+
|
154
|
+
const grpc_resolved_address* resolved_address() const override {
|
155
|
+
// Should only be invoked with experiment server_listener
|
156
|
+
Crash("Illegal");
|
157
|
+
return nullptr;
|
158
|
+
}
|
159
|
+
|
150
160
|
void SetOnDestroyDone(grpc_closure* on_destroy_done) override;
|
151
161
|
|
152
162
|
void Orphan() override;
|
@@ -154,14 +164,13 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
154
164
|
private:
|
155
165
|
friend class experimental::PassiveListenerImpl;
|
156
166
|
|
157
|
-
class ConfigFetcherWatcher
|
158
|
-
: public grpc_server_config_fetcher::WatcherInterface {
|
167
|
+
class ConfigFetcherWatcher : public ServerConfigFetcher::WatcherInterface {
|
159
168
|
public:
|
160
169
|
explicit ConfigFetcherWatcher(RefCountedPtr<Chttp2ServerListener> listener)
|
161
170
|
: listener_(std::move(listener)) {}
|
162
171
|
|
163
172
|
void UpdateConnectionManager(
|
164
|
-
RefCountedPtr<
|
173
|
+
RefCountedPtr<ServerConfigFetcher::ConnectionManager>
|
165
174
|
connection_manager) override;
|
166
175
|
|
167
176
|
void StopServing() override;
|
@@ -267,12 +276,11 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
267
276
|
Server* const server_ = nullptr;
|
268
277
|
grpc_tcp_server* tcp_server_ = nullptr;
|
269
278
|
grpc_resolved_address resolved_address_;
|
270
|
-
Chttp2ServerArgsModifier const args_modifier_;
|
271
279
|
ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
|
272
280
|
ChannelArgs args_;
|
273
281
|
Mutex mu_;
|
274
|
-
RefCountedPtr<
|
275
|
-
|
282
|
+
RefCountedPtr<ServerConfigFetcher::ConnectionManager> connection_manager_
|
283
|
+
ABSL_GUARDED_BY(mu_);
|
276
284
|
// Signals whether grpc_tcp_server_start() has been called.
|
277
285
|
bool started_ ABSL_GUARDED_BY(mu_) = false;
|
278
286
|
// Signals whether grpc_tcp_server_start() has completed.
|
@@ -288,7 +296,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
288
296
|
RefCountedPtr<channelz::ListenSocketNode> channelz_listen_socket_;
|
289
297
|
MemoryQuotaRefPtr memory_quota_;
|
290
298
|
ConnectionQuotaRefPtr connection_quota_;
|
291
|
-
|
299
|
+
ServerConfigFetcher* config_fetcher_ = nullptr;
|
292
300
|
// TODO(yashykt): consider using absl::variant<> to minimize memory usage for
|
293
301
|
// disjoint cases where different fields are used.
|
294
302
|
std::shared_ptr<experimental::PassiveListenerImpl> passive_listener_;
|
@@ -299,9 +307,8 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
299
307
|
//
|
300
308
|
|
301
309
|
void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
|
302
|
-
RefCountedPtr<
|
303
|
-
|
304
|
-
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
310
|
+
RefCountedPtr<ServerConfigFetcher::ConnectionManager> connection_manager) {
|
311
|
+
RefCountedPtr<ServerConfigFetcher::ConnectionManager>
|
305
312
|
connection_manager_to_destroy;
|
306
313
|
class GracefulShutdownExistingConnections {
|
307
314
|
public:
|
@@ -369,14 +376,6 @@ void Chttp2ServerListener::ConfigFetcherWatcher::StopServing() {
|
|
369
376
|
// Chttp2ServerListener::ActiveConnection::HandshakingState
|
370
377
|
//
|
371
378
|
|
372
|
-
Timestamp GetConnectionDeadline(const ChannelArgs& args) {
|
373
|
-
return Timestamp::Now() +
|
374
|
-
std::max(
|
375
|
-
Duration::Milliseconds(1),
|
376
|
-
args.GetDurationFromIntMillis(GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS)
|
377
|
-
.value_or(Duration::Seconds(120)));
|
378
|
-
}
|
379
|
-
|
380
379
|
Chttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState(
|
381
380
|
RefCountedPtr<ActiveConnection> connection_ref,
|
382
381
|
grpc_pollset* accepting_pollset, AcceptorPtr acceptor,
|
@@ -708,11 +707,10 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry() {
|
|
708
707
|
|
709
708
|
grpc_error_handle Chttp2ServerListener::Create(
|
710
709
|
Server* server, const EventEngine::ResolvedAddress& addr,
|
711
|
-
const ChannelArgs& args,
|
712
|
-
int* port_num) {
|
710
|
+
const ChannelArgs& args, int* port_num) {
|
713
711
|
// Create Chttp2ServerListener.
|
714
712
|
OrphanablePtr<Chttp2ServerListener> listener =
|
715
|
-
MakeOrphanable<Chttp2ServerListener>(server, args,
|
713
|
+
MakeOrphanable<Chttp2ServerListener>(server, args,
|
716
714
|
server->config_fetcher());
|
717
715
|
// The tcp_server will be unreffed when the listener is orphaned, which could
|
718
716
|
// be at the end of this function if the listener was not added to the
|
@@ -752,10 +750,9 @@ grpc_error_handle Chttp2ServerListener::Create(
|
|
752
750
|
}
|
753
751
|
|
754
752
|
grpc_error_handle Chttp2ServerListener::CreateWithAcceptor(
|
755
|
-
Server* server, const char* name, const ChannelArgs& args
|
756
|
-
Chttp2ServerArgsModifier args_modifier) {
|
753
|
+
Server* server, const char* name, const ChannelArgs& args) {
|
757
754
|
auto listener = MakeOrphanable<Chttp2ServerListener>(
|
758
|
-
server, args,
|
755
|
+
server, args, server->config_fetcher());
|
759
756
|
grpc_error_handle error = grpc_tcp_server_create(
|
760
757
|
&listener->tcp_server_shutdown_complete_, ChannelArgsEndpointConfig(args),
|
761
758
|
OnAccept, listener.get(), &listener->tcp_server_);
|
@@ -772,9 +769,7 @@ Chttp2ServerListener* Chttp2ServerListener::CreateForPassiveListener(
|
|
772
769
|
std::shared_ptr<experimental::PassiveListenerImpl> passive_listener) {
|
773
770
|
// TODO(hork): figure out how to handle channelz in this case
|
774
771
|
auto listener = MakeOrphanable<Chttp2ServerListener>(
|
775
|
-
server, args,
|
776
|
-
[](const ChannelArgs& args, grpc_error_handle*) { return args; }, nullptr,
|
777
|
-
std::move(passive_listener));
|
772
|
+
server, args, nullptr, std::move(passive_listener));
|
778
773
|
auto listener_ptr = listener.get();
|
779
774
|
server->AddListener(std::move(listener));
|
780
775
|
return listener_ptr;
|
@@ -782,11 +777,9 @@ Chttp2ServerListener* Chttp2ServerListener::CreateForPassiveListener(
|
|
782
777
|
|
783
778
|
Chttp2ServerListener::Chttp2ServerListener(
|
784
779
|
Server* server, const ChannelArgs& args,
|
785
|
-
|
786
|
-
grpc_server_config_fetcher* config_fetcher,
|
780
|
+
ServerConfigFetcher* config_fetcher,
|
787
781
|
std::shared_ptr<experimental::PassiveListenerImpl> passive_listener)
|
788
782
|
: server_(server),
|
789
|
-
args_modifier_(args_modifier),
|
790
783
|
args_(args),
|
791
784
|
memory_quota_(args.GetObject<ResourceQuota>()->memory_quota()),
|
792
785
|
connection_quota_(MakeRefCounted<ConnectionQuota>()),
|
@@ -812,8 +805,7 @@ Chttp2ServerListener::~Chttp2ServerListener() {
|
|
812
805
|
}
|
813
806
|
|
814
807
|
// Server callback: start listening on our ports
|
815
|
-
void Chttp2ServerListener::Start(
|
816
|
-
Server* /*server*/, const std::vector<grpc_pollset*>* /* pollsets */) {
|
808
|
+
void Chttp2ServerListener::Start() {
|
817
809
|
if (config_fetcher_ != nullptr) {
|
818
810
|
auto watcher = std::make_unique<ConfigFetcherWatcher>(
|
819
811
|
RefAsSubclass<Chttp2ServerListener>());
|
@@ -848,6 +840,27 @@ void Chttp2ServerListener::AcceptConnectedEndpoint(
|
|
848
840
|
/*accepting_pollset=*/nullptr, /*acceptor=*/nullptr);
|
849
841
|
}
|
850
842
|
|
843
|
+
namespace {
|
844
|
+
|
845
|
+
ChannelArgs ModifyArgsForConnection(const ChannelArgs& args,
|
846
|
+
grpc_error_handle* error) {
|
847
|
+
auto* server_credentials = args.GetObject<grpc_server_credentials>();
|
848
|
+
if (server_credentials == nullptr) {
|
849
|
+
*error = GRPC_ERROR_CREATE("Could not find server credentials");
|
850
|
+
return args;
|
851
|
+
}
|
852
|
+
auto security_connector = server_credentials->create_security_connector(args);
|
853
|
+
if (security_connector == nullptr) {
|
854
|
+
*error = GRPC_ERROR_CREATE(
|
855
|
+
absl::StrCat("Unable to create secure server with credentials of type ",
|
856
|
+
server_credentials->type().name()));
|
857
|
+
return args;
|
858
|
+
}
|
859
|
+
return args.SetObject(security_connector);
|
860
|
+
}
|
861
|
+
|
862
|
+
} // namespace
|
863
|
+
|
851
864
|
void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
852
865
|
grpc_pollset* accepting_pollset,
|
853
866
|
grpc_tcp_server_acceptor* server_acceptor) {
|
@@ -855,8 +868,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
855
868
|
ChannelArgs args = self->args_;
|
856
869
|
OrphanablePtr<grpc_endpoint> endpoint(tcp);
|
857
870
|
AcceptorPtr acceptor(server_acceptor);
|
858
|
-
RefCountedPtr<
|
859
|
-
connection_manager;
|
871
|
+
RefCountedPtr<ServerConfigFetcher::ConnectionManager> connection_manager;
|
860
872
|
{
|
861
873
|
MutexLock lock(&self->mu_);
|
862
874
|
connection_manager = self->connection_manager_;
|
@@ -875,7 +887,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
875
887
|
return;
|
876
888
|
}
|
877
889
|
grpc_error_handle error;
|
878
|
-
args =
|
890
|
+
args = ModifyArgsForConnection(*args_result, &error);
|
879
891
|
if (!error.ok()) {
|
880
892
|
return;
|
881
893
|
}
|
@@ -953,19 +965,498 @@ void Chttp2ServerListener::Orphan() {
|
|
953
965
|
}
|
954
966
|
|
955
967
|
//
|
956
|
-
//
|
968
|
+
// NewChttp2ServerListener::ActiveConnection::HandshakingState
|
969
|
+
//
|
970
|
+
|
971
|
+
NewChttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState(
|
972
|
+
RefCountedPtr<ActiveConnection> connection_ref, grpc_tcp_server* tcp_server,
|
973
|
+
grpc_pollset* accepting_pollset, AcceptorPtr acceptor,
|
974
|
+
const ChannelArgs& args, OrphanablePtr<grpc_endpoint> endpoint)
|
975
|
+
: connection_(std::move(connection_ref)),
|
976
|
+
tcp_server_(tcp_server),
|
977
|
+
accepting_pollset_(accepting_pollset),
|
978
|
+
acceptor_(std::move(acceptor)),
|
979
|
+
interested_parties_(grpc_pollset_set_create()),
|
980
|
+
deadline_(GetConnectionDeadline(args)),
|
981
|
+
endpoint_(std::move(endpoint)),
|
982
|
+
handshake_mgr_(MakeRefCounted<HandshakeManager>()) {
|
983
|
+
if (accepting_pollset != nullptr) {
|
984
|
+
grpc_pollset_set_add_pollset(interested_parties_, accepting_pollset_);
|
985
|
+
}
|
986
|
+
}
|
987
|
+
|
988
|
+
NewChttp2ServerListener::ActiveConnection::HandshakingState::
|
989
|
+
~HandshakingState() {
|
990
|
+
if (accepting_pollset_ != nullptr) {
|
991
|
+
grpc_pollset_set_del_pollset(interested_parties_, accepting_pollset_);
|
992
|
+
}
|
993
|
+
grpc_pollset_set_destroy(interested_parties_);
|
994
|
+
if (tcp_server_ != nullptr) {
|
995
|
+
grpc_tcp_server_unref(tcp_server_);
|
996
|
+
}
|
997
|
+
}
|
998
|
+
|
999
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::Orphan() {
|
1000
|
+
connection_->work_serializer_.Run(
|
1001
|
+
[this] {
|
1002
|
+
ShutdownLocked(absl::UnavailableError("Listener stopped serving."));
|
1003
|
+
Unref();
|
1004
|
+
},
|
1005
|
+
DEBUG_LOCATION);
|
1006
|
+
}
|
1007
|
+
|
1008
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::StartLocked(
|
1009
|
+
const ChannelArgs& channel_args) {
|
1010
|
+
if (handshake_mgr_ == nullptr) {
|
1011
|
+
// The connection is already shutting down.
|
1012
|
+
return;
|
1013
|
+
}
|
1014
|
+
CoreConfiguration::Get().handshaker_registry().AddHandshakers(
|
1015
|
+
HANDSHAKER_SERVER, channel_args, interested_parties_,
|
1016
|
+
handshake_mgr_.get());
|
1017
|
+
handshake_mgr_->DoHandshake(
|
1018
|
+
std::move(endpoint_), channel_args, deadline_, acceptor_.get(),
|
1019
|
+
[self = Ref()](absl::StatusOr<HandshakerArgs*> result) mutable {
|
1020
|
+
auto* self_ptr = self.get();
|
1021
|
+
self_ptr->connection_->work_serializer_.Run(
|
1022
|
+
[self = std::move(self), result = std::move(result)]() mutable {
|
1023
|
+
self->OnHandshakeDoneLocked(std::move(result));
|
1024
|
+
},
|
1025
|
+
DEBUG_LOCATION);
|
1026
|
+
});
|
1027
|
+
}
|
1028
|
+
|
1029
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::
|
1030
|
+
ShutdownLocked(absl::Status status) {
|
1031
|
+
if (handshake_mgr_ != nullptr) {
|
1032
|
+
handshake_mgr_->Shutdown(std::move(status));
|
1033
|
+
}
|
1034
|
+
}
|
1035
|
+
|
1036
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::
|
1037
|
+
OnTimeoutLocked() {
|
1038
|
+
if (!timer_handle_.has_value()) {
|
1039
|
+
return;
|
1040
|
+
}
|
1041
|
+
timer_handle_.reset();
|
1042
|
+
auto t = absl::get<RefCountedPtr<grpc_chttp2_transport>>(connection_->state_);
|
1043
|
+
t->DisconnectWithError(GRPC_ERROR_CREATE(
|
1044
|
+
"Did not receive HTTP/2 settings before handshake timeout"));
|
1045
|
+
}
|
1046
|
+
|
1047
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::
|
1048
|
+
OnReceiveSettings(void* arg, grpc_error_handle /* error */) {
|
1049
|
+
HandshakingState* self = static_cast<HandshakingState*>(arg);
|
1050
|
+
self->connection_->work_serializer_.Run(
|
1051
|
+
[self] {
|
1052
|
+
if (self->timer_handle_.has_value()) {
|
1053
|
+
self->connection_->listener_state_->event_engine()->Cancel(
|
1054
|
+
*self->timer_handle_);
|
1055
|
+
self->timer_handle_.reset();
|
1056
|
+
}
|
1057
|
+
self->Unref();
|
1058
|
+
},
|
1059
|
+
DEBUG_LOCATION);
|
1060
|
+
}
|
1061
|
+
|
1062
|
+
void NewChttp2ServerListener::ActiveConnection::HandshakingState::
|
1063
|
+
OnHandshakeDoneLocked(absl::StatusOr<HandshakerArgs*> result) {
|
1064
|
+
OrphanablePtr<HandshakingState> handshaking_state_ref;
|
1065
|
+
RefCountedPtr<HandshakeManager> handshake_mgr;
|
1066
|
+
// If the handshaking succeeded but there is no endpoint, then the
|
1067
|
+
// handshaker may have handed off the connection to some external
|
1068
|
+
// code, so we can just clean up here without creating a transport.
|
1069
|
+
if (!connection_->shutdown_ && result.ok() &&
|
1070
|
+
(*result)->endpoint != nullptr) {
|
1071
|
+
RefCountedPtr<Transport> transport =
|
1072
|
+
grpc_create_chttp2_transport((*result)->args,
|
1073
|
+
std::move((*result)->endpoint), false)
|
1074
|
+
->Ref();
|
1075
|
+
grpc_error_handle channel_init_err =
|
1076
|
+
connection_->listener_state_->server()->SetupTransport(
|
1077
|
+
transport.get(), accepting_pollset_, (*result)->args,
|
1078
|
+
grpc_chttp2_transport_get_socket_node(transport.get()));
|
1079
|
+
if (channel_init_err.ok()) {
|
1080
|
+
// Use notify_on_receive_settings callback to enforce the
|
1081
|
+
// handshake deadline.
|
1082
|
+
connection_->state_ =
|
1083
|
+
DownCast<grpc_chttp2_transport*>(transport.get())->Ref();
|
1084
|
+
Ref().release(); // Held by OnReceiveSettings().
|
1085
|
+
GRPC_CLOSURE_INIT(&on_receive_settings_, OnReceiveSettings, this,
|
1086
|
+
grpc_schedule_on_exec_ctx);
|
1087
|
+
grpc_closure* on_close = &connection_->on_close_;
|
1088
|
+
// Refs helds by OnClose()
|
1089
|
+
connection_->Ref().release();
|
1090
|
+
grpc_chttp2_transport_start_reading(
|
1091
|
+
transport.get(), (*result)->read_buffer.c_slice_buffer(),
|
1092
|
+
&on_receive_settings_, nullptr, on_close);
|
1093
|
+
timer_handle_ = connection_->listener_state_->event_engine()->RunAfter(
|
1094
|
+
deadline_ - Timestamp::Now(), [self = Ref()]() mutable {
|
1095
|
+
// HandshakingState deletion might require an active ExecCtx.
|
1096
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
1097
|
+
ExecCtx exec_ctx;
|
1098
|
+
auto* self_ptr = self.get();
|
1099
|
+
self_ptr->connection_->work_serializer_.Run(
|
1100
|
+
[self = std::move(self)]() { self->OnTimeoutLocked(); },
|
1101
|
+
DEBUG_LOCATION);
|
1102
|
+
});
|
1103
|
+
} else {
|
1104
|
+
// Failed to create channel from transport. Clean up.
|
1105
|
+
LOG(ERROR) << "Failed to create channel: "
|
1106
|
+
<< StatusToString(channel_init_err);
|
1107
|
+
transport->Orphan();
|
1108
|
+
}
|
1109
|
+
}
|
1110
|
+
// Since the handshake manager is done, the connection no longer needs to
|
1111
|
+
// shutdown the handshake when the listener needs to stop serving.
|
1112
|
+
handshake_mgr_.reset();
|
1113
|
+
connection_->listener_state_->OnHandshakeDone(connection_.get());
|
1114
|
+
// Clean up if we don't have a transport
|
1115
|
+
if (!absl::holds_alternative<RefCountedPtr<grpc_chttp2_transport>>(
|
1116
|
+
connection_->state_)) {
|
1117
|
+
connection_->listener_state_->connection_quota()->ReleaseConnections(1);
|
1118
|
+
connection_->listener_state_->RemoveLogicalConnection(connection_.get());
|
1119
|
+
}
|
1120
|
+
}
|
1121
|
+
|
1122
|
+
//
|
1123
|
+
// NewChttp2ServerListener::ActiveConnection
|
1124
|
+
//
|
1125
|
+
|
1126
|
+
NewChttp2ServerListener::ActiveConnection::ActiveConnection(
|
1127
|
+
RefCountedPtr<Server::ListenerState> listener_state,
|
1128
|
+
grpc_tcp_server* tcp_server, grpc_pollset* accepting_pollset,
|
1129
|
+
AcceptorPtr acceptor, const ChannelArgs& args, MemoryOwner memory_owner,
|
1130
|
+
OrphanablePtr<grpc_endpoint> endpoint)
|
1131
|
+
: listener_state_(std::move(listener_state)),
|
1132
|
+
work_serializer_(
|
1133
|
+
args.GetObjectRef<grpc_event_engine::experimental::EventEngine>()),
|
1134
|
+
state_(memory_owner.MakeOrphanable<HandshakingState>(
|
1135
|
+
RefAsSubclass<ActiveConnection>(), tcp_server, accepting_pollset,
|
1136
|
+
std::move(acceptor), args, std::move(endpoint))) {
|
1137
|
+
GRPC_CLOSURE_INIT(&on_close_, ActiveConnection::OnClose, this,
|
1138
|
+
grpc_schedule_on_exec_ctx);
|
1139
|
+
}
|
1140
|
+
|
1141
|
+
void NewChttp2ServerListener::ActiveConnection::Orphan() {
|
1142
|
+
work_serializer_.Run(
|
1143
|
+
[this]() {
|
1144
|
+
// If ActiveConnection is orphaned before handshake is established,
|
1145
|
+
// shutdown the handshaker. If the server is stopping to serve or
|
1146
|
+
// shutting down and a transport has already been established, GOAWAYs
|
1147
|
+
// should be sent separately.
|
1148
|
+
shutdown_ = true;
|
1149
|
+
if (absl::holds_alternative<OrphanablePtr<HandshakingState>>(state_)) {
|
1150
|
+
state_ = OrphanablePtr<HandshakingState>(nullptr);
|
1151
|
+
}
|
1152
|
+
Unref();
|
1153
|
+
},
|
1154
|
+
DEBUG_LOCATION);
|
1155
|
+
}
|
1156
|
+
|
1157
|
+
void NewChttp2ServerListener::ActiveConnection::SendGoAway() {
|
1158
|
+
work_serializer_.Run(
|
1159
|
+
[self = RefAsSubclass<ActiveConnection>()]() mutable {
|
1160
|
+
self->SendGoAwayImplLocked();
|
1161
|
+
},
|
1162
|
+
DEBUG_LOCATION);
|
1163
|
+
}
|
1164
|
+
|
1165
|
+
void NewChttp2ServerListener::ActiveConnection::DisconnectImmediately() {
|
1166
|
+
work_serializer_.Run(
|
1167
|
+
[self = RefAsSubclass<ActiveConnection>()]() mutable {
|
1168
|
+
self->DisconnectImmediatelyImplLocked();
|
1169
|
+
},
|
1170
|
+
DEBUG_LOCATION);
|
1171
|
+
}
|
1172
|
+
|
1173
|
+
void NewChttp2ServerListener::ActiveConnection::Start(const ChannelArgs& args) {
|
1174
|
+
work_serializer_.Run(
|
1175
|
+
[self = RefAsSubclass<ActiveConnection>(), args]() mutable {
|
1176
|
+
// If the Connection is already shutdown at this point, it implies the
|
1177
|
+
// owning NewChttp2ServerListener and all associated
|
1178
|
+
// ActiveConnections have been orphaned.
|
1179
|
+
if (self->shutdown_) return;
|
1180
|
+
absl::get<OrphanablePtr<HandshakingState>>(self->state_)
|
1181
|
+
->StartLocked(args);
|
1182
|
+
},
|
1183
|
+
DEBUG_LOCATION);
|
1184
|
+
}
|
1185
|
+
|
1186
|
+
void NewChttp2ServerListener::ActiveConnection::OnClose(
|
1187
|
+
void* arg, grpc_error_handle /* error */) {
|
1188
|
+
ActiveConnection* self = static_cast<ActiveConnection*>(arg);
|
1189
|
+
self->listener_state_->RemoveLogicalConnection(self);
|
1190
|
+
self->listener_state_->connection_quota()->ReleaseConnections(1);
|
1191
|
+
self->Unref();
|
1192
|
+
}
|
1193
|
+
|
1194
|
+
void NewChttp2ServerListener::ActiveConnection::SendGoAwayImplLocked() {
|
1195
|
+
if (!shutdown_) {
|
1196
|
+
shutdown_ = true;
|
1197
|
+
Match(
|
1198
|
+
state_,
|
1199
|
+
[](const OrphanablePtr<HandshakingState>& handshaking_state) {
|
1200
|
+
// Shutdown the handshaker if it's still in progress.
|
1201
|
+
if (handshaking_state != nullptr) {
|
1202
|
+
handshaking_state->ShutdownLocked(
|
1203
|
+
absl::UnavailableError("Connection going away"));
|
1204
|
+
}
|
1205
|
+
},
|
1206
|
+
[](const RefCountedPtr<grpc_chttp2_transport>& transport) {
|
1207
|
+
// Send a GOAWAY if the transport exists
|
1208
|
+
if (transport != nullptr) {
|
1209
|
+
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
1210
|
+
op->goaway_error =
|
1211
|
+
GRPC_ERROR_CREATE("Server is stopping to serve requests.");
|
1212
|
+
transport->PerformOp(op);
|
1213
|
+
}
|
1214
|
+
});
|
1215
|
+
}
|
1216
|
+
}
|
1217
|
+
|
1218
|
+
void NewChttp2ServerListener::ActiveConnection::
|
1219
|
+
DisconnectImmediatelyImplLocked() {
|
1220
|
+
shutdown_ = true;
|
1221
|
+
Match(
|
1222
|
+
state_,
|
1223
|
+
[](const OrphanablePtr<HandshakingState>& handshaking_state) {
|
1224
|
+
// Shutdown the handshaker if it's still in progress.
|
1225
|
+
if (handshaking_state != nullptr) {
|
1226
|
+
handshaking_state->ShutdownLocked(
|
1227
|
+
absl::UnavailableError("Connection to be disconnected"));
|
1228
|
+
}
|
1229
|
+
},
|
1230
|
+
[](const RefCountedPtr<grpc_chttp2_transport>& transport) {
|
1231
|
+
// Disconnect immediately if the transport exists
|
1232
|
+
if (transport != nullptr) {
|
1233
|
+
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
1234
|
+
op->disconnect_with_error = GRPC_ERROR_CREATE(
|
1235
|
+
"Drain grace time expired. Closing connection immediately.");
|
1236
|
+
transport->PerformOp(op);
|
1237
|
+
}
|
1238
|
+
});
|
1239
|
+
}
|
1240
|
+
|
1241
|
+
//
|
1242
|
+
// NewChttp2ServerListener
|
957
1243
|
//
|
958
1244
|
|
1245
|
+
grpc_error_handle NewChttp2ServerListener::Create(
|
1246
|
+
Server* server, const EventEngine::ResolvedAddress& addr,
|
1247
|
+
const ChannelArgs& args, int* port_num) {
|
1248
|
+
// Create NewChttp2ServerListener.
|
1249
|
+
OrphanablePtr<NewChttp2ServerListener> listener =
|
1250
|
+
MakeOrphanable<NewChttp2ServerListener>(args);
|
1251
|
+
// The tcp_server will be unreffed when the listener is orphaned, which
|
1252
|
+
// could be at the end of this function if the listener was not added to the
|
1253
|
+
// server's set of listeners.
|
1254
|
+
grpc_error_handle error = grpc_tcp_server_create(
|
1255
|
+
&listener->tcp_server_shutdown_complete_, ChannelArgsEndpointConfig(args),
|
1256
|
+
OnAccept, listener.get(), &listener->tcp_server_);
|
1257
|
+
if (!error.ok()) return error;
|
1258
|
+
// TODO(yijiem): remove this conversion when we remove all
|
1259
|
+
// grpc_resolved_address usages.
|
1260
|
+
grpc_resolved_address iomgr_addr =
|
1261
|
+
grpc_event_engine::experimental::CreateGRPCResolvedAddress(addr);
|
1262
|
+
if (server->config_fetcher() != nullptr) {
|
1263
|
+
// TODO(yashykt): Consider binding so as to be able to return the port
|
1264
|
+
// number.
|
1265
|
+
listener->resolved_address_ = iomgr_addr;
|
1266
|
+
{
|
1267
|
+
MutexLock lock(&listener->mu_);
|
1268
|
+
listener->add_port_on_start_ = true;
|
1269
|
+
}
|
1270
|
+
} else {
|
1271
|
+
error =
|
1272
|
+
grpc_tcp_server_add_port(listener->tcp_server_, &iomgr_addr, port_num);
|
1273
|
+
if (!error.ok()) return error;
|
1274
|
+
}
|
1275
|
+
// Create channelz node.
|
1276
|
+
if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
|
1277
|
+
.value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
|
1278
|
+
auto string_address =
|
1279
|
+
grpc_event_engine::experimental::ResolvedAddressToString(addr);
|
1280
|
+
if (!string_address.ok()) {
|
1281
|
+
return GRPC_ERROR_CREATE(string_address.status().ToString());
|
1282
|
+
}
|
1283
|
+
listener->channelz_listen_socket_ =
|
1284
|
+
MakeRefCounted<channelz::ListenSocketNode>(
|
1285
|
+
*string_address, absl::StrCat("chttp2 listener ", *string_address));
|
1286
|
+
}
|
1287
|
+
// Register with the server only upon success
|
1288
|
+
server->AddListener(std::move(listener));
|
1289
|
+
return absl::OkStatus();
|
1290
|
+
}
|
1291
|
+
|
1292
|
+
grpc_error_handle NewChttp2ServerListener::CreateWithAcceptor(
|
1293
|
+
Server* server, const char* name, const ChannelArgs& args) {
|
1294
|
+
auto listener = MakeOrphanable<NewChttp2ServerListener>(args);
|
1295
|
+
grpc_error_handle error = grpc_tcp_server_create(
|
1296
|
+
&listener->tcp_server_shutdown_complete_, ChannelArgsEndpointConfig(args),
|
1297
|
+
OnAccept, listener.get(), &listener->tcp_server_);
|
1298
|
+
if (!error.ok()) return error;
|
1299
|
+
// TODO(yangg) channelz
|
1300
|
+
TcpServerFdHandler** arg_val = args.GetPointer<TcpServerFdHandler*>(name);
|
1301
|
+
*arg_val = grpc_tcp_server_create_fd_handler(listener->tcp_server_);
|
1302
|
+
server->AddListener(std::move(listener));
|
1303
|
+
return absl::OkStatus();
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
NewChttp2ServerListener* NewChttp2ServerListener::CreateForPassiveListener(
|
1307
|
+
Server* server, const ChannelArgs& args,
|
1308
|
+
std::shared_ptr<experimental::PassiveListenerImpl> passive_listener) {
|
1309
|
+
// TODO(hork): figure out how to handle channelz in this case
|
1310
|
+
auto listener = MakeOrphanable<NewChttp2ServerListener>(
|
1311
|
+
args, std::move(passive_listener));
|
1312
|
+
auto listener_ptr = listener.get();
|
1313
|
+
server->AddListener(std::move(listener));
|
1314
|
+
return listener_ptr;
|
1315
|
+
}
|
1316
|
+
|
1317
|
+
NewChttp2ServerListener::NewChttp2ServerListener(
|
1318
|
+
const ChannelArgs& args,
|
1319
|
+
std::shared_ptr<experimental::PassiveListenerImpl> passive_listener)
|
1320
|
+
: args_(args), passive_listener_(std::move(passive_listener)) {
|
1321
|
+
GRPC_CLOSURE_INIT(&tcp_server_shutdown_complete_, TcpServerShutdownComplete,
|
1322
|
+
this, grpc_schedule_on_exec_ctx);
|
1323
|
+
}
|
1324
|
+
|
1325
|
+
NewChttp2ServerListener::~NewChttp2ServerListener() {
|
1326
|
+
if (passive_listener_ != nullptr) {
|
1327
|
+
passive_listener_->ListenerDestroyed();
|
1328
|
+
}
|
1329
|
+
if (on_destroy_done_ != nullptr) {
|
1330
|
+
ExecCtx::Run(DEBUG_LOCATION, on_destroy_done_, absl::OkStatus());
|
1331
|
+
}
|
1332
|
+
}
|
1333
|
+
|
1334
|
+
void NewChttp2ServerListener::Start() {
|
1335
|
+
bool should_add_port = false;
|
1336
|
+
grpc_tcp_server* tcp_server = nullptr;
|
1337
|
+
{
|
1338
|
+
MutexLock lock(&mu_);
|
1339
|
+
if (!shutdown_) {
|
1340
|
+
should_add_port = std::exchange(add_port_on_start_, false);
|
1341
|
+
// Hold a ref while we start the server
|
1342
|
+
if (tcp_server_ != nullptr) {
|
1343
|
+
grpc_tcp_server_ref(tcp_server_);
|
1344
|
+
tcp_server = tcp_server_;
|
1345
|
+
}
|
1346
|
+
}
|
1347
|
+
}
|
1348
|
+
if (should_add_port) {
|
1349
|
+
int port_temp;
|
1350
|
+
grpc_error_handle error =
|
1351
|
+
grpc_tcp_server_add_port(tcp_server_, resolved_address(), &port_temp);
|
1352
|
+
if (!error.ok()) {
|
1353
|
+
LOG(ERROR) << "Error adding port to server: " << StatusToString(error);
|
1354
|
+
// TODO(yashykt): We wouldn't need to assert here if we bound to the
|
1355
|
+
// port earlier during AddPort.
|
1356
|
+
CHECK(0);
|
1357
|
+
}
|
1358
|
+
}
|
1359
|
+
if (tcp_server != nullptr) {
|
1360
|
+
grpc_tcp_server_start(tcp_server, &listener_state_->server()->pollsets());
|
1361
|
+
// Give up the ref we took earlier
|
1362
|
+
grpc_tcp_server_unref(tcp_server);
|
1363
|
+
}
|
1364
|
+
}
|
1365
|
+
|
1366
|
+
void NewChttp2ServerListener::SetOnDestroyDone(grpc_closure* on_destroy_done) {
|
1367
|
+
MutexLock lock(&mu_);
|
1368
|
+
on_destroy_done_ = on_destroy_done;
|
1369
|
+
}
|
1370
|
+
|
1371
|
+
void NewChttp2ServerListener::AcceptConnectedEndpoint(
|
1372
|
+
std::unique_ptr<EventEngine::Endpoint> endpoint) {
|
1373
|
+
OnAccept(this, grpc_event_engine_endpoint_create(std::move(endpoint)),
|
1374
|
+
/*accepting_pollset=*/nullptr, /*acceptor=*/nullptr);
|
1375
|
+
}
|
1376
|
+
|
1377
|
+
void NewChttp2ServerListener::OnAccept(
|
1378
|
+
void* arg, grpc_endpoint* tcp, grpc_pollset* accepting_pollset,
|
1379
|
+
grpc_tcp_server_acceptor* server_acceptor) {
|
1380
|
+
NewChttp2ServerListener* self = static_cast<NewChttp2ServerListener*>(arg);
|
1381
|
+
OrphanablePtr<grpc_endpoint> endpoint(tcp);
|
1382
|
+
AcceptorPtr acceptor(server_acceptor);
|
1383
|
+
if (!self->listener_state_->connection_quota()->AllowIncomingConnection(
|
1384
|
+
self->listener_state_->memory_quota(),
|
1385
|
+
grpc_endpoint_get_peer(endpoint.get()))) {
|
1386
|
+
return;
|
1387
|
+
}
|
1388
|
+
{
|
1389
|
+
// The ref for the tcp_server need to be taken in the critical region
|
1390
|
+
// after having made sure that the listener has not been Orphaned, so as
|
1391
|
+
// to avoid heap-use-after-free issues where `Ref()` is invoked when the
|
1392
|
+
// listener is already shutdown. Note that the listener holds a ref to the
|
1393
|
+
// tcp_server but this ref is given away when the listener is orphaned
|
1394
|
+
// (shutdown). A connection needs the tcp_server to outlast the handshake
|
1395
|
+
// since the acceptor needs it.
|
1396
|
+
MutexLock lock(&self->mu_);
|
1397
|
+
if (self->shutdown_) {
|
1398
|
+
self->listener_state_->connection_quota()->ReleaseConnections(1);
|
1399
|
+
return;
|
1400
|
+
}
|
1401
|
+
if (self->tcp_server_ != nullptr) {
|
1402
|
+
grpc_tcp_server_ref(self->tcp_server_);
|
1403
|
+
}
|
1404
|
+
}
|
1405
|
+
auto memory_owner =
|
1406
|
+
self->listener_state_->memory_quota()->CreateMemoryOwner();
|
1407
|
+
auto connection = memory_owner.MakeOrphanable<ActiveConnection>(
|
1408
|
+
self->listener_state_, self->tcp_server_, accepting_pollset,
|
1409
|
+
std::move(acceptor), self->args_, std::move(memory_owner),
|
1410
|
+
std::move(endpoint));
|
1411
|
+
RefCountedPtr<ActiveConnection> connection_ref =
|
1412
|
+
connection->RefAsSubclass<ActiveConnection>();
|
1413
|
+
absl::optional<ChannelArgs> new_args =
|
1414
|
+
self->listener_state_->AddLogicalConnection(std::move(connection),
|
1415
|
+
self->args_, tcp);
|
1416
|
+
if (new_args.has_value()) {
|
1417
|
+
connection_ref->Start(*new_args);
|
1418
|
+
} else {
|
1419
|
+
self->listener_state_->connection_quota()->ReleaseConnections(1);
|
1420
|
+
}
|
1421
|
+
}
|
1422
|
+
|
1423
|
+
void NewChttp2ServerListener::TcpServerShutdownComplete(
|
1424
|
+
void* arg, grpc_error_handle /*error*/) {
|
1425
|
+
NewChttp2ServerListener* self = static_cast<NewChttp2ServerListener*>(arg);
|
1426
|
+
self->channelz_listen_socket_.reset();
|
1427
|
+
self->Unref();
|
1428
|
+
}
|
1429
|
+
|
1430
|
+
// Server callback: destroy the tcp listener (so we don't generate further
|
1431
|
+
// callbacks)
|
1432
|
+
void NewChttp2ServerListener::Orphan() {
|
1433
|
+
grpc_tcp_server* tcp_server;
|
1434
|
+
{
|
1435
|
+
MutexLock lock(&mu_);
|
1436
|
+
shutdown_ = true;
|
1437
|
+
tcp_server = tcp_server_;
|
1438
|
+
}
|
1439
|
+
if (tcp_server != nullptr) {
|
1440
|
+
grpc_tcp_server_shutdown_listeners(tcp_server);
|
1441
|
+
grpc_tcp_server_unref(tcp_server);
|
1442
|
+
} else {
|
1443
|
+
Unref();
|
1444
|
+
}
|
1445
|
+
}
|
1446
|
+
|
1447
|
+
namespace {
|
1448
|
+
|
959
1449
|
grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
|
960
|
-
const ChannelArgs& args,
|
961
|
-
Chttp2ServerArgsModifier args_modifier,
|
962
|
-
int* port_num) {
|
1450
|
+
const ChannelArgs& args, int* port_num) {
|
963
1451
|
if (addr == nullptr) {
|
964
1452
|
return GRPC_ERROR_CREATE("Invalid address: addr cannot be a nullptr.");
|
965
1453
|
}
|
966
1454
|
if (strncmp(addr, "external:", 9) == 0) {
|
967
|
-
|
968
|
-
|
1455
|
+
if (IsServerListenerEnabled()) {
|
1456
|
+
return NewChttp2ServerListener::CreateWithAcceptor(server, addr, args);
|
1457
|
+
} else {
|
1458
|
+
return Chttp2ServerListener::CreateWithAcceptor(server, addr, args);
|
1459
|
+
}
|
969
1460
|
}
|
970
1461
|
*port_num = -1;
|
971
1462
|
absl::StatusOr<std::vector<grpc_resolved_address>> resolved;
|
@@ -1029,8 +1520,11 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
|
|
1029
1520
|
*port_num);
|
1030
1521
|
}
|
1031
1522
|
int port_temp = -1;
|
1032
|
-
|
1033
|
-
|
1523
|
+
if (IsServerListenerEnabled()) {
|
1524
|
+
error = NewChttp2ServerListener::Create(server, addr, args, &port_temp);
|
1525
|
+
} else {
|
1526
|
+
error = Chttp2ServerListener::Create(server, addr, args, &port_temp);
|
1527
|
+
}
|
1034
1528
|
if (!error.ok()) {
|
1035
1529
|
error_list.push_back(error);
|
1036
1530
|
} else {
|
@@ -1063,25 +1557,6 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
|
|
1063
1557
|
return error;
|
1064
1558
|
}
|
1065
1559
|
|
1066
|
-
namespace {
|
1067
|
-
|
1068
|
-
ChannelArgs ModifyArgsForConnection(const ChannelArgs& args,
|
1069
|
-
grpc_error_handle* error) {
|
1070
|
-
auto* server_credentials = args.GetObject<grpc_server_credentials>();
|
1071
|
-
if (server_credentials == nullptr) {
|
1072
|
-
*error = GRPC_ERROR_CREATE("Could not find server credentials");
|
1073
|
-
return args;
|
1074
|
-
}
|
1075
|
-
auto security_connector = server_credentials->create_security_connector(args);
|
1076
|
-
if (security_connector == nullptr) {
|
1077
|
-
*error = GRPC_ERROR_CREATE(
|
1078
|
-
absl::StrCat("Unable to create secure server with credentials of type ",
|
1079
|
-
server_credentials->type().name()));
|
1080
|
-
return args;
|
1081
|
-
}
|
1082
|
-
return args.SetObject(security_connector);
|
1083
|
-
}
|
1084
|
-
|
1085
1560
|
} // namespace
|
1086
1561
|
|
1087
1562
|
namespace experimental {
|
@@ -1089,19 +1564,40 @@ namespace experimental {
|
|
1089
1564
|
absl::Status PassiveListenerImpl::AcceptConnectedEndpoint(
|
1090
1565
|
std::unique_ptr<EventEngine::Endpoint> endpoint) {
|
1091
1566
|
CHECK_NE(server_.get(), nullptr);
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1567
|
+
if (IsServerListenerEnabled()) {
|
1568
|
+
RefCountedPtr<NewChttp2ServerListener> new_listener;
|
1569
|
+
{
|
1570
|
+
MutexLock lock(&mu_);
|
1571
|
+
auto* new_listener_ptr =
|
1572
|
+
absl::get_if<NewChttp2ServerListener*>(&listener_);
|
1573
|
+
if (new_listener_ptr != nullptr && *new_listener_ptr != nullptr) {
|
1574
|
+
new_listener = (*new_listener_ptr)
|
1575
|
+
->RefIfNonZero()
|
1576
|
+
.TakeAsSubclass<NewChttp2ServerListener>();
|
1577
|
+
}
|
1098
1578
|
}
|
1579
|
+
if (new_listener == nullptr) {
|
1580
|
+
return absl::UnavailableError("passive listener already shut down");
|
1581
|
+
}
|
1582
|
+
ExecCtx exec_ctx;
|
1583
|
+
new_listener->AcceptConnectedEndpoint(std::move(endpoint));
|
1584
|
+
} else {
|
1585
|
+
RefCountedPtr<Chttp2ServerListener> listener;
|
1586
|
+
{
|
1587
|
+
MutexLock lock(&mu_);
|
1588
|
+
auto* listener_ptr = absl::get_if<Chttp2ServerListener*>(&listener_);
|
1589
|
+
if (listener_ptr != nullptr && *listener_ptr != nullptr) {
|
1590
|
+
listener = (*listener_ptr)
|
1591
|
+
->RefIfNonZero()
|
1592
|
+
.TakeAsSubclass<Chttp2ServerListener>();
|
1593
|
+
}
|
1594
|
+
}
|
1595
|
+
if (listener == nullptr) {
|
1596
|
+
return absl::UnavailableError("passive listener already shut down");
|
1597
|
+
}
|
1598
|
+
ExecCtx exec_ctx;
|
1599
|
+
listener->AcceptConnectedEndpoint(std::move(endpoint));
|
1099
1600
|
}
|
1100
|
-
if (listener == nullptr) {
|
1101
|
-
return absl::UnavailableError("passive listener already shut down");
|
1102
|
-
}
|
1103
|
-
ExecCtx exec_ctx;
|
1104
|
-
listener->AcceptConnectedEndpoint(std::move(endpoint));
|
1105
1601
|
return absl::OkStatus();
|
1106
1602
|
}
|
1107
1603
|
|
@@ -1123,7 +1619,7 @@ absl::Status PassiveListenerImpl::AcceptConnectedFd(int fd) {
|
|
1123
1619
|
|
1124
1620
|
void PassiveListenerImpl::ListenerDestroyed() {
|
1125
1621
|
MutexLock lock(&mu_);
|
1126
|
-
listener_ = nullptr;
|
1622
|
+
listener_ = static_cast<Chttp2ServerListener*>(nullptr);
|
1127
1623
|
}
|
1128
1624
|
|
1129
1625
|
} // namespace experimental
|
@@ -1169,8 +1665,7 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr,
|
|
1169
1665
|
args = args.SetObject(creds->Ref()).SetObject(sc);
|
1170
1666
|
}
|
1171
1667
|
// Add server port.
|
1172
|
-
err = grpc_core::Chttp2ServerAddPort(
|
1173
|
-
core_server, addr, args, grpc_core::ModifyArgsForConnection, &port_num);
|
1668
|
+
err = grpc_core::Chttp2ServerAddPort(core_server, addr, args, &port_num);
|
1174
1669
|
done:
|
1175
1670
|
sc.reset(DEBUG_LOCATION, "server");
|
1176
1671
|
if (!err.ok()) {
|
@@ -1250,9 +1745,16 @@ absl::Status grpc_server_add_passive_listener(
|
|
1250
1745
|
auto args = server->channel_args()
|
1251
1746
|
.SetObject(credentials->Ref())
|
1252
1747
|
.SetObject(std::move(sc));
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1748
|
+
if (grpc_core::IsServerListenerEnabled()) {
|
1749
|
+
passive_listener->listener_ =
|
1750
|
+
grpc_core::NewChttp2ServerListener::CreateForPassiveListener(
|
1751
|
+
server, args, passive_listener);
|
1752
|
+
} else {
|
1753
|
+
passive_listener->listener_ =
|
1754
|
+
grpc_core::Chttp2ServerListener::CreateForPassiveListener(
|
1755
|
+
server, args, passive_listener);
|
1756
|
+
}
|
1757
|
+
|
1256
1758
|
passive_listener->server_ = server->Ref();
|
1257
1759
|
return absl::OkStatus();
|
1258
1760
|
}
|