Chromium Code Reviews| Index: net/spdy/spdy_http_stream.cc |
| diff --git a/net/spdy/spdy_http_stream.cc b/net/spdy/spdy_http_stream.cc |
| index 259581a5229173cc2e7fcbc84963396f357c0d80..040fc3a3d9cf3078cc812f07d40514faea67f6b3 100644 |
| --- a/net/spdy/spdy_http_stream.cc |
| +++ b/net/spdy/spdy_http_stream.cc |
| @@ -302,13 +302,12 @@ void SpdyHttpStream::Cancel() { |
| } |
| void SpdyHttpStream::OnRequestHeadersSent() { |
| - if (!request_callback_.is_null()) |
| - DoRequestCallback(OK); |
| - |
| - // TODO(akalin): Do this immediately after sending the request |
| - // headers. |
| - if (HasUploadData()) |
| + if (HasUploadData()) { |
| ReadAndSendRequestBodyData(); |
| + } else { |
| + if (!request_callback_.is_null()) |
| + DoRequestCallback(OK); |
| + } |
| } |
| SpdyResponseHeadersStatus SpdyHttpStream::OnResponseHeadersUpdated( |
| @@ -436,9 +435,15 @@ void SpdyHttpStream::OnStreamCreated( |
| void SpdyHttpStream::ReadAndSendRequestBodyData() { |
| CHECK(HasUploadData()); |
| CHECK_EQ(request_body_buf_size_, 0); |
| - |
| - if (request_info_->upload_data_stream->IsEOF()) |
| + if (request_info_->upload_data_stream->IsEOF()) { |
|
mmenke
2016/06/17 15:30:08
Maybe add a comment that this case never currently
|
| + if (!request_callback_.is_null()) { |
| + // Temporary for the review. |
| + // Never called!!! |
| + DCHECK(false); |
|
mmenke
2016/06/17 15:30:08
Remove this DCHECK and the comment (And remove bra
|
| + DoRequestCallback(OK); |
| + } |
| return; |
| + } |
| // Read the data from the request body stream. |
| const int rv = request_info_->upload_data_stream |
| @@ -461,6 +466,9 @@ void SpdyHttpStream::OnRequestBodyReadCompleted(int status) { |
| // Only the final fame may have a length of 0. |
| if (eof) { |
| CHECK_GE(request_body_buf_size_, 0); |
| + // Call the cb only after all data is sent. |
| + if (!request_callback_.is_null()) |
| + DoRequestCallback(OK); |
| } else { |
| CHECK_GT(request_body_buf_size_, 0); |
| } |
| @@ -533,7 +541,6 @@ void SpdyHttpStream::DoBufferedReadCallback() { |
| void SpdyHttpStream::DoRequestCallback(int rv) { |
| CHECK_NE(rv, ERR_IO_PENDING); |
| CHECK(!request_callback_.is_null()); |
| - |
| // Since Run may result in being called back, reset request_callback_ in |
| // advance. |
| base::ResetAndReturn(&request_callback_).Run(rv); |