Index: net/quic/quic_spdy_server_stream.cc |
diff --git a/net/quic/quic_spdy_server_stream.cc b/net/quic/quic_spdy_server_stream.cc |
index 81fc2e064e7b0c626a5e749aea7d7c8483fab072..2de6a7e56f9276f9f3fb8bc00e3bed9a20adaea3 100644 |
--- a/net/quic/quic_spdy_server_stream.cc |
+++ b/net/quic/quic_spdy_server_stream.cc |
@@ -8,11 +8,11 @@ |
#include "net/quic/quic_in_memory_cache.h" |
#include "net/quic/quic_session.h" |
#include "net/spdy/spdy_framer.h" |
-#include "net/tools/quic/spdy_utils.h" |
+#include "net/spdy/spdy_header_block.h" |
+#include "net/spdy/spdy_http_utils.h" |
using base::StringPiece; |
using std::string; |
-using net::tools::SpdyUtils; |
namespace net { |
@@ -29,8 +29,6 @@ QuicSpdyServerStream::~QuicSpdyServerStream() { |
} |
uint32 QuicSpdyServerStream::ProcessData(const char* data, uint32 data_len) { |
- uint32 total_bytes_processed = 0; |
- |
// Are we still reading the request headers. |
if (!request_headers_received_) { |
// Grow the read buffer if necessary. |
@@ -40,9 +38,6 @@ uint32 QuicSpdyServerStream::ProcessData(const char* data, uint32 data_len) { |
memcpy(read_buf_->data(), data, data_len); |
read_buf_->set_offset(read_buf_->offset() + data_len); |
ParseRequestHeaders(); |
- } else { |
- body_.append(data + total_bytes_processed, |
- data_len - total_bytes_processed); |
} |
return data_len; |
} |
@@ -55,17 +50,12 @@ void QuicSpdyServerStream::OnFinRead() { |
if (!request_headers_received_) { |
SendErrorResponse(); // We're not done reading headers. |
- } else if ((headers_.content_length_status() == |
- BalsaHeadersEnums::VALID_CONTENT_LENGTH) && |
- body_.size() != headers_.content_length()) { |
- SendErrorResponse(); // Invalid content length |
} else { |
SendResponse(); |
} |
} |
int QuicSpdyServerStream::ParseRequestHeaders() { |
- size_t read_buf_len = static_cast<size_t>(read_buf_->offset()); |
SpdyFramer framer(SPDY3); |
SpdyHeaderBlock headers; |
char* data = read_buf_->StartOfBuffer(); |
@@ -75,16 +65,12 @@ int QuicSpdyServerStream::ParseRequestHeaders() { |
return -1; |
} |
- if (!SpdyUtils::FillBalsaRequestHeaders(headers, &headers_)) { |
+ request_line_.reset(HttpRequestLine::FromSpdyHeaders(headers)); |
+ if (!request_line_) { |
SendErrorResponse(); |
return -1; |
} |
- size_t delta = read_buf_len - len; |
- if (delta > 0) { |
- body_.append(data + len, delta); |
- } |
- |
request_headers_received_ = true; |
return len; |
} |
@@ -92,7 +78,7 @@ int QuicSpdyServerStream::ParseRequestHeaders() { |
void QuicSpdyServerStream::SendResponse() { |
// Find response in cache. If not found, send error response. |
const QuicInMemoryCache::Response* response = |
- QuicInMemoryCache::GetInstance()->GetResponse(headers_); |
+ QuicInMemoryCache::GetInstance()->GetResponse(*request_line_); |
if (response == NULL) { |
SendErrorResponse(); |
return; |
@@ -115,23 +101,23 @@ void QuicSpdyServerStream::SendResponse() { |
void QuicSpdyServerStream::SendErrorResponse() { |
DVLOG(1) << "Sending error response for stream " << id(); |
- BalsaHeaders headers; |
- headers.SetResponseFirstlineFromStringPieces( |
- "HTTP/1.1", "500", "Server Error"); |
- headers.ReplaceOrAppendHeader("content-length", "3"); |
+ scoped_refptr<HttpResponseHeaders> headers |
+ = new HttpResponseHeaders("HTTP/1.1 500 Server Error\n" |
+ "content-length: 3\n"); |
SendHeadersAndBody(headers, "bad"); |
} |
void QuicSpdyServerStream::SendHeadersAndBody( |
- const BalsaHeaders& response_headers, |
+ scoped_refptr<HttpResponseHeaders> response_headers, |
StringPiece body) { |
// We only support SPDY and HTTP, and neither handles bidirectional streaming. |
if (!read_side_closed()) { |
CloseReadSide(); |
} |
- SpdyHeaderBlock header_block = |
- SpdyUtils::ResponseHeadersToSpdyHeaders(response_headers); |
+ SpdyHeaderBlock header_block; |
+ CreateSpdyHeadersFromHttpResponse( |
+ response_headers, &header_block, net::SPDY3); |
WriteHeaders(header_block, body.empty(), NULL); |