Index: extensions/browser/api/socket/tcp_socket.cc |
diff --git a/extensions/browser/api/socket/tcp_socket.cc b/extensions/browser/api/socket/tcp_socket.cc |
index f3ba5ee48d26621eb9822aa0356635f5cf368a52..4fb5913fc1ec5f13425648d4f2d626f44f548d3c 100644 |
--- a/extensions/browser/api/socket/tcp_socket.cc |
+++ b/extensions/browser/api/socket/tcp_socket.cc |
@@ -358,6 +358,14 @@ ResumableTCPSocket::ResumableTCPSocket( |
buffer_size_(0), |
paused_(false) {} |
+ResumableTCPSocket::~ResumableTCPSocket() { |
+ // Despite ~TCPSocket doing basically the same, we need to disconnect |
+ // before ResumableTCPSocket is destroyed, because we have some extra |
+ // state that relies on the socket being ResumableTCPSocket, like |
+ // read_callback_. |
+ Disconnect(); |
+} |
+ |
bool ResumableTCPSocket::IsPersistent() const { return persistent(); } |
ResumableTCPServerSocket::ResumableTCPServerSocket( |