| 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 5053b869378fc05aaddaf1a27cf75ed0d60d539b..f3ba5ee48d26621eb9822aa0356635f5cf368a52 100644
|
| --- a/extensions/browser/api/socket/tcp_socket.cc
|
| +++ b/extensions/browser/api/socket/tcp_socket.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "extensions/browser/api/socket/tcp_socket.h"
|
|
|
| +#include "base/callback_helpers.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| @@ -115,7 +116,11 @@ void TCPSocket::Disconnect() {
|
| socket_->Disconnect();
|
| server_socket_.reset(NULL);
|
| connect_callback_.Reset();
|
| - read_callback_.Reset();
|
| + // TODO(devlin): Should we do this for all callbacks?
|
| + if (!read_callback_.is_null()) {
|
| + base::ResetAndReturn(&read_callback_)
|
| + .Run(net::ERR_CONNECTION_CLOSED, nullptr);
|
| + }
|
| accept_callback_.Reset();
|
| accept_socket_.reset(NULL);
|
| }
|
|
|