| Index: net/quic/quic_framer.cc
|
| diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc
|
| index 3e175026d61914c2c953c2ffb1e9118456e223c1..1370350cf17a2744756c03a591b6c35b5418abab 100644
|
| --- a/net/quic/quic_framer.cc
|
| +++ b/net/quic/quic_framer.cc
|
| @@ -14,6 +14,7 @@
|
| #include "net/quic/crypto/crypto_protocol.h"
|
| #include "net/quic/crypto/quic_decrypter.h"
|
| #include "net/quic/crypto/quic_encrypter.h"
|
| +#include "net/quic/quic_bug_tracker.h"
|
| #include "net/quic/quic_data_reader.h"
|
| #include "net/quic/quic_data_writer.h"
|
| #include "net/quic/quic_flags.h"
|
| @@ -123,7 +124,7 @@ QuicPacketNumberLength ReadSequenceNumberLength(uint8_t flags) {
|
| case PACKET_FLAGS_1BYTE_PACKET:
|
| return PACKET_1BYTE_PACKET_NUMBER;
|
| default:
|
| - LOG(DFATAL) << "Unreachable case statement.";
|
| + QUIC_BUG << "Unreachable case statement.";
|
| return PACKET_6BYTE_PACKET_NUMBER;
|
| }
|
| }
|
| @@ -222,7 +223,7 @@ size_t QuicFramer::GetStreamIdSize(QuicStreamId stream_id) {
|
| return i;
|
| }
|
| }
|
| - LOG(DFATAL) << "Failed to determine StreamIDSize.";
|
| + QUIC_BUG << "Failed to determine StreamIDSize.";
|
| return 4;
|
| }
|
|
|
| @@ -240,7 +241,7 @@ size_t QuicFramer::GetStreamOffsetSize(QuicStreamOffset offset) {
|
| return i;
|
| }
|
| }
|
| - LOG(DFATAL) << "Failed to determine StreamOffsetSize.";
|
| + QUIC_BUG << "Failed to determine StreamOffsetSize.";
|
| return 8;
|
| }
|
|
|
| @@ -269,12 +270,11 @@ size_t QuicFramer::GetSerializedFrameLength(
|
| // Prevent a rare crash reported in b/19458523.
|
| if ((frame.type == STREAM_FRAME || frame.type == ACK_FRAME) &&
|
| frame.stream_frame == nullptr) {
|
| - LOG(DFATAL) << "Cannot compute the length of a null frame. "
|
| - << "type:" << frame.type << "free_bytes:" << free_bytes
|
| - << " first_frame:" << first_frame
|
| - << " last_frame:" << last_frame
|
| - << " is_in_fec:" << is_in_fec_group
|
| - << " seq num length:" << packet_number_length;
|
| + QUIC_BUG << "Cannot compute the length of a null frame. "
|
| + << "type:" << frame.type << "free_bytes:" << free_bytes
|
| + << " first_frame:" << first_frame << " last_frame:" << last_frame
|
| + << " is_in_fec:" << is_in_fec_group
|
| + << " seq num length:" << packet_number_length;
|
| set_error(QUIC_INTERNAL_ERROR);
|
| visitor_->OnError(this);
|
| return 0;
|
| @@ -322,7 +322,7 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
|
| size_t packet_length) {
|
| QuicDataWriter writer(packet_length, buffer);
|
| if (!AppendPacketHeader(header, &writer)) {
|
| - LOG(DFATAL) << "AppendPacketHeader failed";
|
| + QUIC_BUG << "AppendPacketHeader failed";
|
| return 0;
|
| }
|
|
|
| @@ -333,7 +333,7 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
|
| (header.is_in_fec_group == NOT_IN_FEC_GROUP) &&
|
| (i == frames.size() - 1);
|
| if (!AppendTypeByte(frame, no_stream_frame_length, &writer)) {
|
| - LOG(DFATAL) << "AppendTypeByte failed";
|
| + QUIC_BUG << "AppendTypeByte failed";
|
| return 0;
|
| }
|
|
|
| @@ -344,20 +344,20 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
|
| case STREAM_FRAME:
|
| if (!AppendStreamFrame(*frame.stream_frame, no_stream_frame_length,
|
| &writer)) {
|
| - LOG(DFATAL) << "AppendStreamFrame failed";
|
| + QUIC_BUG << "AppendStreamFrame failed";
|
| return 0;
|
| }
|
| break;
|
| case ACK_FRAME:
|
| if (!AppendAckFrameAndTypeByte(header, *frame.ack_frame, &writer)) {
|
| - LOG(DFATAL) << "AppendAckFrameAndTypeByte failed";
|
| + QUIC_BUG << "AppendAckFrameAndTypeByte failed";
|
| return 0;
|
| }
|
| break;
|
| case STOP_WAITING_FRAME:
|
| if (!AppendStopWaitingFrame(header, *frame.stop_waiting_frame,
|
| &writer)) {
|
| - LOG(DFATAL) << "AppendStopWaitingFrame failed";
|
| + QUIC_BUG << "AppendStopWaitingFrame failed";
|
| return 0;
|
| }
|
| break;
|
| @@ -368,38 +368,38 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header,
|
| break;
|
| case RST_STREAM_FRAME:
|
| if (!AppendRstStreamFrame(*frame.rst_stream_frame, &writer)) {
|
| - LOG(DFATAL) << "AppendRstStreamFrame failed";
|
| + QUIC_BUG << "AppendRstStreamFrame failed";
|
| return 0;
|
| }
|
| break;
|
| case CONNECTION_CLOSE_FRAME:
|
| if (!AppendConnectionCloseFrame(*frame.connection_close_frame,
|
| &writer)) {
|
| - LOG(DFATAL) << "AppendConnectionCloseFrame failed";
|
| + QUIC_BUG << "AppendConnectionCloseFrame failed";
|
| return 0;
|
| }
|
| break;
|
| case GOAWAY_FRAME:
|
| if (!AppendGoAwayFrame(*frame.goaway_frame, &writer)) {
|
| - LOG(DFATAL) << "AppendGoAwayFrame failed";
|
| + QUIC_BUG << "AppendGoAwayFrame failed";
|
| return 0;
|
| }
|
| break;
|
| case WINDOW_UPDATE_FRAME:
|
| if (!AppendWindowUpdateFrame(*frame.window_update_frame, &writer)) {
|
| - LOG(DFATAL) << "AppendWindowUpdateFrame failed";
|
| + QUIC_BUG << "AppendWindowUpdateFrame failed";
|
| return 0;
|
| }
|
| break;
|
| case BLOCKED_FRAME:
|
| if (!AppendBlockedFrame(*frame.blocked_frame, &writer)) {
|
| - LOG(DFATAL) << "AppendBlockedFrame failed";
|
| + QUIC_BUG << "AppendBlockedFrame failed";
|
| return 0;
|
| }
|
| break;
|
| default:
|
| RaiseError(QUIC_INVALID_FRAME_DATA);
|
| - LOG(DFATAL) << "QUIC_INVALID_FRAME_DATA";
|
| + QUIC_BUG << "QUIC_INVALID_FRAME_DATA";
|
| return 0;
|
| }
|
| ++i;
|
| @@ -418,12 +418,12 @@ QuicPacket* QuicFramer::BuildFecPacket(const QuicPacketHeader& header,
|
| scoped_ptr<char[]> buffer(new char[len]);
|
| QuicDataWriter writer(len, buffer.get());
|
| if (!AppendPacketHeader(header, &writer)) {
|
| - LOG(DFATAL) << "AppendPacketHeader failed";
|
| + QUIC_BUG << "AppendPacketHeader failed";
|
| return nullptr;
|
| }
|
|
|
| if (!writer.WriteBytes(redundancy.data(), redundancy.length())) {
|
| - LOG(DFATAL) << "Failed to add FEC";
|
| + QUIC_BUG << "Failed to add FEC";
|
| return nullptr;
|
| }
|
|
|
| @@ -1000,7 +1000,7 @@ uint8_t QuicFramer::GetSequenceNumberFlags(
|
| case PACKET_6BYTE_PACKET_NUMBER:
|
| return PACKET_FLAGS_6BYTE_PACKET;
|
| default:
|
| - LOG(DFATAL) << "Unreachable case statement.";
|
| + QUIC_BUG << "Unreachable case statement.";
|
| return PACKET_FLAGS_6BYTE_PACKET;
|
| }
|
| }
|
| @@ -1859,7 +1859,7 @@ bool QuicFramer::AppendTypeByte(const QuicFrame& frame,
|
| switch (frame.type) {
|
| case STREAM_FRAME: {
|
| if (frame.stream_frame == nullptr) {
|
| - LOG(DFATAL) << "Failed to append STREAM frame with no stream_frame.";
|
| + QUIC_BUG << "Failed to append STREAM frame with no stream_frame.";
|
| }
|
| // Fin bit.
|
| type_byte |= frame.stream_frame->fin ? kQuicStreamFinMask : 0;
|
| @@ -1927,23 +1927,23 @@ bool QuicFramer::AppendStreamFrame(const QuicStreamFrame& frame,
|
| bool no_stream_frame_length,
|
| QuicDataWriter* writer) {
|
| if (!writer->WriteBytes(&frame.stream_id, GetStreamIdSize(frame.stream_id))) {
|
| - LOG(DFATAL) << "Writing stream id size failed.";
|
| + QUIC_BUG << "Writing stream id size failed.";
|
| return false;
|
| }
|
| if (!writer->WriteBytes(&frame.offset, GetStreamOffsetSize(frame.offset))) {
|
| - LOG(DFATAL) << "Writing offset size failed.";
|
| + QUIC_BUG << "Writing offset size failed.";
|
| return false;
|
| }
|
| if (!no_stream_frame_length) {
|
| if ((frame.frame_length > numeric_limits<uint16_t>::max()) ||
|
| !writer->WriteUInt16(static_cast<uint16_t>(frame.frame_length))) {
|
| - LOG(DFATAL) << "Writing stream frame length failed";
|
| + QUIC_BUG << "Writing stream frame length failed";
|
| return false;
|
| }
|
| }
|
|
|
| if (!writer->WriteBytes(frame.frame_buffer, frame.frame_length)) {
|
| - LOG(DFATAL) << "Writing frame data failed.";
|
| + QUIC_BUG << "Writing frame data failed.";
|
| return false;
|
| }
|
| return true;
|
| @@ -2170,20 +2170,20 @@ bool QuicFramer::AppendStopWaitingFrame(const QuicPacketHeader& header,
|
| const QuicPacketNumber length_shift =
|
| header.public_header.packet_number_length * 8;
|
| if (!writer->WriteUInt8(frame.entropy_hash)) {
|
| - LOG(DFATAL) << " hash failed";
|
| + QUIC_BUG << " hash failed";
|
| return false;
|
| }
|
|
|
| if (least_unacked_delta >> length_shift > 0) {
|
| - LOG(DFATAL) << "packet_number_length "
|
| - << header.public_header.packet_number_length
|
| - << " is too small for least_unacked_delta: "
|
| - << least_unacked_delta;
|
| + QUIC_BUG << "packet_number_length "
|
| + << header.public_header.packet_number_length
|
| + << " is too small for least_unacked_delta: "
|
| + << least_unacked_delta;
|
| return false;
|
| }
|
| if (!AppendPacketSequenceNumber(header.public_header.packet_number_length,
|
| least_unacked_delta, writer)) {
|
| - LOG(DFATAL) << " seq failed: " << header.public_header.packet_number_length;
|
| + QUIC_BUG << " seq failed: " << header.public_header.packet_number_length;
|
| return false;
|
| }
|
|
|
|
|