Index: chrome/browser/devtools/device/port_forwarding_controller.cc |
diff --git a/chrome/browser/devtools/device/port_forwarding_controller.cc b/chrome/browser/devtools/device/port_forwarding_controller.cc |
index c22789b157fd2ce513c955aa2f39892140b0e517..8efda7d84d5be6c5d908388eb81f7312f498ea02 100644 |
--- a/chrome/browser/devtools/device/port_forwarding_controller.cc |
+++ b/chrome/browser/devtools/device/port_forwarding_controller.cc |
@@ -120,8 +120,14 @@ class SocketTunnel : public base::NonThreadSafe { |
return; |
} |
+ ++pending_writes_; // avoid SelfDestruct in first Pump |
Pump(host_socket_.get(), remote_socket_.get()); |
- Pump(remote_socket_.get(), host_socket_.get()); |
+ --pending_writes_; |
+ if (pending_destruction_) { |
+ SelfDestruct(); |
+ } else { |
+ Pump(remote_socket_.get(), host_socket_.get()); |
+ } |
} |
void Pump(net::StreamSocket* from, net::StreamSocket* to) { |