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 fdcec3115d3fc515723f977c54bf68cfd9b4f8f8..b484e04b18e093f0b9ab21c4bfaccd3967caf635 100644 |
--- a/net/http/http_response_body_drainer.cc |
+++ b/net/http/http_response_body_drainer.cc |
@@ -9,15 +9,19 @@ |
#include "net/base/io_buffer.h" |
#include "net/base/net_errors.h" |
#include "net/http/http_network_session.h" |
+#include "net/http/http_response_info.h" |
#include "net/http/http_stream.h" |
namespace net { |
-HttpResponseBodyDrainer::HttpResponseBodyDrainer(HttpStream* stream) |
- : stream_(stream), |
+HttpResponseBodyDrainer::HttpResponseBodyDrainer( |
+ HttpStream* stream, |
+ scoped_ptr<HttpResponseInfo> response_info) |
+ : response_info_(std::move(response_info)), |
+ stream_(stream), |
next_state_(STATE_NONE), |
total_read_(0), |
- session_(NULL) {} |
+ session_(nullptr) {} |
HttpResponseBodyDrainer::~HttpResponseBodyDrainer() {} |
@@ -113,7 +117,7 @@ void HttpResponseBodyDrainer::Finish(int result) { |
if (session_) |
session_->RemoveResponseDrainer(this); |
- if (result < 0) { |
+ if (result < 0 || !stream_->CanReuseConnection()) { |
stream_->Close(true /* no keep-alive */); |
} else { |
DCHECK_EQ(OK, result); |