OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
6 | 6 |
7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
9 #include "base/strings/string_split.h" | 9 #include "base/strings/string_split.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 } | 699 } |
700 | 700 |
701 int QuicHttpStream::DoReadRequestBody() { | 701 int QuicHttpStream::DoReadRequestBody() { |
702 next_state_ = STATE_READ_REQUEST_BODY_COMPLETE; | 702 next_state_ = STATE_READ_REQUEST_BODY_COMPLETE; |
703 return request_body_stream_->Read( | 703 return request_body_stream_->Read( |
704 raw_request_body_buf_.get(), raw_request_body_buf_->size(), | 704 raw_request_body_buf_.get(), raw_request_body_buf_->size(), |
705 base::Bind(&QuicHttpStream::OnIOComplete, weak_factory_.GetWeakPtr())); | 705 base::Bind(&QuicHttpStream::OnIOComplete, weak_factory_.GetWeakPtr())); |
706 } | 706 } |
707 | 707 |
708 int QuicHttpStream::DoReadRequestBodyComplete(int rv) { | 708 int QuicHttpStream::DoReadRequestBodyComplete(int rv) { |
709 // |rv| is the result of read from the request body from the last call to | |
710 // DoSendBody(). | |
711 if (rv < 0) | |
712 return rv; | |
713 | |
714 // If the stream is already closed, don't continue. | 709 // If the stream is already closed, don't continue. |
715 if (!stream_) | 710 if (!stream_) |
716 return response_status_; | 711 return response_status_; |
717 | 712 |
| 713 // |rv| is the result of read from the request body from the last call to |
| 714 // DoSendBody(). |
| 715 if (rv < 0) { |
| 716 stream_->SetDelegate(nullptr); |
| 717 stream_->Reset(QUIC_ERROR_PROCESSING_STREAM); |
| 718 ResetStream(); |
| 719 return rv; |
| 720 } |
| 721 |
718 request_body_buf_ = new DrainableIOBuffer(raw_request_body_buf_.get(), rv); | 722 request_body_buf_ = new DrainableIOBuffer(raw_request_body_buf_.get(), rv); |
719 if (rv == 0) { // Reached the end. | 723 if (rv == 0) { // Reached the end. |
720 DCHECK(request_body_stream_->IsEOF()); | 724 DCHECK(request_body_stream_->IsEOF()); |
721 } | 725 } |
722 | 726 |
723 next_state_ = STATE_SEND_BODY; | 727 next_state_ = STATE_SEND_BODY; |
724 return OK; | 728 return OK; |
725 } | 729 } |
726 | 730 |
727 int QuicHttpStream::DoSendBody() { | 731 int QuicHttpStream::DoSendBody() { |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); | 816 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); |
813 stream_ = nullptr; | 817 stream_ = nullptr; |
814 | 818 |
815 // If |request_body_stream_| is non-NULL, Reset it, to abort any in progress | 819 // If |request_body_stream_| is non-NULL, Reset it, to abort any in progress |
816 // read. | 820 // read. |
817 if (request_body_stream_) | 821 if (request_body_stream_) |
818 request_body_stream_->Reset(); | 822 request_body_stream_->Reset(); |
819 } | 823 } |
820 | 824 |
821 } // namespace net | 825 } // namespace net |
OLD | NEW |