Introduce Legacy Version Encapsulation
This feature allows modern QUIC versions to encapsulate their first flight in Q043 packets, to support SNI-extraction middleboxes that do not support modern versions. More details in the design document at <go/quic-legacy-encaps>.
Introduce legacy version encapsulation, protected by gfe2_reloadable_flag_quic_dispatcher_legacy_version_encapsulation.
PiperOrigin-RevId: 317921151
Change-Id: I2dd8a3641caf3fd3d283613de3d117c1bdbea632
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h
index 743e46e..d71a1af 100644
--- a/quic/core/quic_packet_creator.h
+++ b/quic/core/quic_packet_creator.h
@@ -255,6 +255,7 @@
void set_encryption_level(EncryptionLevel level) {
packet_.encryption_level = level;
}
+ EncryptionLevel encryption_level() { return packet_.encryption_level; }
// packet number of the last created packet, or 0 if no packets have been
// created.
@@ -429,6 +430,10 @@
char* buffer,
size_t buffer_len);
+ void set_disable_padding_override(bool should_disable_padding) {
+ disable_padding_override_ = should_disable_padding;
+ }
+
private:
friend class test::QuicPacketCreatorPeer;
@@ -604,6 +609,9 @@
const bool fix_min_crypto_frame_size_ =
GetQuicReloadableFlag(quic_fix_min_crypto_frame_size);
+
+ // When true, this will override the padding generation code to disable it.
+ bool disable_padding_override_ = false;
};
} // namespace quic