Index: remoting/protocol/protobuf_video_writer.cc |
diff --git a/remoting/protocol/protobuf_video_writer.cc b/remoting/protocol/protobuf_video_writer.cc |
index 88941c42e6adb6572b7a67c3c8d0896c708fc89a..26b0f95314f974922e8a47609f78c16eac87fc7e 100644 |
--- a/remoting/protocol/protobuf_video_writer.cc |
+++ b/remoting/protocol/protobuf_video_writer.cc |
@@ -17,16 +17,20 @@ namespace remoting { |
namespace protocol { |
ProtobufVideoWriter::ProtobufVideoWriter(base::MessageLoopProxy* message_loop) |
- : buffered_writer_(new BufferedSocketWriter(message_loop)) { |
+ : session_(NULL), |
+ buffered_writer_(new BufferedSocketWriter(message_loop)) { |
} |
-ProtobufVideoWriter::~ProtobufVideoWriter() { } |
+ProtobufVideoWriter::~ProtobufVideoWriter() { |
+ Close(); |
+} |
void ProtobufVideoWriter::Init(protocol::Session* session, |
const InitializedCallback& callback) { |
+ session_ = session; |
initialized_callback_ = callback; |
- session->CreateStreamChannel( |
+ session_->CreateStreamChannel( |
kVideoChannelName, |
base::Bind(&ProtobufVideoWriter::OnChannelReady, base::Unretained(this))); |
} |
@@ -48,6 +52,10 @@ void ProtobufVideoWriter::OnChannelReady(net::StreamSocket* socket) { |
void ProtobufVideoWriter::Close() { |
buffered_writer_->Close(); |
channel_.reset(); |
+ if (session_) { |
+ session_->CancelChannelCreation(kVideoChannelName); |
+ session_ = NULL; |
+ } |
} |
void ProtobufVideoWriter::ProcessVideoPacket(const VideoPacket* packet, |