Chromium Code Reviews| Index: net/http/http_response_body_drainer.cc |
| diff --git a/net/http/http_response_body_drainer.cc b/net/http/http_response_body_drainer.cc |
| index aefb18026528f2b90307349fc153e15cbdd7d3c6..718b5ae7ac38eead6c4bf8091cc0b25602c0d9cb 100644 |
| --- a/net/http/http_response_body_drainer.cc |
| +++ b/net/http/http_response_body_drainer.cc |
| @@ -25,7 +25,14 @@ HttpResponseBodyDrainer::HttpResponseBodyDrainer(HttpStream* stream) |
| HttpResponseBodyDrainer::~HttpResponseBodyDrainer() {} |
| void HttpResponseBodyDrainer::Start(HttpNetworkSession* session) { |
| - read_buf_ = new IOBuffer(kDrainBodyBufferSize); |
| + StartWithSize(session, kDrainBodyBufferSize); |
| +} |
| + |
| +void HttpResponseBodyDrainer::StartWithSize(HttpNetworkSession* session, |
| + int num_bytes_to_drain) { |
| + DCHECK_LT(0, num_bytes_to_drain); |
| + read_size_ = num_bytes_to_drain; |
| + read_buf_ = new IOBuffer(read_size_); |
|
mmenke
2011/11/18 15:45:38
This could be a very large amount of memory, for,
James Simonsen
2011/11/22 01:24:20
Done.
|
| next_state_ = STATE_DRAIN_RESPONSE_BODY; |
| int rv = DoLoop(OK); |
| @@ -71,7 +78,7 @@ int HttpResponseBodyDrainer::DoDrainResponseBody() { |
| next_state_ = STATE_DRAIN_RESPONSE_BODY_COMPLETE; |
| return stream_->ReadResponseBody( |
| - read_buf_, kDrainBodyBufferSize - total_read_, |
| + read_buf_, read_size_ - total_read_, |
| &io_callback_); |
| } |