Index: net/quic/quic_dispatcher.cc |
diff --git a/net/quic/quic_dispatcher.cc b/net/quic/quic_dispatcher.cc |
index ee2c0c6df2b1b0bb0dab2890e6260db87c1b59f0..f750bfaef39f64b009818389cea2961695e3a4c0 100644 |
--- a/net/quic/quic_dispatcher.cc |
+++ b/net/quic/quic_dispatcher.cc |
@@ -204,6 +204,13 @@ bool QuicDispatcher::OnUnauthenticatedPublicHeader( |
const QuicPacketPublicHeader& header) { |
QuicSession* session = nullptr; |
+ // Port zero is only allowed for unidirectional UDP, so is disallowed by QUIC. |
+ // Given that we can't even send a reply rejecting the packet, just black hole |
+ // it. |
+ if (current_client_address_.port() == 0) { |
+ return false; |
+ } |
+ |
QuicConnectionId connection_id = header.connection_id; |
SessionMap::iterator it = session_map_.find(connection_id); |
if (it == session_map_.end()) { |
@@ -242,7 +249,7 @@ bool QuicDispatcher::OnUnauthenticatedPublicHeader( |
return HandlePacketForTimeWait(header); |
} |
DVLOG(1) << "Created new session for " << connection_id; |
- session_map_.insert(make_pair(connection_id, session)); |
+ session_map_.insert(std::make_pair(connection_id, session)); |
} else { |
session = it->second; |
} |
@@ -337,7 +344,7 @@ void QuicDispatcher::OnWriteBlocked( |
// infinite loops in OnCanWrite. |
return; |
} |
- write_blocked_list_.insert(make_pair(blocked_writer, true)); |
+ write_blocked_list_.insert(std::make_pair(blocked_writer, true)); |
} |
void QuicDispatcher::OnConnectionAddedToTimeWaitList( |