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

Unified Diff: net/spdy/buffered_spdy_framer.cc

Issue 1360253002: Log GOAWAY frame debug data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re: #7. Created 5 years, 2 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
Index: net/spdy/buffered_spdy_framer.cc
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc
index 2fa15b8b9b860c2582e6ec1fb8cfc508af023bfa..5b61d6ba80ed191632a04f090d094923dbb14ab0 100644
--- a/net/spdy/buffered_spdy_framer.cc
+++ b/net/spdy/buffered_spdy_framer.cc
@@ -8,6 +8,13 @@
namespace net {
+namespace {
+
+// GOAWAY frame debug data is only buffered up to this many bytes.
+size_t kGoAwayDebugDataMaxSize = 1024;
+
+} // namespace
+
SpdyMajorVersion NextProtoToSpdyMajorVersion(NextProto next_proto) {
switch (next_proto) {
case kProtoDeprecatedSPDY2:
@@ -226,7 +233,24 @@ void BufferedSpdyFramer::OnRstStream(SpdyStreamId stream_id,
}
void BufferedSpdyFramer::OnGoAway(SpdyStreamId last_accepted_stream_id,
SpdyGoAwayStatus status) {
- visitor_->OnGoAway(last_accepted_stream_id, status);
+ DCHECK(!goaway_fields_);
+ goaway_fields_.reset(new GoAwayFields());
+ goaway_fields_->last_accepted_stream_id = last_accepted_stream_id;
+ goaway_fields_->status = status;
+}
+
+bool BufferedSpdyFramer::OnGoAwayFrameData(const char* goaway_data,
+ size_t len) {
+ if (len > 0) {
+ goaway_fields_->debug_data.append(
+ goaway_data, std::min(len, kGoAwayDebugDataMaxSize -
+ goaway_fields_->debug_data.size()));
eroman 2015/10/07 17:00:51 This looks correct. However when first reading it
Bence 2015/10/30 11:55:27 Done.
+ return true;
+ }
+ visitor_->OnGoAway(goaway_fields_->last_accepted_stream_id,
+ goaway_fields_->status, goaway_fields_->debug_data);
+ goaway_fields_.reset();
+ return true;
}
void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id,
@@ -354,8 +378,9 @@ SpdyFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id,
// TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR).
SpdyFrame* BufferedSpdyFramer::CreateGoAway(
SpdyStreamId last_accepted_stream_id,
- SpdyGoAwayStatus status) const {
- SpdyGoAwayIR go_ir(last_accepted_stream_id, status, "");
+ SpdyGoAwayStatus status,
+ base::StringPiece debug_data) const {
+ SpdyGoAwayIR go_ir(last_accepted_stream_id, status, debug_data);
return spdy_framer_.SerializeGoAway(go_ir);
}

Powered by Google App Engine
This is Rietveld 408576698