Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Unified Diff: remoting/protocol/buffered_socket_writer.cc

Issue 7218061: Close all writers before JingleSession is destroyed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/protocol/buffered_socket_writer.cc
diff --git a/remoting/protocol/buffered_socket_writer.cc b/remoting/protocol/buffered_socket_writer.cc
index db069b2ef8c3c8b500ad22f77199566b4ffdd6f7..5fdeb61218df861f2a1ed067412d46e0b2b5a1e0 100644
--- a/remoting/protocol/buffered_socket_writer.cc
+++ b/remoting/protocol/buffered_socket_writer.cc
@@ -56,11 +56,11 @@ void BufferedSocketWriterBase::Init(net::Socket* socket,
bool BufferedSocketWriterBase::Write(
scoped_refptr<net::IOBufferWithSize> data, Task* done_task) {
- base::AutoLock auto_lock(lock_);
- if (!socket_)
- return false;
- queue_.push_back(new PendingPacket(data, done_task));
- buffer_size_ += data->size();
+ {
+ base::AutoLock auto_lock(lock_);
+ queue_.push_back(new PendingPacket(data, done_task));
+ buffer_size_ += data->size();
+ }
Wez 2011/06/30 18:27:31 nit: Does this belong in this CL?
Sergey Ulanov 2011/06/30 20:55:24 It's not strictly required for this CL, just a sma
message_loop_->PostTask(
FROM_HERE, NewRunnableMethod(this, &BufferedSocketWriterBase::DoWrite));
return true;
@@ -75,11 +75,8 @@ void BufferedSocketWriterBase::DoWrite() {
return;
// Don't write after Close().
- {
- base::AutoLock auto_lock(lock_);
- if (closed_)
- return;
- }
+ if (closed_)
+ return;
while (true) {
net::IOBuffer* current_packet;
@@ -133,8 +130,9 @@ void BufferedSocketWriterBase::OnWritten(int result) {
}
void BufferedSocketWriterBase::HandleError(int result) {
- base::AutoLock auto_lock(lock_);
closed_ = true;
Wez 2011/06/30 18:27:31 nit: Verify notified on correct thread?
Sergey Ulanov 2011/06/30 20:55:24 Done.
+
+ base::AutoLock auto_lock(lock_);
STLDeleteElements(&queue_);
// Notify subclass that an error is received.
@@ -152,7 +150,7 @@ int BufferedSocketWriterBase::GetBufferChunks() {
}
void BufferedSocketWriterBase::Close() {
- base::AutoLock auto_lock(lock_);
+ DCHECK_EQ(message_loop_, MessageLoop::current());
closed_ = true;
}

Powered by Google App Engine
This is Rietveld 408576698