Implement QUIC Header Protection
gfe-relnote: Protected by QUIC_VERSION_99
PiperOrigin-RevId: 247137283
Change-Id: I1deb08d304b7739c3c8fa6b995e55fbd8652dc1e
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h
index 9702a09..0c951ed 100644
--- a/quic/core/quic_dispatcher.h
+++ b/quic/core/quic_dispatcher.h
@@ -132,10 +132,11 @@
// QuicFramerVisitorInterface implementation. Not expected to be called
// outside of this class.
void OnPacket() override;
- // Called when the public header has been parsed.
+ // Called when the public header has been parsed. Returns false when just the
+ // public header is enough to dispatch the packet; true if the framer needs to
+ // continue parsing the packet.
bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override;
- // Called when the private header has been parsed of a data packet that is
- // destined for the time wait manager.
+ // Called when the private header has been parsed.
bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override;
void OnError(QuicFramer* framer) override;
bool OnProtocolVersionMismatch(ParsedQuicVersion received_version,
@@ -378,6 +379,10 @@
typedef QuicUnorderedSet<QuicConnectionId, QuicConnectionIdHash>
QuicConnectionIdSet;
+ // Based on an unauthenticated packet header |header|, calls ValidityChecks
+ // and then either MaybeRejectStatelessly or ProcessUnauthenticatedHeaderFate.
+ void ProcessHeader(const QuicPacketHeader& header);
+
// Attempts to reject the connection statelessly, if stateless rejects are
// possible and if the current packet contains a CHLO message. Determines a
// fate which describes what subsequent processing should be performed on the