summaryrefslogtreecommitdiffstats
path: root/remoting/base
diff options
context:
space:
mode:
authorsergeyu <sergeyu@chromium.org>2015-07-30 16:58:29 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-30 23:59:04 +0000
commit7e2c7b2f3fc93e1acd950e6dad14cf9f6919984f (patch)
tree7fda17f16a70bfd72f0dffb3d947aa7aa6e15bd8 /remoting/base
parent96bb0fdb968033261cc9d5a7b4906208fef61f26 (diff)
downloadchromium_src-7e2c7b2f3fc93e1acd950e6dad14cf9f6919984f.zip
chromium_src-7e2c7b2f3fc93e1acd950e6dad14cf9f6919984f.tar.gz
chromium_src-7e2c7b2f3fc93e1acd950e6dad14cf9f6919984f.tar.bz2
Fix BufferedSocketWriter not to return any results from Write().
Previously BufferedSocketWriter was returning false from Write() if the write fails synchronously. That's redundant because BufferedSocketWriter also calls a callback after the failed write. This also fixes a bug in Write() - it was using is_closed() method after calling the callback, which is not allowed because the object may be deleted by the callback. That problem was found by tests added in https://codereview.chromium.org/1258323003 . The bug was introduced recently in https://codereview.chromium.org/1197853003 . Review URL: https://codereview.chromium.org/1250403003 Cr-Commit-Position: refs/heads/master@{#341229}
Diffstat (limited to 'remoting/base')
-rw-r--r--remoting/base/buffered_socket_writer.cc6
-rw-r--r--remoting/base/buffered_socket_writer.h5
2 files changed, 4 insertions, 7 deletions
diff --git a/remoting/base/buffered_socket_writer.cc b/remoting/base/buffered_socket_writer.cc
index c8a8302..827abca 100644
--- a/remoting/base/buffered_socket_writer.cc
+++ b/remoting/base/buffered_socket_writer.cc
@@ -57,7 +57,7 @@ void BufferedSocketWriter::Init(
write_failed_callback_ = write_failed_callback;
}
-bool BufferedSocketWriter::Write(
+void BufferedSocketWriter::Write(
const scoped_refptr<net::IOBufferWithSize>& data,
const base::Closure& done_task) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -65,14 +65,12 @@ bool BufferedSocketWriter::Write(
// Don't write after error.
if (is_closed())
- return false;
+ return;
queue_.push_back(new PendingPacket(
new net::DrainableIOBuffer(data.get(), data->size()), done_task));
DoWrite();
-
- return !is_closed();
}
bool BufferedSocketWriter::is_closed() {
diff --git a/remoting/base/buffered_socket_writer.h b/remoting/base/buffered_socket_writer.h
index 255b2e5..dffed45 100644
--- a/remoting/base/buffered_socket_writer.h
+++ b/remoting/base/buffered_socket_writer.h
@@ -42,9 +42,8 @@ class BufferedSocketWriter {
void Init(const WriteCallback& write_callback,
const WriteFailedCallback& write_failed_callback);
- // Puts a new data chunk in the buffer. Returns false if writing has stopped
- // because of an error.
- bool Write(const scoped_refptr<net::IOBufferWithSize>& buffer,
+ // Puts a new data chunk in the buffer.
+ void Write(const scoped_refptr<net::IOBufferWithSize>& buffer,
const base::Closure& done_task);
// Returns true when there is data waiting to be written.