gfe-relnote: Fix invalid downcast.
QuicTransportServerSessionTest fails on UBSAN builds in Chromium, see
https://crrev.com/c/2015242.
QuicTransportServerSession initializes |crypto_stream_| in the constructor using
CreateCryptoServerStream(), which since cr/290819354 might return a
TlsServerHandshaker, which is a derived class of QuicCryptoServerStreamBase but
not of QuicCryptoServerStream. Hence the downcast fails in
QuicTransportServerSessionTest constructor. Fortunately
QuicTransportServerSessionTest does not need a QuicCryptoServerStream, only a
QuicCryptoServerStreamBase: it calls OnSuccessfulVersionNegotiation() which is a
QuicCryptoStream method, and passes it to HandshakeWithFakeClient() which takes
a QuicCryptoServerStreamBase*.
PiperOrigin-RevId: 291203032
Change-Id: I7b3ec41c64eeb46074ee6aa98bff7bd132a20daa
diff --git a/quic/quic_transport/quic_transport_server_session.h b/quic/quic_transport/quic_transport_server_session.h
index c023264..e756360 100644
--- a/quic/quic_transport/quic_transport_server_session.h
+++ b/quic/quic_transport/quic_transport_server_session.h
@@ -51,10 +51,10 @@
bool ShouldKeepConnectionAlive() const override { return true; }
- QuicCryptoStream* GetMutableCryptoStream() override {
+ QuicCryptoServerStreamBase* GetMutableCryptoStream() override {
return crypto_stream_.get();
}
- const QuicCryptoStream* GetCryptoStream() const override {
+ const QuicCryptoServerStreamBase* GetCryptoStream() const override {
return crypto_stream_.get();
}
diff --git a/quic/quic_transport/quic_transport_server_session_test.cc b/quic/quic_transport/quic_transport_server_session_test.cc
index f74fb53..2f0a0e8 100644
--- a/quic/quic_transport/quic_transport_server_session_test.cc
+++ b/quic/quic_transport/quic_transport_server_session_test.cc
@@ -74,8 +74,7 @@
&connection_, nullptr, DefaultQuicConfig(), GetVersions(),
&crypto_config_, &compressed_certs_cache_, &visitor_);
session_->Initialize();
- crypto_stream_ = static_cast<QuicCryptoServerStream*>(
- session_->GetMutableCryptoStream());
+ crypto_stream_ = session_->GetMutableCryptoStream();
if (!GetQuicReloadableFlag(quic_version_negotiated_by_default_at_server)) {
crypto_stream_->OnSuccessfulVersionNegotiation(GetVersions()[0]);
}
@@ -130,7 +129,7 @@
std::unique_ptr<QuicTransportServerSession> session_;
QuicCompressedCertsCache compressed_certs_cache_;
testing::NiceMock<MockServerVisitor> visitor_;
- QuicCryptoServerStream* crypto_stream_;
+ QuicCryptoServerStreamBase* crypto_stream_;
GURL path_;
};