Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/url_request/url_request_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" |
| 6 | 6 |
| 7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 476 | 476 |
| 477 void URLRequestHttpJob::StartTransactionInternal() { | 477 void URLRequestHttpJob::StartTransactionInternal() { |
| 478 // This should only be called while the request's status is IO_PENDING. | 478 // This should only be called while the request's status is IO_PENDING. |
| 479 DCHECK_EQ(URLRequestStatus::IO_PENDING, request_->status().status()); | 479 DCHECK_EQ(URLRequestStatus::IO_PENDING, request_->status().status()); |
| 480 | 480 |
| 481 // NOTE: This method assumes that request_info_ is already setup properly. | 481 // NOTE: This method assumes that request_info_ is already setup properly. |
| 482 | 482 |
| 483 // If we already have a transaction, then we should restart the transaction | 483 // If we already have a transaction, then we should restart the transaction |
| 484 // with auth provided by auth_credentials_. | 484 // with auth provided by auth_credentials_. |
| 485 | 485 |
| 486 int invalid_header_values_in_RFC7230 = 0; | |
|
davidben
2015/12/15 21:16:36
This should probably be a bool (and then you can b
hiroshige
2015/12/17 06:36:02
Done.
| |
| 487 for (net::HttpRequestHeaders::Iterator it(request_info_.extra_headers); | |
|
davidben
2015/12/15 21:16:36
Nit: No net:: prefix.
hiroshige
2015/12/17 06:36:02
Done.
| |
| 488 it.GetNext();) { | |
| 489 if (!HttpUtil::IsValidHeaderValueRFC7230(it.value())) | |
| 490 ++invalid_header_values_in_RFC7230; | |
| 491 } | |
| 492 UMA_HISTOGRAM_BOOLEAN("Net.HttpRequestContainsInvalidHeaderValuesInRFC7230", | |
| 493 invalid_header_values_in_RFC7230 > 0); | |
| 494 | |
| 486 int rv; | 495 int rv; |
| 487 | 496 |
| 488 if (network_delegate()) { | 497 if (network_delegate()) { |
| 489 network_delegate()->NotifySendHeaders( | 498 network_delegate()->NotifySendHeaders( |
| 490 request_, request_info_.extra_headers); | 499 request_, request_info_.extra_headers); |
| 491 } | 500 } |
| 492 | 501 |
| 493 if (transaction_.get()) { | 502 if (transaction_.get()) { |
| 494 rv = transaction_->RestartWithAuth(auth_credentials_, start_callback_); | 503 rv = transaction_->RestartWithAuth(auth_credentials_, start_callback_); |
| 495 auth_credentials_ = AuthCredentials(); | 504 auth_credentials_ = AuthCredentials(); |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 918 // If the job is done (due to cancellation), can just ignore this | 927 // If the job is done (due to cancellation), can just ignore this |
| 919 // notification. | 928 // notification. |
| 920 if (done_) | 929 if (done_) |
| 921 return; | 930 return; |
| 922 | 931 |
| 923 receive_headers_end_ = base::TimeTicks::Now(); | 932 receive_headers_end_ = base::TimeTicks::Now(); |
| 924 | 933 |
| 925 // Clear the IO_PENDING status | 934 // Clear the IO_PENDING status |
| 926 SetStatus(URLRequestStatus()); | 935 SetStatus(URLRequestStatus()); |
| 927 | 936 |
| 937 if (scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders()) { | |
|
davidben
2015/12/15 21:16:36
I don't think we usually declare variables inside
hiroshige
2015/12/17 06:36:02
Done. Also I moved this to exclude error cases.
| |
| 938 void* iter = NULL; | |
| 939 std::string name; | |
| 940 std::string value; | |
| 941 int invalid_header_values_in_RFC7230 = 0; | |
|
davidben
2015/12/15 21:16:36
Ditto about making this a bool.
hiroshige
2015/12/17 06:36:02
Done.
| |
| 942 while (headers->EnumerateHeaderLines(&iter, &name, &value)) { | |
| 943 if (!HttpUtil::IsValidHeaderValueRFC7230(value)) | |
| 944 ++invalid_header_values_in_RFC7230; | |
| 945 } | |
| 946 UMA_HISTOGRAM_BOOLEAN( | |
| 947 "Net.HttpResponseContainsInvalidHeaderValuesInRFC7230", | |
| 948 invalid_header_values_in_RFC7230 > 0); | |
| 949 } | |
| 950 | |
| 928 const URLRequestContext* context = request_->context(); | 951 const URLRequestContext* context = request_->context(); |
| 929 | 952 |
| 930 if (result == OK) { | 953 if (result == OK) { |
| 931 if (transaction_ && transaction_->GetResponseInfo()) { | 954 if (transaction_ && transaction_->GetResponseInfo()) { |
| 932 SetProxyServer(transaction_->GetResponseInfo()->proxy_server); | 955 SetProxyServer(transaction_->GetResponseInfo()->proxy_server); |
| 933 } | 956 } |
| 934 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); | 957 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); |
| 935 if (network_delegate()) { | 958 if (network_delegate()) { |
| 936 // Note that |this| may not be deleted until | 959 // Note that |this| may not be deleted until |
| 937 // |on_headers_received_callback_| or | 960 // |on_headers_received_callback_| or |
| (...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1578 return override_response_headers_.get() ? | 1601 return override_response_headers_.get() ? |
| 1579 override_response_headers_.get() : | 1602 override_response_headers_.get() : |
| 1580 transaction_->GetResponseInfo()->headers.get(); | 1603 transaction_->GetResponseInfo()->headers.get(); |
| 1581 } | 1604 } |
| 1582 | 1605 |
| 1583 void URLRequestHttpJob::NotifyURLRequestDestroyed() { | 1606 void URLRequestHttpJob::NotifyURLRequestDestroyed() { |
| 1584 awaiting_callback_ = false; | 1607 awaiting_callback_ = false; |
| 1585 } | 1608 } |
| 1586 | 1609 |
| 1587 } // namespace net | 1610 } // namespace net |
| OLD | NEW |