summaryrefslogtreecommitdiffstats
path: root/net/socket/tcp_client_socket_win.cc
diff options
context:
space:
mode:
authorvandebo@google.com <vandebo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-12 00:06:54 +0000
committervandebo@google.com <vandebo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-12 00:06:54 +0000
commit9a1cd5f0fd0c97db72a702e7323b6e0080b823f8 (patch)
tree248f10063e6a59a4bb22d8963b5c5d588eafd4e4 /net/socket/tcp_client_socket_win.cc
parent5a9bb950970d732b3d9f0ed4ecc052c6d213bde4 (diff)
downloadchromium_src-9a1cd5f0fd0c97db72a702e7323b6e0080b823f8.zip
chromium_src-9a1cd5f0fd0c97db72a702e7323b6e0080b823f8.tar.gz
chromium_src-9a1cd5f0fd0c97db72a702e7323b6e0080b823f8.tar.bz2
More checks to try to find bug 27870.
BUG=27870 TEST=none Review URL: http://codereview.chromium.org/604022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38857 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/tcp_client_socket_win.cc')
-rw-r--r--net/socket/tcp_client_socket_win.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/socket/tcp_client_socket_win.cc b/net/socket/tcp_client_socket_win.cc
index 3046659..32c7725 100644
--- a/net/socket/tcp_client_socket_win.cc
+++ b/net/socket/tcp_client_socket_win.cc
@@ -146,6 +146,8 @@ class TCPClientSocketWin::Core : public base::RefCounted<Core> {
WSABUF write_buffer_;
scoped_refptr<IOBuffer> read_iobuffer_;
scoped_refptr<IOBuffer> write_iobuffer_;
+ // TODO(vandebo) remove when bug 27870 is resolved.
+ size_t write_buffer_length_;
// Throttle the read size based on our current slow start state.
// Returns the throttled read size.
@@ -490,7 +492,8 @@ int TCPClientSocketWin::Write(IOBuffer* buf,
DCHECK_NE(socket_, INVALID_SOCKET);
DCHECK(!waiting_write_);
DCHECK(!write_callback_);
- DCHECK_GT(buf_len, 0);
+ //TODO(vandebo) change back to a DCHECK when 27870 is resolved
+ CHECK(buf_len > 0);
DCHECK(!core_->write_iobuffer_);
static StatsCounter reads("tcp.writes");
@@ -498,6 +501,7 @@ int TCPClientSocketWin::Write(IOBuffer* buf,
core_->write_buffer_.len = buf_len;
core_->write_buffer_.buf = buf->data();
+ core_->write_buffer_length_ = static_cast<size_t>(buf_len);
TRACE_EVENT_BEGIN("socket.write", this, "");
// TODO(wtc): Remove the CHECK after enough testing.
@@ -688,6 +692,10 @@ void TCPClientSocketWin::DidCompleteWrite() {
WSAResetEvent(core_->write_overlapped_.hEvent);
TRACE_EVENT_END("socket.write", this, StringPrintf("%d bytes", num_bytes));
waiting_write_ = false;
+ if (ok) {
+ CHECK(num_bytes <= core_->write_buffer_length_) <<
+ core_->write_buffer_length_;
+ }
core_->write_iobuffer_ = NULL;
DoWriteCallback(ok ? num_bytes : MapWinsockError(WSAGetLastError()));
}