From 1671a7706baf1e40db0583a6b369f6f941224a3f Mon Sep 17 00:00:00 2001 From: Alex P Date: Thu, 23 Oct 2025 01:24:58 +0300 Subject: [PATCH] [WIP] Optimizations: code readiness optimizations --- jsonrpc_session_handlers.go | 8 ++++---- session_manager.go | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/jsonrpc_session_handlers.go b/jsonrpc_session_handlers.go index a5def62d..760da5fa 100644 --- a/jsonrpc_session_handlers.go +++ b/jsonrpc_session_handlers.go @@ -96,11 +96,11 @@ func handleRequestSessionApprovalRPC(session *Session) (any, error) { } func validateNickname(nickname string) error { - if len(nickname) < 2 { - return errors.New("nickname must be at least 2 characters") + if len(nickname) < minNicknameLength { + return fmt.Errorf("nickname must be at least %d characters", minNicknameLength) } - if len(nickname) > 30 { - return errors.New("nickname must be 30 characters or less") + if len(nickname) > maxNicknameLength { + return fmt.Errorf("nickname must be %d characters or less", maxNicknameLength) } if !isValidNickname(nickname) { return errors.New("nickname can only contain letters, numbers, spaces, and - _ . @") diff --git a/session_manager.go b/session_manager.go index 913d4a2e..2b3958c7 100644 --- a/session_manager.go +++ b/session_manager.go @@ -25,8 +25,9 @@ const ( // Timing constants for session management const ( // Broadcast throttling (DoS protection) - globalBroadcastDelay = 100 * time.Millisecond // Minimum time between global session broadcasts - sessionBroadcastDelay = 50 * time.Millisecond // Minimum time between broadcasts to a single session + globalBroadcastDelay = 100 * time.Millisecond // Minimum time between global session broadcasts + sessionBroadcastDelay = 50 * time.Millisecond // Minimum time between broadcasts to a single session + broadcastQueueCapacity = 100 // Maximum pending broadcasts before drops occur // Session timeout defaults defaultPendingSessionTimeout = 1 * time.Minute // Timeout for pending sessions (DoS protection) @@ -154,7 +155,7 @@ func NewSessionManager(logger *zerolog.Logger) *SessionManager { logger: logger, maxSessions: maxSessions, primaryTimeout: primaryTimeout, - broadcastQueue: make(chan struct{}, 100), + broadcastQueue: make(chan struct{}, broadcastQueueCapacity), } ctx, cancel := context.WithCancel(context.Background())