1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-24 04:01:07 +03:00

Cipher dropping take 2

Summary:
Now we won't have a zero PTO and we will properly clear out the outstanding packets.

Note that this cipher dropping is not what the draft prescribes, instead dropping both the initial and handshake ciphers when we know 1-rtt communication is functioning.

Reviewed By: yangchi

Differential Revision: D20388737

fbshipit-source-id: 0b89eb80c8faa796ab09eda3eaa10a00dcf7bae9
This commit is contained in:
Matt Joras
2020-05-06 11:12:52 -07:00
committed by Facebook GitHub Bot
parent 87582c9b5f
commit 50d5c29346
19 changed files with 408 additions and 251 deletions

View File

@@ -142,10 +142,13 @@ void updateSimpleFrameOnPacketLoss(
// Do not retransmit PATH_RESPONSE to avoid buffering
break;
}
case QuicSimpleFrame::Type::HandshakeDoneFrame_E: {
const auto& handshakeDoneFrame = *frame.asHandshakeDoneFrame();
conn.pendingEvents.frames.push_back(handshakeDoneFrame);
}
case QuicSimpleFrame::Type::NewConnectionIdFrame_E:
case QuicSimpleFrame::Type::MaxStreamsFrame_E:
case QuicSimpleFrame::Type::RetireConnectionIdFrame_E:
case QuicSimpleFrame::Type::HandshakeDoneFrame_E:
conn.pendingEvents.frames.push_back(frame);
break;
}
@@ -298,7 +301,10 @@ bool updateSimpleFrameOnPacketReceived(
TransportErrorCode::PROTOCOL_VIOLATION,
FrameType::HANDSHAKE_DONE);
}
// TODO cipher dropping
// Mark the handshake confirmed in the handshake layer before doing
// any dropping, as this gives us a chance to process ACKs in this
// packet.
conn.handshakeLayer->handshakeConfirmed();
return true;
}
}