| Index: net/tools/quic/quic_dispatcher.h
|
| diff --git a/net/tools/quic/quic_dispatcher.h b/net/tools/quic/quic_dispatcher.h
|
| index 33d8777d3afef6df56f991c733ea48b1c1a0fd7c..40372e43fe1ae4b833b00e739514e6e4640af0d7 100644
|
| --- a/net/tools/quic/quic_dispatcher.h
|
| +++ b/net/tools/quic/quic_dispatcher.h
|
| @@ -20,16 +20,18 @@
|
| #include "net/quic/core/quic_blocked_writer_interface.h"
|
| #include "net/quic/core/quic_buffered_packet_store.h"
|
| #include "net/quic/core/quic_connection.h"
|
| +#include "net/quic/core/quic_crypto_server_stream.h"
|
| #include "net/quic/core/quic_protocol.h"
|
| #include "net/quic/core/quic_server_session_base.h"
|
| +
|
| #include "net/tools/quic/quic_process_packet_interface.h"
|
| #include "net/tools/quic/quic_time_wait_list_manager.h"
|
| +#include "net/tools/quic/stateless_rejector.h"
|
|
|
| namespace net {
|
|
|
| class QuicConfig;
|
| class QuicCryptoServerConfig;
|
| -class QuicServerSessionBase;
|
|
|
| namespace test {
|
| class QuicDispatcherPeer;
|
| @@ -51,7 +53,7 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| const QuicCryptoServerConfig* crypto_config,
|
| QuicVersionManager* version_manager,
|
| std::unique_ptr<QuicConnectionHelperInterface> helper,
|
| - std::unique_ptr<QuicServerSessionBase::Helper> session_helper,
|
| + std::unique_ptr<QuicCryptoServerStream::Helper> session_helper,
|
| std::unique_ptr<QuicAlarmFactory> alarm_factory);
|
|
|
| ~QuicDispatcher() override;
|
| @@ -87,6 +89,9 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| // time-wait list.
|
| void OnConnectionAddedToTimeWaitList(QuicConnectionId connection_id) override;
|
|
|
| + void OnPacketBeingDispatchedToSession(
|
| + QuicServerSessionBase* session) override {}
|
| +
|
| typedef std::unordered_map<QuicConnectionId, QuicServerSessionBase*>
|
| SessionMap;
|
|
|
| @@ -222,7 +227,7 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
|
|
| QuicConnectionHelperInterface* helper() { return helper_.get(); }
|
|
|
| - QuicServerSessionBase::Helper* session_helper() {
|
| + QuicCryptoServerStream::Helper* session_helper() {
|
| return session_helper_.get();
|
| }
|
|
|
| @@ -263,6 +268,7 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
|
|
| private:
|
| friend class net::test::QuicDispatcherPeer;
|
| + friend class StatelessRejectorProcessDoneCallback;
|
|
|
| // Removes the session from the session map and write blocked list, and adds
|
| // the ConnectionId to the time-wait list. If |session_closed_statelessly| is
|
| @@ -272,17 +278,29 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| bool HandlePacketForTimeWait(const QuicPacketPublicHeader& header);
|
|
|
| // Attempts to reject the connection statelessly, if stateless rejects are
|
| - // possible and if the current packet contains a CHLO message.
|
| - // Returns a fate which describes what subsequent processing should be
|
| - // performed on the packets, like ValidityChecks.
|
| - QuicPacketFate MaybeRejectStatelessly(QuicConnectionId connection_id,
|
| - const QuicPacketHeader& header);
|
| + // possible and if the current packet contains a CHLO message. Determines a
|
| + // fate which describes what subsequent processing should be performed on the
|
| + // packets, like ValidityChecks, and invokes ProcessUnauthenticatedHeaderFate.
|
| + void MaybeRejectStatelessly(QuicConnectionId connection_id,
|
| + const QuicPacketHeader& header);
|
|
|
| // Deliver |packets| to |session| for further processing.
|
| void DeliverPacketsToSession(
|
| const std::list<QuicBufferedPacketStore::BufferedPacket>& packets,
|
| QuicServerSessionBase* session);
|
|
|
| + // Perform the appropriate actions on the current packet based on |fate| -
|
| + // either process, buffer, or drop it.
|
| + void ProcessUnauthenticatedHeaderFate(QuicPacketFate fate,
|
| + QuicConnectionId connection_id,
|
| + QuicPacketNumber packet_number);
|
| +
|
| + // Invoked when StatelessRejector::Process completes.
|
| + void OnStatelessRejectorProcessDone(
|
| + std::unique_ptr<StatelessRejector> rejector,
|
| + QuicPacketNumber packet_number,
|
| + QuicVersion first_version);
|
| +
|
| void set_new_sessions_allowed_per_event_loop(
|
| int16_t new_sessions_allowed_per_event_loop) {
|
| new_sessions_allowed_per_event_loop_ = new_sessions_allowed_per_event_loop;
|
| @@ -310,7 +328,7 @@ class QuicDispatcher : public QuicServerSessionBase::Visitor,
|
| std::unique_ptr<QuicConnectionHelperInterface> helper_;
|
|
|
| // The helper used for all sessions.
|
| - std::unique_ptr<QuicServerSessionBase::Helper> session_helper_;
|
| + std::unique_ptr<QuicCryptoServerStream::Helper> session_helper_;
|
|
|
| // Creates alarms.
|
| std::unique_ptr<QuicAlarmFactory> alarm_factory_;
|
|
|