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

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: Initialize |goaway_count_|. 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..ec6c078f40fff83e9cc72f0ae67587d428a5c932 100644
--- a/net/spdy/buffered_spdy_framer.cc
+++ b/net/spdy/buffered_spdy_framer.cc
@@ -226,7 +226,22 @@ void BufferedSpdyFramer::OnRstStream(SpdyStreamId stream_id,
}
void BufferedSpdyFramer::OnGoAway(SpdyStreamId last_accepted_stream_id,
SpdyGoAwayStatus status) {
- visitor_->OnGoAway(last_accepted_stream_id, status);
+ DCHECK(!go_away_fields_.get());
eroman 2015/10/06 17:19:41 nit: you can omit the .get()
Bence 2015/10/07 15:18:27 Done.
+ go_away_fields_.reset(new GoAwayFields());
+ go_away_fields_->last_accepted_stream_id = last_accepted_stream_id;
+ go_away_fields_->status = status;
+}
+
+bool BufferedSpdyFramer::OnGoAwayFrameData(const char* goaway_data,
+ size_t len) {
+ if (len > 0) {
eroman 2015/10/06 17:19:41 I assume the contract is that len=0 once all the d
Bence 2015/10/07 15:18:27 Correct. It is documented at https://code.google.
+ go_away_fields_->debug_data.append(goaway_data, len);
eroman 2015/10/06 17:19:41 Should there be a safety-net to prevent unbounded
Bence 2015/10/07 15:18:27 Yes, there should be, especially because buffering
+ return true;
+ }
+ visitor_->OnGoAway(go_away_fields_->last_accepted_stream_id,
+ go_away_fields_->status, go_away_fields_->debug_data);
+ go_away_fields_.reset(nullptr);
eroman 2015/10/06 17:19:41 nit: I have generally seen nullptr omitted (has de
Bence 2015/10/07 15:18:27 Done.
Bence 2015/10/07 15:18:27 Done.
+ return true;
}
void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id,
@@ -354,8 +369,9 @@ SpdyFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id,
// TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR).
eroman 2015/10/06 17:19:41 Is extending this function orthogonal to this comm
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