gfe-relnote: move stop/start accepting new connection feature from GfeQuicDispatcher to QuicDispatcher. Protected by --gfe2_restart_flag_quic_should_accept_new_connection.
Use QuicDispatcher::accept_new_connections_ instead of GfeQuicDispathcer::accepting_new_connection_ids_ to reject new connection.
Add new interfaces Start/StopAcceptingNewConnections() to QuicDispatcher.
PiperOrigin-RevId: 299258338
Change-Id: I8db641954ca52eddaad41934bd6b0b3e61237f9c
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h
index 4bc44de..71cbb57 100644
--- a/quic/core/quic_dispatcher.h
+++ b/quic/core/quic_dispatcher.h
@@ -139,6 +139,15 @@
// Return true if there is CHLO buffered.
virtual bool HasChlosBuffered() const;
+ // Start accepting new ConnectionIds.
+ void StartAcceptingNewConnections();
+
+ // Stop accepting new ConnectionIds, either as a part of the lame
+ // duck process or because explicitly configured.
+ void StopAcceptingNewConnections();
+
+ bool accept_new_connections() const { return accept_new_connections_; }
+
protected:
virtual std::unique_ptr<QuicSession> CreateQuicSession(
QuicConnectionId server_connection_id,
@@ -251,8 +260,6 @@
QuicConnection* connection,
ConnectionCloseSource source);
- void StopAcceptingNewConnections();
-
// Called to terminate a connection statelessly. Depending on |format|, either
// 1) send connection close with |error_code| and |error_details| and add
// connection to time wait list or 2) directly add connection to time wait
@@ -288,6 +295,9 @@
allow_short_initial_server_connection_ids;
}
+ // Called if a packet from an unseen connection is reset or rejected.
+ virtual void OnNewConnectionRejected() {}
+
private:
friend class test::QuicDispatcherPeer;
@@ -365,7 +375,8 @@
// event loop. When reaches 0, it means can't create sessions for now.
int16_t new_sessions_allowed_per_event_loop_;
- // True if this dispatcher is not draining.
+ // True if this dispatcher is accepting new ConnectionIds (new client
+ // connections), false otherwise.
bool accept_new_connections_;
// If false, the dispatcher follows the IETF spec and rejects packets with