Index: net/quic/quic_framer.cc |
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc |
index ac58d57ae3cd97922e2cd5008a9635d456e0860b..3100a85fe56bc31f4df455eba9c2b46df0baa7ca 100644 |
--- a/net/quic/quic_framer.cc |
+++ b/net/quic/quic_framer.cc |
@@ -159,13 +159,10 @@ QuicFramer::~QuicFramer() {} |
// static |
size_t QuicFramer::GetMinStreamFrameSize(QuicStreamId stream_id, |
QuicStreamOffset offset, |
- bool last_frame_in_packet, |
- InFecGroup is_in_fec_group) { |
- bool no_stream_frame_length = |
- last_frame_in_packet && is_in_fec_group == NOT_IN_FEC_GROUP; |
+ bool last_frame_in_packet) { |
return kQuicFrameTypeSize + GetStreamIdSize(stream_id) + |
GetStreamOffsetSize(offset) + |
- (no_stream_frame_length ? 0 : kQuicStreamPayloadLengthSize); |
+ (last_frame_in_packet ? 0 : kQuicStreamPayloadLengthSize); |
} |
// static |
@@ -270,7 +267,6 @@ size_t QuicFramer::GetSerializedFrameLength( |
size_t free_bytes, |
bool first_frame, |
bool last_frame, |
- InFecGroup is_in_fec_group, |
QuicPacketNumberLength packet_number_length) { |
// Prevent a rare crash reported in b/19458523. |
if ((frame.type == STREAM_FRAME || frame.type == ACK_FRAME) && |
@@ -278,7 +274,6 @@ size_t QuicFramer::GetSerializedFrameLength( |
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); |
@@ -288,8 +283,8 @@ size_t QuicFramer::GetSerializedFrameLength( |
// PADDING implies end of packet. |
return free_bytes; |
} |
- size_t frame_len = ComputeFrameLength(frame, last_frame, is_in_fec_group, |
- packet_number_length); |
+ size_t frame_len = |
+ ComputeFrameLength(frame, last_frame, packet_number_length); |
if (frame_len <= free_bytes) { |
// Frame fits within packet. Note that acks may be truncated. |
return frame_len; |
@@ -336,9 +331,7 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header, |
size_t i = 0; |
for (const QuicFrame& frame : frames) { |
// Determine if we should write stream frame length in header. |
- const bool no_stream_frame_length = |
- (header.is_in_fec_group == NOT_IN_FEC_GROUP) && |
- (i == frames.size() - 1); |
+ const bool no_stream_frame_length = i == frames.size() - 1; |
if (!AppendTypeByte(frame, no_stream_frame_length, &writer)) { |
QUIC_BUG << "AppendTypeByte failed"; |
return 0; |
@@ -421,31 +414,6 @@ size_t QuicFramer::BuildDataPacket(const QuicPacketHeader& header, |
return writer.length(); |
} |
-QuicPacket* QuicFramer::BuildFecPacket(const QuicPacketHeader& header, |
- StringPiece redundancy) { |
- DCHECK_EQ(IN_FEC_GROUP, header.is_in_fec_group); |
- DCHECK_NE(0u, header.fec_group); |
- size_t len = GetPacketHeaderSize(header); |
- len += redundancy.length(); |
- |
- scoped_ptr<char[]> buffer(new char[len]); |
- QuicDataWriter writer(len, buffer.get()); |
- if (!AppendPacketHeader(header, &writer)) { |
- QUIC_BUG << "AppendPacketHeader failed"; |
- return nullptr; |
- } |
- |
- if (!writer.WriteBytes(redundancy.data(), redundancy.length())) { |
- QUIC_BUG << "Failed to add FEC"; |
- return nullptr; |
- } |
- |
- return new QuicPacket( |
- buffer.release(), len, true, header.public_header.connection_id_length, |
- header.public_header.version_flag, header.public_header.multipath_flag, |
- header.public_header.packet_number_length); |
-} |
- |
// static |
QuicEncryptedPacket* QuicFramer::BuildPublicResetPacket( |
const QuicPublicResetPacket& packet) { |
@@ -619,19 +587,12 @@ bool QuicFramer::ProcessDataPacket(QuicDataReader* encrypted_reader, |
return RaiseError(QUIC_PACKET_TOO_LARGE); |
} |
+ DCHECK(!header.fec_flag); |
// Handle the payload. |
- if (!header.fec_flag) { |
- if (header.is_in_fec_group == IN_FEC_GROUP) { |
- StringPiece payload = reader.PeekRemainingPayload(); |
- visitor_->OnFecProtectedPayload(payload); |
- } |
- if (!ProcessFrameData(&reader, header)) { |
- DCHECK_NE(QUIC_NO_ERROR, error_); // ProcessFrameData sets the error. |
- DLOG(WARNING) << "Unable to process frame data."; |
- return false; |
- } |
- } else { |
- visitor_->OnFecData(reader.ReadRemainingPayload()); |
+ if (!ProcessFrameData(&reader, header)) { |
+ DCHECK_NE(QUIC_NO_ERROR, error_); // ProcessFrameData sets the error. |
+ DLOG(WARNING) << "Unable to process frame data."; |
+ return false; |
} |
visitor_->OnPacketComplete(); |
@@ -679,36 +640,9 @@ bool QuicFramer::ProcessPublicResetPacket( |
return true; |
} |
-bool QuicFramer::ProcessRevivedPacket(QuicPacketHeader* header, |
- StringPiece payload) { |
- visitor_->OnRevivedPacket(); |
- |
- header->entropy_hash = GetPacketEntropyHash(*header); |
- |
- if (!visitor_->OnPacketHeader(*header)) { |
- return true; |
- } |
- |
- if (payload.length() > kMaxPacketSize) { |
- set_detailed_error("Revived packet too large."); |
- return RaiseError(QUIC_PACKET_TOO_LARGE); |
- } |
- |
- QuicDataReader reader(payload.data(), payload.length()); |
- if (!ProcessFrameData(&reader, *header)) { |
- DCHECK_NE(QUIC_NO_ERROR, error_); // ProcessFrameData sets the error. |
- DLOG(WARNING) << "Unable to process frame data."; |
- return false; |
- } |
- |
- visitor_->OnPacketComplete(); |
- return true; |
-} |
- |
bool QuicFramer::AppendPacketHeader(const QuicPacketHeader& header, |
QuicDataWriter* writer) { |
DVLOG(1) << "Appending header: " << header; |
- DCHECK(header.fec_group > 0 || header.is_in_fec_group == NOT_IN_FEC_GROUP); |
uint8_t public_flags = 0; |
if (header.public_header.reset_flag) { |
public_flags |= PACKET_PUBLIC_FLAGS_RST; |
@@ -785,30 +719,10 @@ bool QuicFramer::AppendPacketHeader(const QuicPacketHeader& header, |
if (header.entropy_flag) { |
private_flags |= PACKET_PRIVATE_FLAGS_ENTROPY; |
} |
- if (header.is_in_fec_group == IN_FEC_GROUP) { |
- private_flags |= PACKET_PRIVATE_FLAGS_FEC_GROUP; |
- } |
- if (header.fec_flag) { |
- private_flags |= PACKET_PRIVATE_FLAGS_FEC; |
- } |
if (!writer->WriteUInt8(private_flags)) { |
return false; |
} |
- // The FEC group number is the packet number of the first fec |
- // protected packet, or 0 if this packet is not protected. |
- if (header.is_in_fec_group == IN_FEC_GROUP) { |
- DCHECK_LE(header.fec_group, header.packet_number); |
- DCHECK_LT(header.packet_number - header.fec_group, 255u); |
- // Offset from the current packet number to the first fec |
- // protected packet. |
- uint8_t first_fec_protected_packet_offset = |
- static_cast<uint8_t>(header.packet_number - header.fec_group); |
- if (!writer->WriteBytes(&first_fec_protected_packet_offset, 1)) { |
- return false; |
- } |
- } |
- |
return true; |
} |
@@ -1849,13 +1763,12 @@ size_t QuicFramer::GetAckFrameSize( |
size_t QuicFramer::ComputeFrameLength( |
const QuicFrame& frame, |
bool last_frame_in_packet, |
- InFecGroup is_in_fec_group, |
QuicPacketNumberLength packet_number_length) { |
switch (frame.type) { |
case STREAM_FRAME: |
return GetMinStreamFrameSize(frame.stream_frame->stream_id, |
frame.stream_frame->offset, |
- last_frame_in_packet, is_in_fec_group) + |
+ last_frame_in_packet) + |
frame.stream_frame->frame_length; |
case ACK_FRAME: { |
return GetAckFrameSize(*frame.ack_frame, packet_number_length); |