summaryrefslogtreecommitdiff
path: root/chromium/net/http/http_stream_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/http/http_stream_parser.cc')
-rw-r--r--chromium/net/http/http_stream_parser.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/chromium/net/http/http_stream_parser.cc b/chromium/net/http/http_stream_parser.cc
index 853414a106a..0821c848652 100644
--- a/chromium/net/http/http_stream_parser.cc
+++ b/chromium/net/http/http_stream_parser.cc
@@ -179,6 +179,7 @@ HttpStreamParser::HttpStreamParser(ClientSocketHandle* connection,
read_buf_(read_buffer),
read_buf_unused_offset_(0),
response_header_start_offset_(-1),
+ received_bytes_(0),
response_body_length_(-1),
response_body_read_(0),
user_read_buf_(NULL),
@@ -693,6 +694,9 @@ int HttpStreamParser::DoReadBodyComplete(int result) {
result = ERR_CONTENT_LENGTH_MISMATCH;
}
+ if (result > 0)
+ received_bytes_ += result;
+
// Filter incoming data if appropriate. FilterBuf may return an error.
if (result > 0 && chunked_decoder_.get()) {
result = chunked_decoder_->FilterBuf(user_read_buf_->data(), result);
@@ -734,6 +738,7 @@ int HttpStreamParser::DoReadBodyComplete(int result) {
}
if (save_amount) {
+ received_bytes_ -= save_amount;
memcpy(read_buf_->StartOfBuffer(), user_read_buf_->data() + result,
save_amount);
}
@@ -788,6 +793,7 @@ int HttpStreamParser::DoParseResponseHeaders(int end_offset) {
DCHECK_EQ(0, read_buf_unused_offset_);
if (response_header_start_offset_ >= 0) {
+ received_bytes_ += end_offset;
headers = new HttpResponseHeaders(HttpUtil::AssembleRawHeaders(
read_buf_->StartOfBuffer(), end_offset));
} else {