Fix various SCONE-related builder errors - In scone.h, use absl::NoDestructor for a static vector to ensure safe initialization and destruction. - In quic_dispatcher_test.cc, remove an extra semicolon. - In end_to_end_test.cc, cast buffer to uint8_t* for byte-level access. These issues are causing us to not be able to roll QUICHE to Chromium. PiperOrigin-RevId: 896778658
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc index a4091fd..33ba639 100644 --- a/quiche/quic/core/http/end_to_end_test.cc +++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -4802,7 +4802,8 @@ observed_scone_endpoints_.contains(peer_address.host())) { return true; } - if (*(buffer - 2) == 0xc8 && *(buffer - 1) == 0x13) { + const uint8_t* ubuffer = reinterpret_cast<const uint8_t*>(buffer); + if (*(ubuffer - 2) == 0xc8 && *(ubuffer - 1) == 0x13) { // Indicator is present, record the flow. observed_scone_endpoints_.insert(peer_address.host()); return true;
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc index d98fb0c..0b18328 100644 --- a/quiche/quic/core/quic_dispatcher_test.cc +++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -928,7 +928,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket).Times(1); dispatcher_->ProcessPacket(server_address_, client_address, *packet); -}; +} TEST_P(QuicDispatcherTestOneVersion, StatelessVersionNegotiationWithVeryLongConnectionId) {
diff --git a/quiche/quic/core/scone.h b/quiche/quic/core/scone.h index f20338d..5b693da 100644 --- a/quiche/quic/core/scone.h +++ b/quiche/quic/core/scone.h
@@ -11,6 +11,7 @@ #include <cstdint> #include <vector> +#include "absl/base/no_destructor.h" #include "quiche/quic/core/quic_bandwidth.h" #include "quiche/quic/core/quic_types.h" #include "quiche/quic/core/quic_versions.h" @@ -31,7 +32,7 @@ // is unknown. // Returns the SCONE bandwidth table. Initialized once on first use. inline const std::vector<QuicBandwidth>& GetSconeBandwidths() { - static const std::vector<QuicBandwidth> kBandwidths = [] { + static const absl::NoDestructor<std::vector<QuicBandwidth>> kBandwidths([] { std::vector<QuicBandwidth> v; v.reserve(kNumSconeBandwidths); double factor = 1.0; @@ -42,8 +43,8 @@ factor *= multiplier; } return v; - }(); - return kBandwidths; + }()); + return *kBandwidths; } } // namespace quic