| 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 2155ea9a54e0c1264b0556580c9e41dd468e8ef2..6565a8dcb8608e759f08b56c6a0b0c033b7e81cc 100644
|
| --- a/net/url_request/url_request_http_job.cc
|
| +++ b/net/url_request/url_request_http_job.cc
|
| @@ -484,6 +484,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;
|
| + 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.HttpRequest.ContainsInvalidHeaderValuesInRFC7230",
|
| + invalid_header_values_in_rfc7230);
|
| +
|
| int rv;
|
|
|
| if (network_delegate()) {
|
| @@ -928,6 +939,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.HttpResponse.ContainsInvalidHeaderValuesInRFC7230",
|
| + invalid_header_values_in_rfc7230);
|
| + }
|
| +
|
| if (network_delegate()) {
|
| // Note that |this| may not be deleted until
|
| // |on_headers_received_callback_| or
|
|
|