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

Unified Diff: net/http/http_network_transaction.cc

Issue 2093873002: Unwind fallback metrics and SSLFailureState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_network_transaction.h ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_network_transaction.cc
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index e719a839c5b91e37096a55620c019f4255a1430a..2e131347450c7b11bf2ce8ad1e6ae23a8d7dee8e 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -74,14 +74,12 @@ namespace {
std::unique_ptr<base::Value> NetLogSSLVersionFallbackCallback(
const GURL* url,
int net_error,
- SSLFailureState ssl_failure_state,
uint16_t version_before,
uint16_t version_after,
NetLogCaptureMode /* capture_mode */) {
std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
dict->SetString("host_and_port", GetHostAndPort(*url));
dict->SetInteger("net_error", net_error);
- dict->SetInteger("ssl_failure_state", ssl_failure_state);
dict->SetInteger("version_before", version_before);
dict->SetInteger("version_after", version_after);
return std::move(dict);
@@ -110,9 +108,7 @@ HttpNetworkTransaction::HttpNetworkTransaction(RequestPriority priority,
request_(NULL),
priority_(priority),
headers_valid_(false),
- server_ssl_failure_state_(SSL_FAILURE_NONE),
fallback_error_code_(ERR_SSL_INAPPROPRIATE_FALLBACK),
- fallback_failure_state_(SSL_FAILURE_NONE),
request_headers_(),
read_buf_len_(0),
total_received_bytes_(0),
@@ -500,14 +496,12 @@ void HttpNetworkTransaction::OnWebSocketHandshakeStreamReady(
}
void HttpNetworkTransaction::OnStreamFailed(int result,
- const SSLConfig& used_ssl_config,
- SSLFailureState ssl_failure_state) {
+ const SSLConfig& used_ssl_config) {
DCHECK_EQ(STATE_CREATE_STREAM_COMPLETE, next_state_);
DCHECK_NE(OK, result);
DCHECK(stream_request_.get());
DCHECK(!stream_.get());
server_ssl_config_ = used_ssl_config;
- server_ssl_failure_state_ = ssl_failure_state;
OnIOComplete(result);
}
@@ -1487,10 +1481,8 @@ int HttpNetworkTransaction::HandleSSLHandshakeError(int error) {
net_log_.AddEvent(
NetLog::TYPE_SSL_VERSION_FALLBACK,
base::Bind(&NetLogSSLVersionFallbackCallback, &request_->url, error,
- server_ssl_failure_state_, server_ssl_config_.version_max,
- version_max));
+ server_ssl_config_.version_max, version_max));
fallback_error_code_ = error;
- fallback_failure_state_ = server_ssl_failure_state_;
server_ssl_config_.version_max = version_max;
server_ssl_config_.version_fallback = true;
ResetConnectionAndRequestForResend();
@@ -1582,71 +1574,11 @@ void HttpNetworkTransaction::CacheNetErrorDetailsAndResetStream() {
}
void HttpNetworkTransaction::RecordSSLFallbackMetrics(int result) {
- if (result != OK && result != ERR_SSL_INAPPROPRIATE_FALLBACK)
- return;
-
- const std::string& host = request_->url.host();
- bool is_google = base::EndsWith(host, "google.com",
- base::CompareCase::SENSITIVE) &&
- (host.size() == 10 || host[host.size() - 11] == '.');
- if (is_google) {
- // Some fraction of successful connections use the fallback, but only due to
- // a spurious network failure. To estimate this fraction, compare handshakes
- // to Google servers which succeed against those that fail with an
- // inappropriate_fallback alert. Google servers are known to implement
- // FALLBACK_SCSV, so a spurious network failure while connecting would
- // trigger the fallback, successfully connect, but fail with this alert.
- UMA_HISTOGRAM_BOOLEAN("Net.GoogleConnectionInappropriateFallback",
- result == ERR_SSL_INAPPROPRIATE_FALLBACK);
- }
-
if (result != OK)
return;
- // Note: these values are used in histograms, so new values must be appended.
- enum FallbackVersion {
- FALLBACK_NONE = 0, // SSL version fallback did not occur.
- // Obsolete: FALLBACK_SSL3 = 1,
- FALLBACK_TLS1 = 2, // Fell back to TLS 1.0.
- FALLBACK_TLS1_1 = 3, // Fell back to TLS 1.1.
- FALLBACK_MAX,
- };
-
- FallbackVersion fallback = FALLBACK_NONE;
- if (server_ssl_config_.version_fallback) {
- switch (server_ssl_config_.version_max) {
- case SSL_PROTOCOL_VERSION_TLS1:
- fallback = FALLBACK_TLS1;
- break;
- case SSL_PROTOCOL_VERSION_TLS1_1:
- fallback = FALLBACK_TLS1_1;
- break;
- default:
- NOTREACHED();
- }
- }
- UMA_HISTOGRAM_ENUMERATION("Net.ConnectionUsedSSLVersionFallback2", fallback,
- FALLBACK_MAX);
-
- // Google servers are known to implement TLS 1.2 and FALLBACK_SCSV, so it
- // should be impossible to successfully connect to them with the fallback.
- // This helps estimate intolerant locally-configured SSL MITMs.
- if (is_google) {
- UMA_HISTOGRAM_ENUMERATION("Net.GoogleConnectionUsedSSLVersionFallback2",
- fallback, FALLBACK_MAX);
- }
-
UMA_HISTOGRAM_BOOLEAN("Net.ConnectionUsedSSLDeprecatedCipherFallback2",
server_ssl_config_.deprecated_cipher_suites_enabled);
davidben 2016/06/24 00:33:28 Left this around for now. I didn't end up using it
-
- if (server_ssl_config_.version_fallback) {
- // Record the error code which triggered the fallback and the state the
- // handshake was in.
- UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSLFallbackErrorCode",
- -fallback_error_code_);
- UMA_HISTOGRAM_ENUMERATION("Net.SSLFallbackFailureState",
- fallback_failure_state_, SSL_FAILURE_MAX);
- }
}
HttpResponseHeaders* HttpNetworkTransaction::GetResponseHeaders() const {
« no previous file with comments | « net/http/http_network_transaction.h ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698