| 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.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "net/base/io_buffer.h" | 10 #include "net/base/io_buffer.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 &request_headers_, SPDY3, /*direct=*/true); | 114 &request_headers_, SPDY3, /*direct=*/true); |
| 115 | 115 |
| 116 // Store the request body. | 116 // Store the request body. |
| 117 request_body_stream_ = request_info_->upload_data_stream; | 117 request_body_stream_ = request_info_->upload_data_stream; |
| 118 if (request_body_stream_) { | 118 if (request_body_stream_) { |
| 119 // TODO(rch): Can we be more precise about when to allocate | 119 // TODO(rch): Can we be more precise about when to allocate |
| 120 // raw_request_body_buf_. Removed the following check. DoReadRequestBody() | 120 // raw_request_body_buf_. Removed the following check. DoReadRequestBody() |
| 121 // was being called even if we didn't yet allocate raw_request_body_buf_. | 121 // was being called even if we didn't yet allocate raw_request_body_buf_. |
| 122 // && (request_body_stream_->size() || | 122 // && (request_body_stream_->size() || |
| 123 // request_body_stream_->is_chunked())) | 123 // request_body_stream_->is_chunked())) |
| 124 // | 124 // Use 10 packets as the body buffer size to give enough space to |
| 125 // Use kMaxPacketSize as the buffer size, since the request | 125 // help ensure we don't often send out partial packets. |
| 126 // body data is written with this size at a time. | 126 raw_request_body_buf_ = new IOBufferWithSize(10 * kMaxPacketSize); |
| 127 // TODO(rch): use a smarter value since we can't write an entire | |
| 128 // packet due to overhead. | |
| 129 raw_request_body_buf_ = new IOBufferWithSize(kMaxPacketSize); | |
| 130 // The request body buffer is empty at first. | 127 // The request body buffer is empty at first. |
| 131 request_body_buf_ = new DrainableIOBuffer(raw_request_body_buf_.get(), 0); | 128 request_body_buf_ = new DrainableIOBuffer(raw_request_body_buf_.get(), 0); |
| 132 } | 129 } |
| 133 | 130 |
| 134 // Store the response info. | 131 // Store the response info. |
| 135 response_info_ = response; | 132 response_info_ = response; |
| 136 | 133 |
| 137 next_state_ = STATE_SEND_HEADERS; | 134 next_state_ = STATE_SEND_HEADERS; |
| 138 int rv = DoLoop(OK); | 135 int rv = DoLoop(OK); |
| 139 if (rv == ERR_IO_PENDING) | 136 if (rv == ERR_IO_PENDING) |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 | 546 |
| 550 void QuicHttpStream::BufferResponseBody(const char* data, int length) { | 547 void QuicHttpStream::BufferResponseBody(const char* data, int length) { |
| 551 if (length == 0) | 548 if (length == 0) |
| 552 return; | 549 return; |
| 553 IOBufferWithSize* io_buffer = new IOBufferWithSize(length); | 550 IOBufferWithSize* io_buffer = new IOBufferWithSize(length); |
| 554 memcpy(io_buffer->data(), data, length); | 551 memcpy(io_buffer->data(), data, length); |
| 555 response_body_.push_back(make_scoped_refptr(io_buffer)); | 552 response_body_.push_back(make_scoped_refptr(io_buffer)); |
| 556 } | 553 } |
| 557 | 554 |
| 558 } // namespace net | 555 } // namespace net |
| OLD | NEW |