Index: net/tools/quic/quic_dispatcher.cc |
diff --git a/net/tools/quic/quic_dispatcher.cc b/net/tools/quic/quic_dispatcher.cc |
index 1771026c97a765f515c23e9813c185cb2d294149..8f19cf4e54b13b9414109978b59f846d5b6322ef 100644 |
--- a/net/tools/quic/quic_dispatcher.cc |
+++ b/net/tools/quic/quic_dispatcher.cc |
@@ -24,7 +24,6 @@ namespace net { |
namespace tools { |
using base::StringPiece; |
-using std::make_pair; |
class DeleteSessionsAlarm : public EpollAlarm { |
public: |
@@ -209,6 +208,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()) { |
@@ -247,7 +253,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; |
} |
@@ -345,7 +351,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( |