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

Unified Diff: net/quic/quic_framer.cc

Issue 11820005: Largest received -> largest observed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 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
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_framer.cc
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc
index d60cb7026411dd8be212d638afdfd3636caf2e47..f5ec5e199cd72d12b6842d3d09af47e21d6b9d21 100644
--- a/net/quic/quic_framer.cc
+++ b/net/quic/quic_framer.cc
@@ -425,8 +425,8 @@ bool QuicFramer::ProcessAckFrame(QuicAckFrame* frame) {
}
bool QuicFramer::ProcessReceivedInfo(ReceivedPacketInfo* received_info) {
- if (!reader_->ReadUInt48(&received_info->largest_received)) {
- set_detailed_error("Unable to read largest received.");
+ if (!reader_->ReadUInt48(&received_info->largest_observed)) {
+ set_detailed_error("Unable to read largest observed.");
return false;
}
@@ -671,7 +671,7 @@ size_t QuicFramer::ComputeFramePayloadLength(const QuicFrame& frame) {
break; // Need to support this eventually :>
case ACK_FRAME: {
const QuicAckFrame& ack = *frame.ack_frame;
- len += 6; // largest received packet sequence number
+ len += 6; // largest observed packet sequence number
len += 1; // num missing packets
len += 6 * ack.received_info.missing_packets.size();
len += 6; // least packet sequence number awaiting an ack
@@ -753,8 +753,7 @@ bool QuicFramer::AppendStreamFramePayload(
return true;
}
-// TODO(alyssar): revisit the complexity here to rch's satisfaction
-QuicPacketSequenceNumber QuicFramer::CalculateLargestReceived(
+QuicPacketSequenceNumber QuicFramer::CalculateLargestObserved(
const SequenceSet& missing_packets,
SequenceSet::const_iterator largest_written) {
SequenceSet::const_iterator it = largest_written;
@@ -767,21 +766,8 @@ QuicPacketSequenceNumber QuicFramer::CalculateLargestReceived(
return *it - 1;
}
- // If we've hit the end of the list, and we're not missing any packets, try
- // finding a gap between the largest written and the beginning of the set.
- it = largest_written++;
- previous_missing = *it;
- do {
- --it;
- if (previous_missing - 1 != *it) {
- return previous_missing - 1;
- }
- previous_missing = *it;
- } while (it != missing_packets.begin());
-
- // The missing packets are entirely contiguous. Return the value of the first
- // missing packet - 1, as that must have been seen.
- return *missing_packets.begin() - 1;
+ // Otherwise return the largest missing packet, as indirectly observed.
+ return *largest_written;
}
// TODO(ianswett): Use varints or another more compact approach for all deltas.
@@ -792,8 +778,8 @@ bool QuicFramer::AppendAckFramePayload(
return false;
}
- size_t largest_received_offset = writer->length();
- if (!writer->WriteUInt48(frame.received_info.largest_received)) {
+ size_t largest_observed_offset = writer->length();
+ if (!writer->WriteUInt48(frame.received_info.largest_observed)) {
return false;
}
@@ -809,10 +795,10 @@ bool QuicFramer::AppendAckFramePayload(
int num_missing_packets_written = 0;
for (; it != frame.received_info.missing_packets.end(); ++it) {
if (!writer->WriteUInt48(*it)) {
- // We are truncating. Overwrite largest_received.
- QuicPacketSequenceNumber largest_received =
- CalculateLargestReceived(frame.received_info.missing_packets, --it);
- writer->WriteUInt48ToOffset(largest_received, largest_received_offset);
+ // We are truncating. Overwrite largest_observed.
+ QuicPacketSequenceNumber largest_observed =
+ CalculateLargestObserved(frame.received_info.missing_packets, --it);
+ writer->WriteUInt48ToOffset(largest_observed, largest_observed_offset);
writer->WriteUInt8ToOffset(num_missing_packets_written,
num_missing_packets_offset);
return true;
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698