Index: net/spdy/spdy_proxy_client_socket.cc |
=================================================================== |
--- net/spdy/spdy_proxy_client_socket.cc (revision 113718) |
+++ net/spdy/spdy_proxy_client_socket.cc (working copy) |
@@ -34,7 +34,7 @@ |
next_state_(STATE_DISCONNECTED), |
spdy_stream_(spdy_stream), |
old_read_callback_(NULL), |
- old_write_callback_(NULL), |
+ write_callback_(NULL), |
endpoint_(endpoint), |
auth_( |
new HttpAuthController(HttpAuth::AUTH_PROXY, |
@@ -126,8 +126,7 @@ |
write_buffer_len_ = 0; |
write_bytes_outstanding_ = 0; |
- old_write_callback_ = NULL; |
- write_callback_.Reset(); |
+ write_callback_ = NULL; |
next_state_ = STATE_DISCONNECTED; |
@@ -245,7 +244,7 @@ |
int SpdyProxyClientSocket::Write(IOBuffer* buf, int buf_len, |
OldCompletionCallback* callback) { |
- DCHECK(!old_write_callback_ && write_callback_.is_null()); |
+ DCHECK(!write_callback_); |
if (next_state_ != STATE_OPEN) |
return ERR_SOCKET_NOT_CONNECTED; |
@@ -254,44 +253,6 @@ |
if (buf_len <= kMaxSpdyFrameChunkSize) { |
int rv = spdy_stream_->WriteStreamData(buf, buf_len, spdy::DATA_FLAG_NONE); |
if (rv == ERR_IO_PENDING) { |
- old_write_callback_ = callback; |
- write_buffer_len_ = buf_len; |
- } |
- return rv; |
- } |
- |
- // Since a SPDY Data frame can only include kMaxSpdyFrameChunkSize bytes |
- // we need to send multiple data frames |
- for (int i = 0; i < buf_len; i += kMaxSpdyFrameChunkSize) { |
- int len = std::min(kMaxSpdyFrameChunkSize, buf_len - i); |
- scoped_refptr<DrainableIOBuffer> iobuf(new DrainableIOBuffer(buf, i + len)); |
- iobuf->SetOffset(i); |
- int rv = spdy_stream_->WriteStreamData(iobuf, len, spdy::DATA_FLAG_NONE); |
- if (rv > 0) { |
- write_bytes_outstanding_ -= rv; |
- } else if (rv != ERR_IO_PENDING) { |
- return rv; |
- } |
- } |
- if (write_bytes_outstanding_ > 0) { |
- old_write_callback_ = callback; |
- write_buffer_len_ = buf_len; |
- return ERR_IO_PENDING; |
- } else { |
- return buf_len; |
- } |
-} |
-int SpdyProxyClientSocket::Write(IOBuffer* buf, int buf_len, |
- const CompletionCallback& callback) { |
- DCHECK(!old_write_callback_ && write_callback_.is_null()); |
- if (next_state_ != STATE_OPEN) |
- return ERR_SOCKET_NOT_CONNECTED; |
- |
- DCHECK(spdy_stream_); |
- write_bytes_outstanding_= buf_len; |
- if (buf_len <= kMaxSpdyFrameChunkSize) { |
- int rv = spdy_stream_->WriteStreamData(buf, buf_len, spdy::DATA_FLAG_NONE); |
- if (rv == ERR_IO_PENDING) { |
write_callback_ = callback; |
write_buffer_len_ = buf_len; |
} |
@@ -571,7 +532,7 @@ |
} |
void SpdyProxyClientSocket::OnDataSent(int length) { |
- DCHECK(old_write_callback_ || !write_callback_.is_null()); |
+ DCHECK(write_callback_); |
write_bytes_outstanding_ -= length; |
@@ -581,15 +542,9 @@ |
int rv = write_buffer_len_; |
write_buffer_len_ = 0; |
write_bytes_outstanding_ = 0; |
- if (old_write_callback_) { |
- OldCompletionCallback* c = old_write_callback_; |
- old_write_callback_ = NULL; |
- c->Run(rv); |
- } else { |
- CompletionCallback c = write_callback_; |
- write_callback_.Reset(); |
- c.Run(rv); |
- } |
+ OldCompletionCallback* c = write_callback_; |
+ write_callback_ = NULL; |
+ c->Run(rv); |
} |
} |
@@ -606,10 +561,8 @@ |
next_state_ = STATE_DISCONNECTED; |
base::WeakPtr<SpdyProxyClientSocket> weak_ptr = weak_factory_.GetWeakPtr(); |
- OldCompletionCallback* old_write_callback = old_write_callback_; |
- CompletionCallback write_callback = write_callback_; |
- old_write_callback_ = NULL; |
- write_callback_.Reset(); |
+ OldCompletionCallback* write_callback = write_callback_; |
+ write_callback_ = NULL; |
write_buffer_len_ = 0; |
write_bytes_outstanding_ = 0; |
@@ -631,12 +584,8 @@ |
OnDataReceived(NULL, 0); |
} |
// This may have been deleted by read_callback_, so check first. |
- if (weak_ptr && (old_write_callback || !write_callback.is_null())) { |
- if (old_write_callback) |
- old_write_callback->Run(ERR_CONNECTION_CLOSED); |
- else |
- write_callback.Run(ERR_CONNECTION_CLOSED); |
- } |
+ if (weak_ptr && write_callback) |
+ write_callback->Run(ERR_CONNECTION_CLOSED); |
} |
void SpdyProxyClientSocket::set_chunk_callback(ChunkCallback* /*callback*/) { |