Chromium Code Reviews| Index: net/http/http_pipelined_stream.cc |
| diff --git a/net/http/http_pipelined_stream.cc b/net/http/http_pipelined_stream.cc |
| index 6b844a6210ddae7eb0f3ca8d16c29fe9d6c290af..b281f4f132d03fa4ec9e791eeaae3e20881d3fcd 100644 |
| --- a/net/http/http_pipelined_stream.cc |
| +++ b/net/http/http_pipelined_stream.cc |
| @@ -10,6 +10,9 @@ |
| #include "net/http/http_pipelined_connection_impl.h" |
| #include "net/http/http_request_headers.h" |
| #include "net/http/http_request_info.h" |
| +#include "net/http/http_response_body_drainer.h" |
| +#include "net/http/http_response_headers.h" |
| +#include "net/http/http_response_info.h" |
| #include "net/http/http_util.h" |
| namespace net { |
| @@ -118,11 +121,18 @@ void HttpPipelinedStream::LogNumRttVsBytesMetrics() const { |
| // TODO(simonjam): I don't want to copy & paste this from http_basic_stream. |
| } |
| -void HttpPipelinedStream::Drain(HttpNetworkSession*) { |
| - // On errors, we already evict everything from the pipeline and close it. |
| - // TODO(simonjam): Consider trying to drain the pipeline in the same way that |
| - // HttpBasicStream does. |
| - delete this; |
| +void HttpPipelinedStream::Drain(HttpNetworkSession* session) { |
|
willchan no longer on Chromium
2011/11/20 18:09:21
I sort of suspect we want to defer the actual drai
James Simonsen
2011/11/22 01:24:20
Done.
|
| + if (!CanFindEndOfResponse()) { |
| + // TODO(simonjam): It may be faster to drain the entire pipeline and re-use |
| + // the connection than to close it and start over. |
|
mmenke
2011/11/18 15:45:38
nit: Think we don't need this TODO any more, unle
James Simonsen
2011/11/22 01:24:20
I want to be able to recover without calling Close
|
| + Close(true); |
| + delete this; |
| + return; |
| + } |
| + HttpResponseBodyDrainer* drainer = new HttpResponseBodyDrainer(this); |
| + drainer->StartWithSize(session, |
| + GetResponseInfo()->headers->GetContentLength()); |
|
mmenke
2011/11/18 15:45:38
Important: This doesn't work with chunked encodin
James Simonsen
2011/11/22 01:24:20
Thanks. Didn't know anything about chunked encodin
|
| + // |drainer| will delete itself when done. |
| } |
| const SSLConfig& HttpPipelinedStream::used_ssl_config() const { |