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..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, - absl::string_view 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