| Index: net/quic/quic_connection.cc
|
| diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
|
| index 51991be46cd61a0f983c3b15e80945075e657d8f..497aa929e30c06fe54cfab1ae7825b9b7650c8b6 100644
|
| --- a/net/quic/quic_connection.cc
|
| +++ b/net/quic/quic_connection.cc
|
| @@ -1196,19 +1196,15 @@ bool QuicConnection::ShouldDiscardPacket(
|
| return true;
|
| }
|
|
|
| - if (retransmittable == HAS_RETRANSMITTABLE_DATA) {
|
| - if (!sent_packet_manager_.IsUnacked(sequence_number)) {
|
| - // This is a crazy edge case, but if we retransmit a packet,
|
| - // (but have to queue it for some reason) then receive an ack
|
| - // for the previous transmission (but not the retransmission)
|
| - // then receive a truncated ACK which causes us to raise the
|
| - // high water mark, all before we're able to send the packet
|
| - // then we can simply drop it.
|
| - DVLOG(1) << ENDPOINT << "Dropping packet: " << sequence_number
|
| - << " since it has already been acked.";
|
| - return true;
|
| - }
|
| + // If the packet has been discarded before sending, don't send it.
|
| + // This occurs if a packet gets serialized, queued, then discarded.
|
| + if (!sent_packet_manager_.IsUnacked(sequence_number)) {
|
| + DVLOG(1) << ENDPOINT << "Dropping packet before sending: "
|
| + << sequence_number << " since it has already been discarded.";
|
| + return true;
|
| + }
|
|
|
| + if (retransmittable == HAS_RETRANSMITTABLE_DATA) {
|
| if (sent_packet_manager_.IsPreviousTransmission(sequence_number)) {
|
| // If somehow we have already retransmitted this packet *before*
|
| // we actually send it for the first time (I think this is probably
|
|
|