Chromium Code Reviews| 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) { |