Chromium Code Reviews| Index: net/url_request/url_request_http_job.cc |
| diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc |
| index 929d19467a6b5bb4ec4fb19aedcb4f0a77a355a0..bb08d92ee08e43db22a53d596edea0652f21840f 100644 |
| --- a/net/url_request/url_request_http_job.cc |
| +++ b/net/url_request/url_request_http_job.cc |
| @@ -483,6 +483,17 @@ void URLRequestHttpJob::StartTransactionInternal() { |
| // If we already have a transaction, then we should restart the transaction |
| // with auth provided by auth_credentials_. |
| + bool invalid_header_values_in_RFC7230 = false; |
|
davidben
2015/12/17 20:00:41
Nit: I would lowercase RFC.
hiroshige
2015/12/22 06:33:50
Done.
|
| + for (HttpRequestHeaders::Iterator it(request_info_.extra_headers); |
| + it.GetNext();) { |
| + if (!HttpUtil::IsValidHeaderValueRFC7230(it.value())) { |
| + invalid_header_values_in_RFC7230 = true; |
| + break; |
| + } |
| + } |
| + UMA_HISTOGRAM_BOOLEAN("Net.HttpRequestContainsInvalidHeaderValuesInRFC7230", |
| + invalid_header_values_in_RFC7230); |
| + |
| int rv; |
| if (network_delegate()) { |
| @@ -932,6 +943,23 @@ void URLRequestHttpJob::OnStartCompleted(int result) { |
| SetProxyServer(transaction_->GetResponseInfo()->proxy_server); |
| } |
| scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); |
| + |
| + if (headers) { |
| + void* iter = NULL; |
| + std::string name; |
| + std::string value; |
| + bool invalid_header_values_in_RFC7230 = false; |
| + while (headers->EnumerateHeaderLines(&iter, &name, &value)) { |
| + if (!HttpUtil::IsValidHeaderValueRFC7230(value)) { |
| + invalid_header_values_in_RFC7230 = true; |
| + break; |
| + } |
| + } |
| + UMA_HISTOGRAM_BOOLEAN( |
| + "Net.HttpResponseContainsInvalidHeaderValuesInRFC7230", |
| + invalid_header_values_in_RFC7230); |
| + } |
| + |
| if (network_delegate()) { |
| // Note that |this| may not be deleted until |
| // |on_headers_received_callback_| or |