Index: remoting/protocol/webrtc_data_stream_adapter.cc |
diff --git a/remoting/protocol/webrtc_data_stream_adapter.cc b/remoting/protocol/webrtc_data_stream_adapter.cc |
index e278aad9cc8b481e27a5ee48d3740207599ae1cf..b92f2d371569303f4b60405647aeaa1a1fbe901e 100644 |
--- a/remoting/protocol/webrtc_data_stream_adapter.cc |
+++ b/remoting/protocol/webrtc_data_stream_adapter.cc |
@@ -22,7 +22,7 @@ namespace protocol { |
WebrtcDataStreamAdapter::WebrtcDataStreamAdapter( |
rtc::scoped_refptr<webrtc::DataChannelInterface> channel) |
- : channel_(channel) { |
+ : channel_(channel.get()) { |
channel_->RegisterObserver(this); |
DCHECK_EQ(channel_->state(), webrtc::DataChannelInterface::kConnecting); |
} |
@@ -31,6 +31,11 @@ WebrtcDataStreamAdapter::~WebrtcDataStreamAdapter() { |
if (channel_) { |
channel_->UnregisterObserver(); |
channel_->Close(); |
+ |
+ // Destroy |channel_| asynchronously as it may be on stack. |
+ channel_->AddRef(); |
+ base::ThreadTaskRunnerHandle::Get()->ReleaseSoon(FROM_HERE, channel_.get()); |
+ channel_ = nullptr; |
} |
} |