Do not replace connection ID for unknown versions
This prevents the QUIC_BUG from b/139661722 from firing.
gfe-relnote: avoid a GFE_BUG when parsing a specific invalid packet
Startblock:
after 2019-09-24 08:00 in US/Pacific
PiperOrigin-RevId: 270909914
Change-Id: Idbeb2ee5c02c6d011d0696ad1cfb4aa64547fcb9
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index 4d7a2d7..b130fe9 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -401,8 +401,14 @@
it->second->ProcessUdpPacket(packet_info.self_address,
packet_info.peer_address, packet_info.packet);
return true;
- } else {
+ } else if (packet_info.version.transport_version !=
+ QUIC_VERSION_UNSUPPORTED) {
// We did not find the connection ID, check if we've replaced it.
+ // This is only performed for supported versions because packets with
+ // unsupported versions can flow through this function in order to send
+ // a version negotiation packet, but we know that their connection ID
+ // did not get replaced since that is performed on connection creation,
+ // and that only happens for known verions.
QuicConnectionId replaced_connection_id = MaybeReplaceServerConnectionId(
server_connection_id, packet_info.version);
if (replaced_connection_id != server_connection_id) {