Index: net/quic/quic_http_stream.cc |
diff --git a/net/quic/quic_http_stream.cc b/net/quic/quic_http_stream.cc |
index d3fd026570810ccb184bacaf05b0e6455a234b9d..a027dcfac73aca1d34c43bdb41729c276bd346a8 100644 |
--- a/net/quic/quic_http_stream.cc |
+++ b/net/quic/quic_http_stream.cc |
@@ -706,15 +706,19 @@ int QuicHttpStream::DoReadRequestBody() { |
} |
int QuicHttpStream::DoReadRequestBodyComplete(int rv) { |
- // |rv| is the result of read from the request body from the last call to |
- // DoSendBody(). |
- if (rv < 0) |
- return rv; |
- |
// If the stream is already closed, don't continue. |
if (!stream_) |
return response_status_; |
+ // |rv| is the result of read from the request body from the last call to |
+ // DoSendBody(). |
+ if (rv < 0) { |
+ stream_->SetDelegate(nullptr); |
+ stream_->Reset(QUIC_ERROR_PROCESSING_STREAM); |
+ ResetStream(); |
+ return rv; |
+ } |
+ |
request_body_buf_ = new DrainableIOBuffer(raw_request_body_buf_.get(), rv); |
if (rv == 0) { // Reached the end. |
DCHECK(request_body_stream_->IsEOF()); |