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()) { |
+ if (!request_callback_.is_null()) { |
+ // Temporary for the review. |
+ // Never called!!! |
mmenke
2016/06/15 16:15:18
What if we have a chunked upload with no data? - i
maksims (do not use this acc)
2016/06/16 05:12:46
Nope, check the SendChunkedPostLastEmpty unit test
maksims (do not use this acc)
2016/06/16 05:28:08
And we know about the eof only after upload_data_s
maksims (do not use this acc)
2016/06/16 06:52:28
And I guess the only way to envoke the first eof i
|
+ DCHECK(false); |
+ 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); |