| Index: net/http/http_stream_parser.cc
|
| diff --git a/net/http/http_stream_parser.cc b/net/http/http_stream_parser.cc
|
| index 7b195e7f698f11abb120c7c93642bed5871935cb..17b5c6e3f9e08a86e3a5602c23d68e257fe0b79e 100644
|
| --- a/net/http/http_stream_parser.cc
|
| +++ b/net/http/http_stream_parser.cc
|
| @@ -248,15 +248,15 @@ int HttpStreamParser::SendRequest(const std::string& request_line,
|
| // We'll repurpose |request_headers_| to store the merged headers and
|
| // body.
|
| request_headers_ = new DrainableIOBuffer(
|
| - merged_request_headers_and_body, merged_size);
|
| + merged_request_headers_and_body.get(), merged_size);
|
|
|
| memcpy(request_headers_->data(), request.data(), request.size());
|
| request_headers_->DidConsume(request.size());
|
|
|
| size_t todo = request_->upload_data_stream->size();
|
| while (todo) {
|
| - int consumed = request_->upload_data_stream->Read(request_headers_, todo,
|
| - CompletionCallback());
|
| + int consumed = request_->upload_data_stream
|
| + ->Read(request_headers_.get(), todo, CompletionCallback());
|
| DCHECK_GT(consumed, 0); // Read() won't fail if not chunked.
|
| request_headers_->DidConsume(consumed);
|
| todo -= consumed;
|
| @@ -278,8 +278,8 @@ int HttpStreamParser::SendRequest(const std::string& request_line,
|
| // If we didn't merge the body with the headers, then |request_headers_|
|
| // contains just the HTTP headers.
|
| scoped_refptr<StringIOBuffer> headers_io_buf(new StringIOBuffer(request));
|
| - request_headers_ = new DrainableIOBuffer(headers_io_buf,
|
| - headers_io_buf->size());
|
| + request_headers_ =
|
| + new DrainableIOBuffer(headers_io_buf.get(), headers_io_buf->size());
|
| }
|
|
|
| result = DoLoop(OK);
|
| @@ -422,9 +422,8 @@ int HttpStreamParser::DoSendHeaders(int result) {
|
| if (bytes_remaining == request_headers_->size()) {
|
| response_->request_time = base::Time::Now();
|
| }
|
| - result = connection_->socket()->Write(request_headers_,
|
| - bytes_remaining,
|
| - io_callback_);
|
| + result = connection_->socket()
|
| + ->Write(request_headers_.get(), bytes_remaining, io_callback_);
|
| } else if (request_->upload_data_stream != NULL &&
|
| (request_->upload_data_stream->is_chunked() ||
|
| // !IsEOF() indicates that the body wasn't merged.
|
| @@ -451,10 +450,10 @@ int HttpStreamParser::DoSendBody(int result) {
|
| // Send the remaining data in the request body buffer.
|
| request_body_send_buf_->DidConsume(result);
|
| if (request_body_send_buf_->BytesRemaining() > 0) {
|
| - return connection_->socket()->Write(
|
| - request_body_send_buf_,
|
| - request_body_send_buf_->BytesRemaining(),
|
| - io_callback_);
|
| + return connection_->socket()
|
| + ->Write(request_body_send_buf_.get(),
|
| + request_body_send_buf_->BytesRemaining(),
|
| + io_callback_);
|
| }
|
|
|
| if (request_->upload_data_stream->is_chunked() && sent_last_chunk_) {
|
| @@ -464,7 +463,7 @@ int HttpStreamParser::DoSendBody(int result) {
|
|
|
| request_body_read_buf_->Clear();
|
| io_state_ = STATE_SEND_REQUEST_READING_BODY;
|
| - return request_->upload_data_stream->Read(request_body_read_buf_,
|
| + return request_->upload_data_stream->Read(request_body_read_buf_.get(),
|
| request_body_read_buf_->capacity(),
|
| io_callback_);
|
| }
|
| @@ -513,9 +512,8 @@ int HttpStreamParser::DoReadHeaders() {
|
| // See if the user is passing in an IOBuffer with a NULL |data_|.
|
| CHECK(read_buf_->data());
|
|
|
| - return connection_->socket()->Read(read_buf_,
|
| - read_buf_->RemainingCapacity(),
|
| - io_callback_);
|
| + return connection_->socket()
|
| + ->Read(read_buf_.get(), read_buf_->RemainingCapacity(), io_callback_);
|
| }
|
|
|
| int HttpStreamParser::DoReadHeadersComplete(int result) {
|
| @@ -650,8 +648,8 @@ int HttpStreamParser::DoReadBody() {
|
| return 0;
|
|
|
| DCHECK_EQ(0, read_buf_->offset());
|
| - return connection_->socket()->Read(user_read_buf_, user_read_buf_len_,
|
| - io_callback_);
|
| + return connection_->socket()
|
| + ->Read(user_read_buf_.get(), user_read_buf_len_, io_callback_);
|
| }
|
|
|
| int HttpStreamParser::DoReadBodyComplete(int result) {
|
| @@ -795,25 +793,26 @@ int HttpStreamParser::DoParseResponseHeaders(int end_offset) {
|
| // If they exist, and have distinct values, it's a potential response
|
| // smuggling attack.
|
| if (!headers->HasHeader("Transfer-Encoding")) {
|
| - if (HeadersContainMultipleCopiesOfField(*headers, "Content-Length"))
|
| + if (HeadersContainMultipleCopiesOfField(*headers.get(), "Content-Length"))
|
| return ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH;
|
| }
|
|
|
| // Check for multiple Content-Disposition or Location headers. If they exist,
|
| // it's also a potential response smuggling attack.
|
| - if (HeadersContainMultipleCopiesOfField(*headers, "Content-Disposition"))
|
| + if (HeadersContainMultipleCopiesOfField(*headers.get(),
|
| + "Content-Disposition"))
|
| return ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION;
|
| - if (HeadersContainMultipleCopiesOfField(*headers, "Location"))
|
| + if (HeadersContainMultipleCopiesOfField(*headers.get(), "Location"))
|
| return ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION;
|
|
|
| response_->headers = headers;
|
| response_->connection_info = HttpResponseInfo::CONNECTION_INFO_HTTP1;
|
| - response_->vary_data.Init(*request_, *response_->headers);
|
| + response_->vary_data.Init(*request_, *response_->headers.get());
|
| DVLOG(1) << __FUNCTION__ << "()"
|
| - << " content_length = \""
|
| - << response_->headers->GetContentLength() << "\n\""
|
| - << " headers = \"" << GetResponseHeaderLines(*response_->headers)
|
| - << "\"";
|
| + << " content_length = \"" << response_->headers->GetContentLength()
|
| + << "\n\""
|
| + << " headers = \""
|
| + << GetResponseHeaderLines(*response_->headers.get()) << "\"";
|
| return OK;
|
| }
|
|
|
|
|