Index: content/renderer/p2p/ipc_socket_factory.cc |
diff --git a/content/renderer/p2p/ipc_socket_factory.cc b/content/renderer/p2p/ipc_socket_factory.cc |
index 59d94ff6837c0f04ff221ef1b51044d0a1f1bb17..d0354943491a691c0bed4ccc59a8d73b5e20ce26 100644 |
--- a/content/renderer/p2p/ipc_socket_factory.cc |
+++ b/content/renderer/p2p/ipc_socket_factory.cc |
@@ -474,8 +474,12 @@ void IpcPacketSocket::OnSendComplete() { |
void IpcPacketSocket::OnError() { |
DCHECK_EQ(base::MessageLoop::current(), message_loop_); |
+ bool was_closed = (state_ == IS_ERROR || state_ == IS_CLOSED); |
state_ = IS_ERROR; |
error_ = ECONNABORTED; |
+ if (!was_closed) { |
+ SignalClose(this, 0); |
+ } |
} |
void IpcPacketSocket::OnDataReceived(const net::IPEndPoint& address, |