Skip to content

Commit

Permalink
Quiche roll 20240930141637 (#36385)
Browse files Browse the repository at this point in the history
Update QUICHE from 42b2e66c7 to 171f6f89a
https://github.com/google/quiche/compare/42b2e66c7..171f6f89a
    
```
$ git log 42b2e66c7..171f6f89a --date=short --no-merges --format="%ad %al %s"
    
2024-09-26 birenroy Migrates code from `//third_party/spdy/core:spdy_protocol_lib` to `//third_party/http2/core:spdy_protocol`.
2024-09-26 martinduke fix asan error because the log message uses the variable about to be initialized, rather than the value being assigned.
2024-09-26 birenroy Deletes unused artifacts from //third_party/spdy.
2024-09-26 martinduke Complete processing of RESET_STREAM_AT frames. Negotiate with transport parameters and pass the frame from QuicConnection to QuicStream.
2024-09-26 birenroy Moves //third_party/spdy/core:http2_frame_decoder_adapter_fuzzer to //third_party/http2/core.
2024-09-26 birenroy Migrates code from `//third_party/spdy/core:spdy_protocol_lib` to `//third_party/http2/core:spdy_protocol`.
2024-09-26 birenroy Moves libraries from //third_party/spdy/core/hpack to //third_party/http2/hpack.
2024-09-26 rch No public description
2024-09-26 birenroy Migrates the old cc_fuzz_target in //third_party/spdy to the modern go/fuzztest framework.
2024-09-25 birenroy Migrates code from //third_party/spdy/core:spdy_framer_lib to //third_party/http2/core:spdy_framer.
2024-09-25 wub If QUIC server closes connection due to invalid hostname in SNI, use new connection close code `QUIC_HANDSHAKE_FAILED_INVALID_HOSTNAME` instead of the generic `QUIC_HANDSHAKE_FAILED`.
2024-09-25 birenroy Removes the now-unused build target //third_party/spdy/core:http2_header_block_lib.
2024-09-25 birenroy Migrates targets from `//third_party/spdy/core:spdy_alt_svc_wire_format_lib` to `//third_party/http2/core:spdy_alt_svc_wire_format`.
2024-09-25 birenroy Migrates remaining google3 users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.
2024-09-25 birenroy Migrates code from `//third_party/spdy/core:http2_deframer_lib` to `//third_party/http2/core:http2_frame_decoder_adapter`.
2024-09-25 martinduke Roll the version number to draft-06. This will break interoperability with other MoQT implementations until we update the wire image.
2024-09-25 vasilvv Refactor MoQT interfaces to consistently pass FullTrackName around.
2024-09-24 martinduke MOQT MAX_SUBSCRIBE_ID implementation
2024-09-24 wub No public description
2024-09-24 elburrito BlindSignAuth: Update error messages to return constant strings. Messages now return at Anonymous Tokens-level granularity.
2024-09-24 wub Deprecate --quic_dispatcher_replace_cid_on_first_packet.
2024-09-23 quiche-dev No public description
2024-09-23 quiche-dev Remove quic::QuicServerId::privacy_mode_enabled()
2024-09-23 quiche-dev Enabling rolled out flags.
2024-09-23 wub No public description
2024-09-22 fayang Postpone removing handshake timeout from transport params getting negotiated to handshake complete.
2024-09-22 fayang Deliver STOP_SENDING to zombie streams.
2024-09-20 martinduke No public description
2024-09-19 vasilvv Introduce padding streams.
2024-09-19 quiche-dev QUICHE: always print ACK ranges as [a...b], except if the range is a single packet.
2024-09-19 vasilvv Split MoqtParser into MoqtControlParser and MoqtDataParser.
2024-09-18 birenroy Adds `^` and `|` to the set of allowed characters in HTTP/2 request paths.
2024-09-18 rch Add an IPv6 flow label field to QuicPacketWriterParams so that packet writers can set this field when writing packets. Currently nothing sets this field.
2024-09-18 quiche-dev No public description
2024-09-18 vasilvv Clean up MoqtTestMessage
2024-09-18 martinduke Update QuicStream to handle RESET_STREAM_AT frames.
```

---------

Signed-off-by: Fredy Wijaya <[email protected]>
  • Loading branch information
fredyw committed Oct 1, 2024
1 parent a3e32c9 commit b67e3b4
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 41 deletions.
49 changes: 20 additions & 29 deletions bazel/external/quiche.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -400,12 +400,12 @@ envoy_cc_library(
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_adapter_data_source",
":http2_adapter_http2_protocol",
":http2_adapter_http2_visitor_interface",
":http2_adapter_nghttp2_include",
":quiche_common_platform_export",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -435,6 +435,7 @@ envoy_cc_library(
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_adapter_chunked_buffer",
":http2_adapter_data_source",
":http2_adapter_event_forwarder",
Expand All @@ -453,7 +454,6 @@ envoy_cc_library(
":http2_header_byte_listener_interface_lib",
":http2_no_op_headers_handler_lib",
":quiche_common_callbacks",
":spdy_core_http2_header_block_lib",
"@com_google_absl//absl/algorithm",
"@com_google_absl//absl/cleanup",
],
Expand Down Expand Up @@ -498,9 +498,9 @@ envoy_cc_library(
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_adapter_http2_protocol",
":quiche_common_platform_export",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -570,6 +570,7 @@ envoy_cc_test_library(
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_adapter_chunked_buffer",
":http2_adapter_data_source",
":http2_adapter_http2_protocol",
Expand All @@ -578,7 +579,6 @@ envoy_cc_test_library(
":http2_core_protocol_lib",
":http2_hpack_hpack_lib",
":quiche_common_platform_test",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -1320,7 +1320,6 @@ envoy_cc_library(
srcs = ["quiche/http2/core/spdy_alt_svc_wire_format.cc"],
hdrs = [
"quiche/http2/core/spdy_alt_svc_wire_format.h",
"quiche/spdy/core/spdy_alt_svc_wire_format.h",
],
copts = quiche_copts,
repository = "@envoy",
Expand All @@ -1337,25 +1336,23 @@ envoy_cc_library(
hdrs = [
"quiche/http2/core/spdy_frame_builder.h",
"quiche/http2/core/spdy_framer.h",
"quiche/spdy/core/spdy_frame_builder.h",
"quiche/spdy/core/spdy_framer.h",
],
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_core_alt_svc_wire_format_lib",
":http2_core_headers_handler_interface_lib",
":http2_core_protocol_lib",
":http2_core_zero_copy_output_buffer_lib",
":http2_hpack_hpack_lib",
":quiche_common_platform",
":spdy_core_http2_header_block_lib",
],
)

envoy_cc_library(
name = "spdy_core_http2_header_block_lib",
hdrs = ["quiche/spdy/core/http2_header_block.h"],
name = "common_http_http_header_block_lib",
hdrs = ["quiche/common/http/http_header_block.h"],
copts = quiche_copts,
repository = "@envoy",
visibility = ["//visibility:public"],
Expand All @@ -1381,13 +1378,11 @@ envoy_cc_library(
envoy_cc_library(
name = "http2_core_http2_deframer_lib",
srcs = ["quiche/http2/core/http2_frame_decoder_adapter.cc"],
hdrs = [
"quiche/http2/core/http2_frame_decoder_adapter.h",
"quiche/spdy/core/http2_frame_decoder_adapter.h",
],
hdrs = ["quiche/http2/core/http2_frame_decoder_adapter.h"],
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_constants_lib",
":http2_core_alt_svc_wire_format_lib",
":http2_core_headers_handler_interface_lib",
Expand All @@ -1396,11 +1391,10 @@ envoy_cc_library(
":http2_decoder_decode_status_lib",
":http2_decoder_frame_decoder_lib",
":http2_decoder_frame_decoder_listener_lib",
":http2_hpack_hpack_decoder_adapter_lib",
":http2_hpack_hpack_lib",
":http2_structures_lib",
":quiche_common_platform",
":spdy_core_hpack_hpack_decoder_adapter_lib",
":spdy_core_http2_header_block_lib",
],
)

Expand All @@ -1427,7 +1421,6 @@ envoy_cc_library(
"quiche/http2/hpack/hpack_header_table.h",
"quiche/http2/hpack/hpack_output_stream.h",
"quiche/http2/hpack/hpack_static_table.h",
"quiche/spdy/core/hpack/hpack_encoder.h",
],
copts = quiche_copts,
repository = "@envoy",
Expand All @@ -1442,12 +1435,13 @@ envoy_cc_library(
)

envoy_cc_library(
name = "spdy_core_hpack_hpack_decoder_adapter_lib",
srcs = ["quiche/spdy/core/hpack/hpack_decoder_adapter.cc"],
hdrs = ["quiche/spdy/core/hpack/hpack_decoder_adapter.h"],
name = "http2_hpack_hpack_decoder_adapter_lib",
srcs = ["quiche/http2/hpack/hpack_decoder_adapter.cc"],
hdrs = ["quiche/http2/hpack/hpack_decoder_adapter.h"],
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_core_headers_handler_interface_lib",
":http2_decoder_decode_buffer_lib",
":http2_decoder_decode_status_lib",
Expand All @@ -1458,7 +1452,6 @@ envoy_cc_library(
":http2_hpack_hpack_lib",
":http2_no_op_headers_handler_lib",
":quiche_common_platform",
":spdy_core_http2_header_block_lib",
],
)

Expand All @@ -1482,16 +1475,14 @@ envoy_cc_library(
hdrs = [
"quiche/http2/core/spdy_bitmasks.h",
"quiche/http2/core/spdy_protocol.h",
"quiche/spdy/core/spdy_bitmasks.h",
"quiche/spdy/core/spdy_protocol.h",
],
copts = quiche_copts,
repository = "@envoy",
visibility = ["//visibility:public"],
deps = [
":common_http_http_header_block_lib",
":http2_core_alt_svc_wire_format_lib",
":quiche_common_platform",
":spdy_core_http2_header_block_lib",
],
)

Expand All @@ -1501,8 +1492,8 @@ envoy_cc_library(
hdrs = ["quiche/http2/core/recording_headers_handler.h"],
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_core_headers_handler_interface_lib",
":spdy_core_http2_header_block_lib",
],
)

Expand All @@ -1513,11 +1504,11 @@ envoy_cc_test_library(
copts = quiche_copts,
repository = "@envoy",
deps = [
":common_http_http_header_block_lib",
":http2_core_headers_handler_interface_lib",
":http2_core_protocol_lib",
":quiche_common_platform",
":quiche_common_test_tools_test_utils_lib",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -3088,13 +3079,13 @@ envoy_quic_cc_library(
srcs = ["quiche/quic/core/http/quic_header_list.cc"],
hdrs = ["quiche/quic/core/http/quic_header_list.h"],
deps = [
":common_http_http_header_block_lib",
":http2_core_headers_handler_interface_lib",
":http2_core_protocol_lib",
":quic_core_packets_lib",
":quic_core_qpack_qpack_header_table_lib",
":quic_platform_base",
":quiche_common_circular_deque_lib",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -3830,8 +3821,8 @@ envoy_quic_cc_library(
srcs = ["quiche/quic/core/qpack/value_splitting_header_list.cc"],
hdrs = ["quiche/quic/core/qpack/value_splitting_header_list.h"],
deps = [
":common_http_http_header_block_lib",
":quic_platform_base",
":spdy_core_http2_header_block_lib",
],
)

Expand Down Expand Up @@ -5600,10 +5591,10 @@ envoy_cc_library(
repository = "@envoy",
tags = ["nofips"],
deps = [
":common_http_http_header_block_lib",
":quiche_common_callbacks",
":quiche_common_platform_export",
":quiche_common_quiche_stream_lib",
":spdy_core_http2_header_block_lib",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
Expand Down
6 changes: 3 additions & 3 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1208,12 +1208,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 = "42b2e66c721f442bb439b40a1e037897360cf1b2",
sha256 = "f72f78d7fa57154ad302d559fee6b72e0695d51391684891ec991b2b5d90491f",
version = "171f6f89a6a119e8763f1216f8d85347f997cd3b",
sha256 = "3e0fec32dfa9c7568d4703516ee14c9e2316379e0a35f723d17a988be178e532",
urls = ["https://github.com/google/quiche/archive/{version}.tar.gz"],
strip_prefix = "quiche-{version}",
use_category = ["controlplane", "dataplane_core"],
release_date = "2024-09-17",
release_date = "2024-09-26",
cpe = "N/A",
license = "BSD-3-Clause",
license_url = "https://github.com/google/quiche/blob/{version}/LICENSE",
Expand Down
2 changes: 1 addition & 1 deletion source/common/http/http3/conn_pool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ Http3ConnPoolImpl::Http3ConnPoolImpl(
random_generator, state, client_fn, codec_fn, protocol, {}, nullptr),
quic_info_(dynamic_cast<Quic::PersistentQuicInfoImpl&>(quic_info)),
server_id_(sni(transport_socket_options, host),
static_cast<uint16_t>(host_->address()->ip()->port()), false),
static_cast<uint16_t>(host_->address()->ip()->port())),
connect_callback_(connect_callback), attempt_happy_eyeballs_(attempt_happy_eyeballs),
network_observer_registry_(network_observer_registry) {}

Expand Down
8 changes: 4 additions & 4 deletions test/common/quic/client_connection_factory_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ TEST_P(QuicNetworkConnectionTest, BufferLimits) {
initialize();
std::unique_ptr<Network::ClientConnection> client_connection = createQuicNetworkConnection(
*quic_info_, crypto_config_,
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT, false},
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT},
dispatcher_, test_address_, test_address_, quic_stat_names_, {}, *store_.rootScope(), nullptr,
nullptr, connection_id_generator_, *factory_);
EnvoyQuicClientSession* session = static_cast<EnvoyQuicClientSession*>(client_connection.get());
Expand All @@ -125,7 +125,7 @@ TEST_P(QuicNetworkConnectionTest, SocketOptions) {

std::unique_ptr<Network::ClientConnection> client_connection = createQuicNetworkConnection(
*quic_info_, crypto_config_,
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT, false},
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT},
dispatcher_, test_address_, test_address_, quic_stat_names_, {}, *store_.rootScope(),
socket_options, nullptr, connection_id_generator_, *factory_);
EnvoyQuicClientSession* session = static_cast<EnvoyQuicClientSession*>(client_connection.get());
Expand All @@ -142,7 +142,7 @@ TEST_P(QuicNetworkConnectionTest, LocalAddress) {
: Network::Utility::getCanonicalIpv4LoopbackAddress();
std::unique_ptr<Network::ClientConnection> client_connection = createQuicNetworkConnection(
*quic_info_, crypto_config_,
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT, false},
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT},
dispatcher_, test_address_, local_addr, quic_stat_names_, {}, *store_.rootScope(), nullptr,
nullptr, connection_id_generator_, *factory_);
EnvoyQuicClientSession* session = static_cast<EnvoyQuicClientSession*>(client_connection.get());
Expand All @@ -164,7 +164,7 @@ TEST_P(QuicNetworkConnectionTest, Srtt) {

std::unique_ptr<Network::ClientConnection> client_connection = createQuicNetworkConnection(
info, crypto_config_,
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT, false},
quic::QuicServerId{factory_->clientContextConfig()->serverNameIndication(), PEER_PORT},
dispatcher_, test_address_, test_address_, quic_stat_names_, rtt_cache, *store_.rootScope(),
nullptr, nullptr, connection_id_generator_, *factory_);

Expand Down
2 changes: 1 addition & 1 deletion test/common/quic/envoy_quic_client_session_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class EnvoyQuicClientSessionTest : public testing::TestWithParam<quic::ParsedQui
envoy_quic_session_ = std::make_unique<EnvoyQuicClientSession>(
quic_config_, quic_version_,
std::unique_ptr<TestEnvoyQuicClientConnection>(quic_connection_),
quic::QuicServerId("example.com", 443, false), crypto_config_, *dispatcher_,
quic::QuicServerId("example.com", 443), crypto_config_, *dispatcher_,
/*send_buffer_limit*/ 1024 * 1024, crypto_stream_factory_, quic_stat_names_, cache,
*store_.rootScope(), transport_socket_options_, uts_factory);

Expand Down
2 changes: 1 addition & 1 deletion test/common/quic/test_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ class MockEnvoyQuicClientSession : public IsolatedStoreProvider, public EnvoyQui
Event::Dispatcher& dispatcher, uint32_t send_buffer_limit,
EnvoyQuicCryptoClientStreamFactoryInterface& crypto_stream_factory)
: EnvoyQuicClientSession(config, supported_versions, std::move(connection),
quic::QuicServerId("example.com", 443, false),
quic::QuicServerId("example.com", 443),
std::make_shared<quic::QuicCryptoClientConfig>(
quic::test::crypto_test_utils::ProofVerifierForTesting()),
dispatcher, send_buffer_limit, crypto_stream_factory,
Expand Down
5 changes: 3 additions & 2 deletions test/integration/quic_http_integration_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ class QuicHttpIntegrationTestBase : public HttpIntegrationTest {
quic::QuicServerId{
(host.empty() ? transport_socket_factory_->clientContextConfig()->serverNameIndication()
: host),
static_cast<uint16_t>(port), false},
static_cast<uint16_t>(port)},
transport_socket_factory_->getCryptoConfig(), *dispatcher_,
// Use smaller window than the default one to have test coverage of client codec buffer
// exceeding high watermark.
Expand Down Expand Up @@ -1089,7 +1089,8 @@ TEST_P(QuicHttpIntegrationTest, CertVerificationFailure) {
std::string failure_reason = "QUIC_TLS_CERTIFICATE_UNKNOWN with details: TLS handshake failure "
"(ENCRYPTION_HANDSHAKE) 46: "
"certificate unknown. SSLErrorStack:";
EXPECT_EQ(failure_reason, codec_client_->connection()->transportFailureReason());
EXPECT_THAT(codec_client_->connection()->transportFailureReason(),
testing::HasSubstr(failure_reason));
}

TEST_P(QuicHttpIntegrationTest, ResetRequestWithoutAuthorityHeader) {
Expand Down

0 comments on commit b67e3b4

Please sign in to comment.