| Index: net/tools/quic/quic_dispatcher.h
|
| diff --git a/net/tools/quic/quic_dispatcher.h b/net/tools/quic/quic_dispatcher.h
|
| index db972530435ba65b8951d40310ce5f0828864dd7..3d4093d4ab76fe69c309d489cebe32bddb99db15 100644
|
| --- a/net/tools/quic/quic_dispatcher.h
|
| +++ b/net/tools/quic/quic_dispatcher.h
|
| @@ -18,6 +18,7 @@
|
| #include "net/quic/crypto/quic_compressed_certs_cache.h"
|
| #include "net/quic/crypto/quic_random.h"
|
| #include "net/quic/quic_blocked_writer_interface.h"
|
| +#include "net/quic/quic_buffered_packet_store.h"
|
| #include "net/quic/quic_connection.h"
|
| #include "net/quic/quic_protocol.h"
|
| #include "net/quic/quic_server_session_base.h"
|
| @@ -37,7 +38,8 @@ class QuicDispatcherPeer;
|
| class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| public ProcessPacketInterface,
|
| public QuicBlockedWriterInterface,
|
| - public QuicFramerVisitorInterface {
|
| + public QuicFramerVisitorInterface,
|
| + public QuicBufferedPacketStore::VisitorInterface {
|
| public:
|
| // Ideally we'd have a linked_hash_set: the boolean is unused.
|
| typedef linked_hash_map<QuicBlockedWriterInterface*,
|
| @@ -139,6 +141,11 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| bool OnPathCloseFrame(const QuicPathCloseFrame& frame) override;
|
| void OnPacketComplete() override;
|
|
|
| + // QuicBufferedPacketStore::VisitorInterface
|
| + void OnExpiredPackets(QuicConnectionId connection_id,
|
| + QuicBufferedPacketStore::BufferedPacketList
|
| + early_arrived_packets) override;
|
| +
|
| protected:
|
| virtual QuicServerSessionBase* CreateQuicSession(
|
| QuicConnectionId connection_id,
|
| @@ -275,6 +282,10 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| // The writer to write to the socket with.
|
| std::unique_ptr<QuicPacketWriter> writer_;
|
|
|
| + // Undecryptable packets which are buffered until a connection can be
|
| + // created to handle them.
|
| + QuicBufferedPacketStore buffered_packets_;
|
| +
|
| // This vector contains QUIC versions which we currently support.
|
| // This should be ordered such that the highest supported version is the first
|
| // element, with subsequent elements in descending order (versions can be
|
|
|