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

Side by Side Diff: net/quic/quic_framer.cc

Issue 1217273003: QUIC - debugging code to find crash in net::QuicPacket::FecProtectedData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 | « no previous file | net/quic/quic_packet_creator.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/quic/quic_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 const QuicPacketHeader& header) { 325 const QuicPacketHeader& header) {
326 return header.entropy_flag << (header.packet_sequence_number % 8); 326 return header.entropy_flag << (header.packet_sequence_number % 8);
327 } 327 }
328 328
329 QuicPacket* QuicFramer::BuildDataPacket(const QuicPacketHeader& header, 329 QuicPacket* QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
330 const QuicFrames& frames, 330 const QuicFrames& frames,
331 char* buffer, 331 char* buffer,
332 size_t packet_length) { 332 size_t packet_length) {
333 QuicDataWriter writer(packet_length, buffer); 333 QuicDataWriter writer(packet_length, buffer);
334 if (!AppendPacketHeader(header, &writer)) { 334 if (!AppendPacketHeader(header, &writer)) {
335 LOG(DFATAL) << "AppendPacketHeader failed"; 335 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
336 CHECK(false) << "AppendPacketHeader failed";
336 return nullptr; 337 return nullptr;
337 } 338 }
338 339
339 size_t i = 0; 340 size_t i = 0;
340 for (const QuicFrame& frame : frames) { 341 for (const QuicFrame& frame : frames) {
341 // Determine if we should write stream frame length in header. 342 // Determine if we should write stream frame length in header.
342 const bool no_stream_frame_length = 343 const bool no_stream_frame_length =
343 (header.is_in_fec_group == NOT_IN_FEC_GROUP) && 344 (header.is_in_fec_group == NOT_IN_FEC_GROUP) &&
344 (i == frames.size() - 1); 345 (i == frames.size() - 1);
345 if (!AppendTypeByte(frame, no_stream_frame_length, &writer)) { 346 if (!AppendTypeByte(frame, no_stream_frame_length, &writer)) {
346 LOG(DFATAL) << "AppendTypeByte failed"; 347 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
348 CHECK(false) << "AppendTypeByte failed";
347 return nullptr; 349 return nullptr;
348 } 350 }
349 351
350 switch (frame.type) { 352 switch (frame.type) {
351 case PADDING_FRAME: 353 case PADDING_FRAME:
352 writer.WritePadding(); 354 writer.WritePadding();
353 break; 355 break;
354 case STREAM_FRAME: 356 case STREAM_FRAME:
355 if (!AppendStreamFrame( 357 if (!AppendStreamFrame(
356 *frame.stream_frame, no_stream_frame_length, &writer)) { 358 *frame.stream_frame, no_stream_frame_length, &writer)) {
357 LOG(DFATAL) << "AppendStreamFrame failed"; 359 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
360 CHECK(false) << "AppendStreamFrame failed";
358 return nullptr; 361 return nullptr;
359 } 362 }
360 break; 363 break;
361 case ACK_FRAME: 364 case ACK_FRAME:
362 if (!AppendAckFrameAndTypeByte( 365 if (!AppendAckFrameAndTypeByte(
363 header, *frame.ack_frame, &writer)) { 366 header, *frame.ack_frame, &writer)) {
364 LOG(DFATAL) << "AppendAckFrameAndTypeByte failed"; 367 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
368 CHECK(false) << "AppendAckFrameAndTypeByte failed";
365 return nullptr; 369 return nullptr;
366 } 370 }
367 break; 371 break;
368 case STOP_WAITING_FRAME: 372 case STOP_WAITING_FRAME:
369 if (!AppendStopWaitingFrame( 373 if (!AppendStopWaitingFrame(
370 header, *frame.stop_waiting_frame, &writer)) { 374 header, *frame.stop_waiting_frame, &writer)) {
371 LOG(DFATAL) << "AppendStopWaitingFrame failed"; 375 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
376 CHECK(false) << "AppendStopWaitingFrame failed";
372 return nullptr; 377 return nullptr;
373 } 378 }
374 break; 379 break;
375 case MTU_DISCOVERY_FRAME: 380 case MTU_DISCOVERY_FRAME:
376 // MTU discovery frames are serialized as ping frames. 381 // MTU discovery frames are serialized as ping frames.
377 case PING_FRAME: 382 case PING_FRAME:
378 // Ping has no payload. 383 // Ping has no payload.
379 break; 384 break;
380 case RST_STREAM_FRAME: 385 case RST_STREAM_FRAME:
381 if (!AppendRstStreamFrame(*frame.rst_stream_frame, &writer)) { 386 if (!AppendRstStreamFrame(*frame.rst_stream_frame, &writer)) {
382 LOG(DFATAL) << "AppendRstStreamFrame failed"; 387 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
388 CHECK(false) << "AppendRstStreamFrame failed";
383 return nullptr; 389 return nullptr;
384 } 390 }
385 break; 391 break;
386 case CONNECTION_CLOSE_FRAME: 392 case CONNECTION_CLOSE_FRAME:
387 if (!AppendConnectionCloseFrame( 393 if (!AppendConnectionCloseFrame(
388 *frame.connection_close_frame, &writer)) { 394 *frame.connection_close_frame, &writer)) {
389 LOG(DFATAL) << "AppendConnectionCloseFrame failed"; 395 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
396 CHECK(false) << "AppendConnectionCloseFrame failed";
390 return nullptr; 397 return nullptr;
391 } 398 }
392 break; 399 break;
393 case GOAWAY_FRAME: 400 case GOAWAY_FRAME:
394 if (!AppendGoAwayFrame(*frame.goaway_frame, &writer)) { 401 if (!AppendGoAwayFrame(*frame.goaway_frame, &writer)) {
395 LOG(DFATAL) << "AppendGoAwayFrame failed"; 402 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
403 CHECK(false) << "AppendGoAwayFrame failed";
396 return nullptr; 404 return nullptr;
397 } 405 }
398 break; 406 break;
399 case WINDOW_UPDATE_FRAME: 407 case WINDOW_UPDATE_FRAME:
400 if (!AppendWindowUpdateFrame(*frame.window_update_frame, &writer)) { 408 if (!AppendWindowUpdateFrame(*frame.window_update_frame, &writer)) {
401 LOG(DFATAL) << "AppendWindowUpdateFrame failed"; 409 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
410 CHECK(false) << "AppendWindowUpdateFrame failed";
402 return nullptr; 411 return nullptr;
403 } 412 }
404 break; 413 break;
405 case BLOCKED_FRAME: 414 case BLOCKED_FRAME:
406 if (!AppendBlockedFrame(*frame.blocked_frame, &writer)) { 415 if (!AppendBlockedFrame(*frame.blocked_frame, &writer)) {
407 LOG(DFATAL) << "AppendBlockedFrame failed"; 416 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
417 CHECK(false) << "AppendBlockedFrame failed";
408 return nullptr; 418 return nullptr;
409 } 419 }
410 break; 420 break;
411 default: 421 default:
412 RaiseError(QUIC_INVALID_FRAME_DATA); 422 RaiseError(QUIC_INVALID_FRAME_DATA);
413 LOG(DFATAL) << "QUIC_INVALID_FRAME_DATA"; 423 // TODO(rtenneti): Revert the CHECKs to LOG(DFATAL).
424 CHECK(false) << "QUIC_INVALID_FRAME_DATA";
414 return nullptr; 425 return nullptr;
415 } 426 }
416 ++i; 427 ++i;
417 } 428 }
418 429
419 QuicPacket* packet = 430 QuicPacket* packet =
420 new QuicPacket(writer.data(), writer.length(), false, 431 new QuicPacket(writer.data(), writer.length(), false,
421 header.public_header.connection_id_length, 432 header.public_header.connection_id_length,
422 header.public_header.version_flag, 433 header.public_header.version_flag,
423 header.public_header.sequence_number_length); 434 header.public_header.sequence_number_length);
(...skipping 1804 matching lines...) Expand 10 before | Expand all | Expand 10 after
2228 bool QuicFramer::RaiseError(QuicErrorCode error) { 2239 bool QuicFramer::RaiseError(QuicErrorCode error) {
2229 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error) 2240 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error)
2230 << " detail: " << detailed_error_; 2241 << " detail: " << detailed_error_;
2231 set_error(error); 2242 set_error(error);
2232 visitor_->OnError(this); 2243 visitor_->OnError(this);
2233 reader_.reset(nullptr); 2244 reader_.reset(nullptr);
2234 return false; 2245 return false;
2235 } 2246 }
2236 2247
2237 } // namespace net 2248 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/quic/quic_packet_creator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698