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

Side by Side 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: #12. 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 unified diff | Download patch
« no previous file with comments | « net/spdy/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/buffered_spdy_framer.h" 5 #include "net/spdy/buffered_spdy_framer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 8
9 namespace net { 9 namespace net {
10 10
11 namespace {
12
13 // GOAWAY frame debug data is only buffered up to this many bytes.
14 size_t kGoAwayDebugDataMaxSize = 1024;
15
16 } // namespace
17
11 SpdyMajorVersion NextProtoToSpdyMajorVersion(NextProto next_proto) { 18 SpdyMajorVersion NextProtoToSpdyMajorVersion(NextProto next_proto) {
12 switch (next_proto) { 19 switch (next_proto) {
13 case kProtoDeprecatedSPDY2: 20 case kProtoDeprecatedSPDY2:
14 return SPDY2; 21 return SPDY2;
15 case kProtoSPDY3: 22 case kProtoSPDY3:
16 case kProtoSPDY31: 23 case kProtoSPDY31:
17 return SPDY3; 24 return SPDY3;
18 case kProtoHTTP2: 25 case kProtoHTTP2:
19 return HTTP2; 26 return HTTP2;
20 case kProtoUnknown: 27 case kProtoUnknown:
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 void BufferedSpdyFramer::OnPing(SpdyPingId unique_id, bool is_ack) { 226 void BufferedSpdyFramer::OnPing(SpdyPingId unique_id, bool is_ack) {
220 visitor_->OnPing(unique_id, is_ack); 227 visitor_->OnPing(unique_id, is_ack);
221 } 228 }
222 229
223 void BufferedSpdyFramer::OnRstStream(SpdyStreamId stream_id, 230 void BufferedSpdyFramer::OnRstStream(SpdyStreamId stream_id,
224 SpdyRstStreamStatus status) { 231 SpdyRstStreamStatus status) {
225 visitor_->OnRstStream(stream_id, status); 232 visitor_->OnRstStream(stream_id, status);
226 } 233 }
227 void BufferedSpdyFramer::OnGoAway(SpdyStreamId last_accepted_stream_id, 234 void BufferedSpdyFramer::OnGoAway(SpdyStreamId last_accepted_stream_id,
228 SpdyGoAwayStatus status) { 235 SpdyGoAwayStatus status) {
229 visitor_->OnGoAway(last_accepted_stream_id, status); 236 DCHECK(!goaway_fields_);
237 goaway_fields_.reset(new GoAwayFields());
238 goaway_fields_->last_accepted_stream_id = last_accepted_stream_id;
239 goaway_fields_->status = status;
240 }
241
242 bool BufferedSpdyFramer::OnGoAwayFrameData(const char* goaway_data,
243 size_t len) {
244 if (len > 0) {
245 if (goaway_fields_->debug_data.size() < kGoAwayDebugDataMaxSize) {
246 goaway_fields_->debug_data.append(
247 goaway_data, std::min(len, kGoAwayDebugDataMaxSize -
248 goaway_fields_->debug_data.size()));
249 }
250 return true;
251 }
252 visitor_->OnGoAway(goaway_fields_->last_accepted_stream_id,
253 goaway_fields_->status, goaway_fields_->debug_data);
254 goaway_fields_.reset();
255 return true;
230 } 256 }
231 257
232 void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id, 258 void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id,
233 int delta_window_size) { 259 int delta_window_size) {
234 visitor_->OnWindowUpdate(stream_id, delta_window_size); 260 visitor_->OnWindowUpdate(stream_id, delta_window_size);
235 } 261 }
236 262
237 void BufferedSpdyFramer::OnPushPromise(SpdyStreamId stream_id, 263 void BufferedSpdyFramer::OnPushPromise(SpdyStreamId stream_id,
238 SpdyStreamId promised_stream_id, 264 SpdyStreamId promised_stream_id,
239 bool end) { 265 bool end) {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 SpdyFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id, 373 SpdyFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id,
348 bool is_ack) const { 374 bool is_ack) const {
349 SpdyPingIR ping_ir(unique_id); 375 SpdyPingIR ping_ir(unique_id);
350 ping_ir.set_is_ack(is_ack); 376 ping_ir.set_is_ack(is_ack);
351 return spdy_framer_.SerializePing(ping_ir); 377 return spdy_framer_.SerializePing(ping_ir);
352 } 378 }
353 379
354 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR). 380 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR).
355 SpdyFrame* BufferedSpdyFramer::CreateGoAway( 381 SpdyFrame* BufferedSpdyFramer::CreateGoAway(
356 SpdyStreamId last_accepted_stream_id, 382 SpdyStreamId last_accepted_stream_id,
357 SpdyGoAwayStatus status) const { 383 SpdyGoAwayStatus status,
358 SpdyGoAwayIR go_ir(last_accepted_stream_id, status, ""); 384 base::StringPiece debug_data) const {
385 SpdyGoAwayIR go_ir(last_accepted_stream_id, status, debug_data);
359 return spdy_framer_.SerializeGoAway(go_ir); 386 return spdy_framer_.SerializeGoAway(go_ir);
360 } 387 }
361 388
362 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyHeadersIR). 389 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyHeadersIR).
363 SpdyFrame* BufferedSpdyFramer::CreateHeaders( 390 SpdyFrame* BufferedSpdyFramer::CreateHeaders(
364 SpdyStreamId stream_id, 391 SpdyStreamId stream_id,
365 SpdyControlFlags flags, 392 SpdyControlFlags flags,
366 SpdyPriority priority, 393 SpdyPriority priority,
367 const SpdyHeaderBlock* headers) { 394 const SpdyHeaderBlock* headers) {
368 SpdyHeadersIR headers_ir(stream_id); 395 SpdyHeadersIR headers_ir(stream_id);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 438
412 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { 439 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) {
413 memset(header_buffer_, 0, kHeaderBufferSize); 440 memset(header_buffer_, 0, kHeaderBufferSize);
414 header_buffer_used_ = 0; 441 header_buffer_used_ = 0;
415 header_buffer_valid_ = true; 442 header_buffer_valid_ = true;
416 header_stream_id_ = stream_id; 443 header_stream_id_ = stream_id;
417 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 444 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
418 } 445 }
419 446
420 } // namespace net 447 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698