From 438d19c03cec259a376e0f4139f2eabb08cdc82d Mon Sep 17 00:00:00 2001 From: Alyssa Wilk Date: Tue, 2 Nov 2021 09:42:56 -0400 Subject: [PATCH 1/2] Update QUICHE from 1e04d1e30 to 0b75841d5 https://github.com/google/quiche/compare/1e04d1e30..0b75841d5 $ git log 1e04d1e30..0b75841d5 --date=short --no-merges --format="%ad %al %s" 2021-11-01 dschinazi Internal change 2021-11-01 dschinazi Platformize AsciiUrlDecode 2021-11-01 wub Pass ParsedClientHello to QuicDispatcher::CreateQuicSession. This makes it easier to pass CHLO information into CreateQuicSession, which is responsible for creating a QUIC session. 2021-11-01 wub Deprecate --gfe2_reloadable_flag_quic_tls_disable_resumption_refactor. 2021-11-01 haoyuewang Internal change Signed-off-by: Alyssa Wilk --- bazel/external/quiche.BUILD | 1 + bazel/repository_locations.bzl | 6 +++--- source/common/quic/envoy_quic_dispatcher.cc | 4 ++-- source/common/quic/envoy_quic_dispatcher.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 18b1c2275e213..8c6415833a678 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -3493,6 +3493,7 @@ envoy_cc_library( ":quic_core_time_lib", ":quic_platform_base", ":quiche_common_endian_lib", + ":quiche_common_print_elements_lib", ], ) diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 3ad59c2111809..3eced5f71adf2 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -838,12 +838,12 @@ REPOSITORY_LOCATIONS_SPEC = dict( project_name = "QUICHE", project_desc = "QUICHE (QUIC, HTTP/2, Etc) is Google‘s implementation of QUIC and related protocols", project_url = "https://github.com/google/quiche", - version = "1e04d1e300be1425e2098c4f7ea0e92b697f90a8", - sha256 = "c10fccecbfae316d27ee18bc52af78bac1da863b9892d1e00d54be8c084331fc", + version = "0b75841d5b5844c53f4399a41d64de7250c204d8", + sha256 = "a00b0671180fc79952baf754148e65364bfca9d35b988710594752fb7f9bf6a1", urls = ["https://github.com/google/quiche/archive/{version}.tar.gz"], strip_prefix = "quiche-{version}", use_category = ["dataplane_core"], - release_date = "2021-10-29", + release_date = "2021-11-02", cpe = "N/A", ), com_googlesource_googleurl = dict( diff --git a/source/common/quic/envoy_quic_dispatcher.cc b/source/common/quic/envoy_quic_dispatcher.cc index 37fd7472c9a6a..bcc5c4eb91e72 100644 --- a/source/common/quic/envoy_quic_dispatcher.cc +++ b/source/common/quic/envoy_quic_dispatcher.cc @@ -61,12 +61,12 @@ void EnvoyQuicDispatcher::OnConnectionClosed(quic::QuicConnectionId connection_i std::unique_ptr EnvoyQuicDispatcher::CreateQuicSession( quic::QuicConnectionId server_connection_id, const quic::QuicSocketAddress& self_address, const quic::QuicSocketAddress& peer_address, absl::string_view /*alpn*/, - const quic::ParsedQuicVersion& version, absl::string_view sni) { + const quic::ParsedQuicVersion& version, const quic::ParsedClientHello& parsed_chlo) { quic::QuicConfig quic_config = config(); // TODO(danzh) use passed-in ALPN instead of hard-coded h3 after proof source interfaces takes in // ALPN. Network::ConnectionSocketPtr connection_socket = createServerConnectionSocket( - listen_socket_.ioHandle(), self_address, peer_address, std::string(sni), "h3"); + listen_socket_.ioHandle(), self_address, peer_address, std::string(parsed_chlo.sni), "h3"); const Network::FilterChain* filter_chain = listener_config_->filterChainManager().findFilterChain(*connection_socket); diff --git a/source/common/quic/envoy_quic_dispatcher.h b/source/common/quic/envoy_quic_dispatcher.h index 97d04adb048d2..b75c3c44b3a1c 100644 --- a/source/common/quic/envoy_quic_dispatcher.h +++ b/source/common/quic/envoy_quic_dispatcher.h @@ -56,7 +56,7 @@ class EnvoyQuicDispatcher : public quic::QuicDispatcher { const quic::QuicSocketAddress& peer_address, absl::string_view alpn, const quic::ParsedQuicVersion& version, - absl::string_view sni) override; + const quic::ParsedClientHello& sni) override; // Overridden to restore the first 4 bytes of the connection ID because our BPF filter only looks // at the first 4 bytes. This ensures that the replacement routes to the same quic dispatcher. quic::QuicConnectionId From 8cab64d4e5246871b075b208b6de19d60686ba27 Mon Sep 17 00:00:00 2001 From: Alyssa Wilk Date: Tue, 2 Nov 2021 14:21:55 -0400 Subject: [PATCH 2/2] comments Signed-off-by: Alyssa Wilk --- source/common/quic/envoy_quic_dispatcher.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/common/quic/envoy_quic_dispatcher.h b/source/common/quic/envoy_quic_dispatcher.h index b75c3c44b3a1c..a022c224f21d9 100644 --- a/source/common/quic/envoy_quic_dispatcher.h +++ b/source/common/quic/envoy_quic_dispatcher.h @@ -51,12 +51,10 @@ class EnvoyQuicDispatcher : public quic::QuicDispatcher { protected: // quic::QuicDispatcher - std::unique_ptr CreateQuicSession(quic::QuicConnectionId server_connection_id, - const quic::QuicSocketAddress& self_address, - const quic::QuicSocketAddress& peer_address, - absl::string_view alpn, - const quic::ParsedQuicVersion& version, - const quic::ParsedClientHello& sni) override; + std::unique_ptr CreateQuicSession( + quic::QuicConnectionId server_connection_id, const quic::QuicSocketAddress& self_address, + const quic::QuicSocketAddress& peer_address, absl::string_view alpn, + const quic::ParsedQuicVersion& version, const quic::ParsedClientHello& parsed_chlo) override; // Overridden to restore the first 4 bytes of the connection ID because our BPF filter only looks // at the first 4 bytes. This ensures that the replacement routes to the same quic dispatcher. quic::QuicConnectionId