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

Unified Diff: net/spdy/spdy_session.cc

Issue 10233016: Add a new UMA histogram for tracking SpdySessionErrorDetails (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Correctly handle SpdyStatusCodes Created 8 years, 8 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/spdy/spdy_session.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_session.cc
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 98c1627f016a053d7c4bb9ebccfd6bc061ce6980..7f39b1772d2a895f5f59d5edd654727bb9908026 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -7,6 +7,7 @@
#include <map>
#include "base/basictypes.h"
+#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
#include "base/message_loop.h"
@@ -486,6 +487,8 @@ int SpdySession::GetPushStream(
// encrypted SSL socket.
if (is_secure_ && certificate_error_code_ != OK &&
(url.SchemeIs("https") || url.SchemeIs("wss"))) {
+ RecordProtocolErrorHistogram(
+ PROTOCOL_ERROR_REQUST_FOR_SECURE_CONTENT_OVER_INSECURE_SESSION);
CloseSessionOnError(
static_cast<net::Error>(certificate_error_code_),
true,
@@ -588,6 +591,8 @@ int SpdySession::CreateStreamImpl(
// encrypted SSL socket.
if (is_secure_ && certificate_error_code_ != OK &&
(url.SchemeIs("https") || url.SchemeIs("wss"))) {
+ RecordProtocolErrorHistogram(
+ PROTOCOL_ERROR_REQUST_FOR_SECURE_CONTENT_OVER_INSECURE_SESSION);
CloseSessionOnError(
static_cast<net::Error>(certificate_error_code_),
true,
@@ -833,6 +838,8 @@ void SpdySession::ResetStream(SpdyStreamId stream_id,
priority = stream->priority();
}
QueueFrame(rst_frame.get(), priority, NULL);
+ RecordProtocolErrorHistogram(
+ static_cast<SpdyProtocolErrorDetails>(status + STATUS_CODE_INVALID));
DeleteStream(stream_id, ERR_SPDY_PROTOCOL_ERROR);
}
@@ -1033,6 +1040,8 @@ void SpdySession::WriteSocket() {
buffered_spdy_framer_->CompressControlFrame(
reinterpret_cast<const SpdyControlFrame&>(uncompressed_frame)));
if (!compressed_frame.get()) {
+ RecordProtocolErrorHistogram(
+ PROTOCOL_ERROR_SPDY_COMPRESSION_FAILURE);
CloseSessionOnError(
net::ERR_SPDY_PROTOCOL_ERROR, true, "SPDY Compression failure.");
return;
@@ -1314,6 +1323,8 @@ SSLClientCertType SpdySession::GetDomainBoundCertType() const {
}
void SpdySession::OnError(SpdyFramer::SpdyError error_code) {
+ RecordProtocolErrorHistogram(
+ static_cast<SpdyProtocolErrorDetails>(error_code));
std::string description = base::StringPrintf(
"SPDY_ERROR error_code: %d.", error_code);
CloseSessionOnError(net::ERR_SPDY_PROTOCOL_ERROR, true, description);
@@ -1508,6 +1519,7 @@ void SpdySession::OnSynReply(const SpdySynReplyControlFrame& frame,
if (stream->response_received()) {
stream->LogStreamError(ERR_SYN_REPLY_NOT_RECEIVED,
"Received duplicate SYN_REPLY for stream.");
+ RecordProtocolErrorHistogram(PROTOCOL_ERROR_SYN_REPLY_NOT_RECEIVED);
CloseStream(stream->stream_id(), ERR_SPDY_PROTOCOL_ERROR);
return;
}
@@ -1570,6 +1582,8 @@ void SpdySession::OnRstStream(const SpdyRstStreamControlFrame& frame) {
} else if (frame.status() == REFUSED_STREAM) {
DeleteStream(stream_id, ERR_SPDY_SERVER_REFUSED_STREAM);
} else {
+ RecordProtocolErrorHistogram(
+ PROTOCOL_ERROR_RST_STREAM_FOR_NON_ACTIVE_STREAM);
stream->LogStreamError(ERR_SPDY_PROTOCOL_ERROR,
base::StringPrintf("SPDY stream closed: %d",
frame.status()));
@@ -1611,6 +1625,7 @@ void SpdySession::OnPing(const SpdyPingControlFrame& frame) {
--pings_in_flight_;
if (pings_in_flight_ < 0) {
+ RecordProtocolErrorHistogram(PROTOCOL_ERROR_UNEXPECTED_PING);
CloseSessionOnError(
net::ERR_SPDY_PROTOCOL_ERROR, true, "pings_in_flight_ is < 0.");
return;
@@ -1872,6 +1887,16 @@ void SpdySession::RecordPingRTTHistogram(base::TimeDelta duration) {
UMA_HISTOGRAM_TIMES("Net.SpdyPing.RTT", duration);
}
+void SpdySession::RecordProtocolErrorHistogram(
+ SpdyProtocolErrorDetails details) {
+ UMA_HISTOGRAM_ENUMERATION("Net.SpdySessionErrorDetails", details,
+ NUM_SPDY_PROTOCOL_ERROR_DETAILS);
+ if (EndsWith(host_port_pair().host(), "google.com", false)) {
+ UMA_HISTOGRAM_ENUMERATION("Net.SpdySessionErrorDetails_Google", details,
+ NUM_SPDY_PROTOCOL_ERROR_DETAILS);
+ }
+}
+
void SpdySession::RecordHistograms() {
UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyStreamsPerSession",
streams_initiated_count_,
« no previous file with comments | « net/spdy/spdy_session.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698