1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-25 15:43:13 +03:00

Buffer packets on the client when we don't have ciphers.

Summary:
This can happen when we don't get the server handshake data in time, but it is especially bad with 0RTT when it is potentially a full flight of 1RTT data that is dropped while we wait for the handshake PTO.

Note this leverages the existing CipherUnavailable mechanism, but processes them in a much more simple way than the server side. Additionally, only 1-RTT packets need to be buffered.

Reviewed By: yangchi, lnicco

Differential Revision: D27634184

fbshipit-source-id: db5ba0b9f07176d106f709c7a11d83d0fc8281b7
This commit is contained in:
Matt Joras
2021-04-08 16:37:52 -07:00
committed by Facebook GitHub Bot
parent b8a37fb740
commit d9d2d29af6
8 changed files with 293 additions and 5 deletions

View File

@@ -464,6 +464,8 @@ QuicCryptoStream* getCryptoStream(
return &cryptoState.handshakeStream;
case EncryptionLevel::AppData:
return &cryptoState.oneRttStream;
default:
LOG(FATAL) << "Unhandled EncryptionLevel";
}
folly::assume_unreachable();
}