Index: net/tools/quic/quic_spdy_client_stream.cc |
diff --git a/net/tools/quic/quic_spdy_client_stream.cc b/net/tools/quic/quic_spdy_client_stream.cc |
index 761c829f9e55be0a6a4cd019ab128887913b12cd..2c7de8cf40414f6eb63922bd006d190c629c6bc6 100644 |
--- a/net/tools/quic/quic_spdy_client_stream.cc |
+++ b/net/tools/quic/quic_spdy_client_stream.cc |
@@ -18,7 +18,7 @@ static const size_t kHeaderBufInitialSize = 4096; |
QuicSpdyClientStream::QuicSpdyClientStream(QuicStreamId id, |
QuicClientSession* session) |
- : QuicReliableClientStream(id, session), |
+ : ReliableQuicStream(id, session), |
read_buf_(new GrowableIOBuffer()), |
response_headers_received_(false) { |
} |
@@ -26,6 +26,15 @@ QuicSpdyClientStream::QuicSpdyClientStream(QuicStreamId id, |
QuicSpdyClientStream::~QuicSpdyClientStream() { |
} |
+bool QuicSpdyClientStream::OnStreamFrame(const QuicStreamFrame& frame) { |
+ if (!write_side_closed()) { |
+ DLOG(INFO) << "Got a response before the request was complete. " |
+ << "Aborting request."; |
+ CloseWriteSide(); |
+ } |
+ return ReliableQuicStream::OnStreamFrame(frame); |
+} |
+ |
uint32 QuicSpdyClientStream::ProcessData(const char* data, uint32 length) { |
uint32 total_bytes_processed = 0; |
@@ -39,8 +48,7 @@ uint32 QuicSpdyClientStream::ProcessData(const char* data, uint32 length) { |
read_buf_->set_offset(read_buf_->offset() + length); |
ParseResponseHeaders(); |
} else { |
- mutable_data()->append(data + total_bytes_processed, |
- length - total_bytes_processed); |
+ data_.append(data + total_bytes_processed, length - total_bytes_processed); |
} |
return length; |
} |
@@ -51,7 +59,7 @@ void QuicSpdyClientStream::OnFinRead() { |
Reset(QUIC_BAD_APPLICATION_PAYLOAD); |
} else if ((headers().content_length_status() == |
BalsaHeadersEnums::VALID_CONTENT_LENGTH) && |
- mutable_data()->size() != headers().content_length()) { |
+ data_.size() != headers().content_length()) { |
Reset(QUIC_BAD_APPLICATION_PAYLOAD); |
} |
} |
@@ -87,7 +95,7 @@ int QuicSpdyClientStream::ParseResponseHeaders() { |
return -1; |
} |
- if (!SpdyUtils::FillBalsaResponseHeaders(headers, mutable_headers())) { |
+ if (!SpdyUtils::FillBalsaResponseHeaders(headers, &headers_)) { |
Reset(QUIC_BAD_APPLICATION_PAYLOAD); |
return -1; |
} |
@@ -95,11 +103,16 @@ int QuicSpdyClientStream::ParseResponseHeaders() { |
size_t delta = read_buf_len - len; |
if (delta > 0) { |
- mutable_data()->append(data + len, delta); |
+ data_.append(data + len, delta); |
} |
return len; |
} |
+// Sends body data to the server and returns the number of bytes sent. |
+ssize_t QuicSpdyClientStream::SendBody(const string& data, bool fin) { |
+ return WriteData(data, fin).bytes_consumed; |
+} |
+ |
} // namespace tools |
} // namespace net |