Index: webrtc/p2p/base/tcpport.cc |
diff --git a/webrtc/p2p/base/tcpport.cc b/webrtc/p2p/base/tcpport.cc |
index 59c4f317d4bc755bba05246e1207b55b372571d1..4d16cc44ecc26ef925e9d2608c44afaa296dc61e 100644 |
--- a/webrtc/p2p/base/tcpport.cc |
+++ b/webrtc/p2p/base/tcpport.cc |
@@ -387,28 +387,35 @@ void TCPConnection::OnConnect(rtc::AsyncPacketSocket* socket) { |
// the one we asked for. This is seen in Chrome, where TCP sockets cannot be |
// given a binding address, and the platform is expected to pick the |
// correct local address. |
- const rtc::IPAddress& socket_ip = socket->GetLocalAddress().ipaddr(); |
- if (socket_ip == port()->ip() || IPIsAny(port()->ip())) { |
- if (socket_ip == port()->ip()) { |
- LOG_J(LS_VERBOSE, this) << "Connection established to " |
- << socket->GetRemoteAddress().ToSensitiveString(); |
- } else { |
- LOG(LS_WARNING) << "Socket is bound to a different address:" |
- << socket->GetLocalAddress().ipaddr().ToString() |
- << ", rather then the local port:" |
- << port()->ip().ToString() |
- << ". Still allowing it since it's any address" |
- << ", possibly caused by multi-routes being disabled."; |
- } |
- set_connected(true); |
- connection_pending_ = false; |
+ const rtc::SocketAddress& socket_addr = socket->GetLocalAddress(); |
+ if (socket_addr.ipaddr() == port()->ip()) { |
+ LOG_J(LS_VERBOSE, this) << "Connection established to " |
+ << socket_addr.ToSensitiveString(); |
pthatcher1
2016/05/06 22:47:30
This isn't an accurate log. You're saying "to", b
honghaiz3
2016/05/06 23:25:22
Changed to the "to" address.
|
+ } else if (IPIsAny(port()->ip())) { |
+ LOG(LS_WARNING) << "Socket is bound to a different address:" |
+ << socket_addr.ipaddr().ToString() |
+ << ", rather then the local port:" |
+ << port()->ip().ToString() |
+ << ". Still allowing it since it's any address" |
+ << ", possibly caused by multi-routes being disabled."; |
+ } else if (socket_addr.IsLoopbackIP()) { |
+ LOG(LS_WARNING) << "Socket is bound to a different address:" |
+ << socket_addr.ipaddr().ToString() |
+ << ", rather then the local port:" |
+ << port()->ip().ToString() |
+ << ". Still allowing it since it's a local host."; |
pthatcher1
2016/05/06 22:47:30
it's a local host => it's localhost
honghaiz3
2016/05/06 23:25:22
Done.
|
} else { |
LOG_J(LS_WARNING, this) << "Dropping connection as TCP socket bound to IP " |
- << socket_ip.ToSensitiveString() |
+ << socket_addr.ipaddr().ToSensitiveString() |
<< ", different from the local candidate IP " |
<< port()->ip().ToSensitiveString(); |
OnClose(socket, 0); |
+ return; |
} |
+ |
+ // Connection is established successfully. |
+ set_connected(true); |
+ connection_pending_ = false; |
} |
void TCPConnection::OnClose(rtc::AsyncPacketSocket* socket, int error) { |