Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: net/http/http_stream_parser.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_stream_parser.h ('k') | net/http/http_stream_parser_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/http/http_stream_parser.h" 5 #include "net/http/http_stream_parser.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 26 matching lines...) Expand all
37 HEADER_HTTP_09_RESPONSE_OVER_SSL = 6, 37 HEADER_HTTP_09_RESPONSE_OVER_SSL = 6,
38 HEADER_HTTP_09_ON_REUSED_SOCKET = 7, 38 HEADER_HTTP_09_ON_REUSED_SOCKET = 7,
39 NUM_HEADER_EVENTS 39 NUM_HEADER_EVENTS
40 }; 40 };
41 41
42 void RecordHeaderParserEvent(HttpHeaderParserEvent header_event) { 42 void RecordHeaderParserEvent(HttpHeaderParserEvent header_event) {
43 UMA_HISTOGRAM_ENUMERATION("Net.HttpHeaderParserEvent", header_event, 43 UMA_HISTOGRAM_ENUMERATION("Net.HttpHeaderParserEvent", header_event,
44 NUM_HEADER_EVENTS); 44 NUM_HEADER_EVENTS);
45 } 45 }
46 46
47 const uint64 kMaxMergedHeaderAndBodySize = 1400; 47 const uint64_t kMaxMergedHeaderAndBodySize = 1400;
48 const size_t kRequestBodyBufferSize = 1 << 14; // 16KB 48 const size_t kRequestBodyBufferSize = 1 << 14; // 16KB
49 49
50 std::string GetResponseHeaderLines(const HttpResponseHeaders& headers) { 50 std::string GetResponseHeaderLines(const HttpResponseHeaders& headers) {
51 std::string raw_headers = headers.raw_headers(); 51 std::string raw_headers = headers.raw_headers();
52 const char* null_separated_headers = raw_headers.c_str(); 52 const char* null_separated_headers = raw_headers.c_str();
53 const char* header_line = null_separated_headers; 53 const char* header_line = null_separated_headers;
54 std::string cr_separated_headers; 54 std::string cr_separated_headers;
55 while (header_line[0] != 0) { 55 while (header_line[0] != 0) {
56 cr_separated_headers += header_line; 56 cr_separated_headers += header_line;
57 cr_separated_headers += "\n"; 57 cr_separated_headers += "\n";
(...skipping 14 matching lines...) Expand all
72 // such headers, and if so, return true if they have different values. 72 // such headers, and if so, return true if they have different values.
73 std::string field_value2; 73 std::string field_value2;
74 while (headers.EnumerateHeader(&it, field_name, &field_value2)) { 74 while (headers.EnumerateHeader(&it, field_name, &field_value2)) {
75 if (field_value != field_value2) 75 if (field_value != field_value2)
76 return true; 76 return true;
77 } 77 }
78 return false; 78 return false;
79 } 79 }
80 80
81 scoped_ptr<base::Value> NetLogSendRequestBodyCallback( 81 scoped_ptr<base::Value> NetLogSendRequestBodyCallback(
82 uint64 length, 82 uint64_t length,
83 bool is_chunked, 83 bool is_chunked,
84 bool did_merge, 84 bool did_merge,
85 NetLogCaptureMode /* capture_mode */) { 85 NetLogCaptureMode /* capture_mode */) {
86 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 86 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
87 dict->SetInteger("length", static_cast<int>(length)); 87 dict->SetInteger("length", static_cast<int>(length));
88 dict->SetBoolean("is_chunked", is_chunked); 88 dict->SetBoolean("is_chunked", is_chunked);
89 dict->SetBoolean("did_merge", did_merge); 89 dict->SetBoolean("did_merge", did_merge);
90 return dict.Pass(); 90 return dict.Pass();
91 } 91 }
92 92
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 scoped_refptr<IOBuffer> merged_request_headers_and_body( 280 scoped_refptr<IOBuffer> merged_request_headers_and_body(
281 new IOBuffer(merged_size)); 281 new IOBuffer(merged_size));
282 // We'll repurpose |request_headers_| to store the merged headers and 282 // We'll repurpose |request_headers_| to store the merged headers and
283 // body. 283 // body.
284 request_headers_ = new DrainableIOBuffer( 284 request_headers_ = new DrainableIOBuffer(
285 merged_request_headers_and_body.get(), merged_size); 285 merged_request_headers_and_body.get(), merged_size);
286 286
287 memcpy(request_headers_->data(), request.data(), request_headers_length_); 287 memcpy(request_headers_->data(), request.data(), request_headers_length_);
288 request_headers_->DidConsume(request_headers_length_); 288 request_headers_->DidConsume(request_headers_length_);
289 289
290 uint64 todo = request_->upload_data_stream->size(); 290 uint64_t todo = request_->upload_data_stream->size();
291 while (todo) { 291 while (todo) {
292 int consumed = request_->upload_data_stream->Read( 292 int consumed = request_->upload_data_stream->Read(
293 request_headers_.get(), static_cast<int>(todo), CompletionCallback()); 293 request_headers_.get(), static_cast<int>(todo), CompletionCallback());
294 DCHECK_GT(consumed, 0); // Read() won't fail if not chunked. 294 DCHECK_GT(consumed, 0); // Read() won't fail if not chunked.
295 request_headers_->DidConsume(consumed); 295 request_headers_->DidConsume(consumed);
296 todo -= consumed; 296 todo -= consumed;
297 } 297 }
298 DCHECK(request_->upload_data_stream->IsEOF()); 298 DCHECK(request_->upload_data_stream->IsEOF());
299 // Reset the offset, so the buffer can be read from the beginning. 299 // Reset the offset, so the buffer can be read from the beginning.
300 request_headers_->SetOffset(0); 300 request_headers_->SetOffset(0);
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 // Save the overflow data, which can be in two places. There may be 728 // Save the overflow data, which can be in two places. There may be
729 // some left over in |user_read_buf_|, plus there may be more 729 // some left over in |user_read_buf_|, plus there may be more
730 // in |read_buf_|. But the part left over in |user_read_buf_| must have 730 // in |read_buf_|. But the part left over in |user_read_buf_| must have
731 // come from the |read_buf_|, so there's room to put it back at the 731 // come from the |read_buf_|, so there's room to put it back at the
732 // start first. 732 // start first.
733 int additional_save_amount = read_buf_->offset() - read_buf_unused_offset_; 733 int additional_save_amount = read_buf_->offset() - read_buf_unused_offset_;
734 int save_amount = 0; 734 int save_amount = 0;
735 if (chunked_decoder_.get()) { 735 if (chunked_decoder_.get()) {
736 save_amount = chunked_decoder_->bytes_after_eof(); 736 save_amount = chunked_decoder_->bytes_after_eof();
737 } else if (response_body_length_ >= 0) { 737 } else if (response_body_length_ >= 0) {
738 int64 extra_data_read = response_body_read_ - response_body_length_; 738 int64_t extra_data_read = response_body_read_ - response_body_length_;
739 if (extra_data_read > 0) { 739 if (extra_data_read > 0) {
740 save_amount = static_cast<int>(extra_data_read); 740 save_amount = static_cast<int>(extra_data_read);
741 if (result > 0) 741 if (result > 0)
742 result -= save_amount; 742 result -= save_amount;
743 } 743 }
744 } 744 }
745 745
746 CHECK_LE(save_amount + additional_save_amount, kMaxBufSize); 746 CHECK_LE(save_amount + additional_save_amount, kMaxBufSize);
747 if (read_buf_->capacity() < save_amount + additional_save_amount) { 747 if (read_buf_->capacity() < save_amount + additional_save_amount) {
748 read_buf_->SetCapacity(save_amount + additional_save_amount); 748 read_buf_->SetCapacity(save_amount + additional_save_amount);
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 } 1123 }
1124 1124
1125 // static 1125 // static
1126 bool HttpStreamParser::ShouldMergeRequestHeadersAndBody( 1126 bool HttpStreamParser::ShouldMergeRequestHeadersAndBody(
1127 const std::string& request_headers, 1127 const std::string& request_headers,
1128 const UploadDataStream* request_body) { 1128 const UploadDataStream* request_body) {
1129 if (request_body != NULL && 1129 if (request_body != NULL &&
1130 // IsInMemory() ensures that the request body is not chunked. 1130 // IsInMemory() ensures that the request body is not chunked.
1131 request_body->IsInMemory() && 1131 request_body->IsInMemory() &&
1132 request_body->size() > 0) { 1132 request_body->size() > 0) {
1133 uint64 merged_size = request_headers.size() + request_body->size(); 1133 uint64_t merged_size = request_headers.size() + request_body->size();
1134 if (merged_size <= kMaxMergedHeaderAndBodySize) 1134 if (merged_size <= kMaxMergedHeaderAndBodySize)
1135 return true; 1135 return true;
1136 } 1136 }
1137 return false; 1137 return false;
1138 } 1138 }
1139 1139
1140 void HttpStreamParser::ValidateStatusLine(const std::string& status_line) { 1140 void HttpStreamParser::ValidateStatusLine(const std::string& status_line) {
1141 HttpStatusLineValidator::StatusLineStatus status = 1141 HttpStatusLineValidator::StatusLineStatus status =
1142 HttpStatusLineValidator::ValidateStatusLine(status_line); 1142 HttpStatusLineValidator::ValidateStatusLine(status_line);
1143 UMA_HISTOGRAM_ENUMERATION("Net.HttpStatusLineStatus", status, 1143 UMA_HISTOGRAM_ENUMERATION("Net.HttpStatusLineStatus", status,
1144 HttpStatusLineValidator::STATUS_LINE_MAX); 1144 HttpStatusLineValidator::STATUS_LINE_MAX);
1145 } 1145 }
1146 1146
1147 } // namespace net 1147 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_parser.h ('k') | net/http/http_stream_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698