[WIP] Optimizations: code readiness optimizations

This commit is contained in:
Alex P 2025-10-23 01:24:58 +03:00
parent 6f82e8642c
commit 1671a7706b
2 changed files with 8 additions and 7 deletions

View File

@ -96,11 +96,11 @@ func handleRequestSessionApprovalRPC(session *Session) (any, error) {
} }
func validateNickname(nickname string) error { func validateNickname(nickname string) error {
if len(nickname) < 2 { if len(nickname) < minNicknameLength {
return errors.New("nickname must be at least 2 characters") return fmt.Errorf("nickname must be at least %d characters", minNicknameLength)
} }
if len(nickname) > 30 { if len(nickname) > maxNicknameLength {
return errors.New("nickname must be 30 characters or less") return fmt.Errorf("nickname must be %d characters or less", maxNicknameLength)
} }
if !isValidNickname(nickname) { if !isValidNickname(nickname) {
return errors.New("nickname can only contain letters, numbers, spaces, and - _ . @") return errors.New("nickname can only contain letters, numbers, spaces, and - _ . @")

View File

@ -25,8 +25,9 @@ const (
// Timing constants for session management // Timing constants for session management
const ( const (
// Broadcast throttling (DoS protection) // Broadcast throttling (DoS protection)
globalBroadcastDelay = 100 * time.Millisecond // Minimum time between global session broadcasts globalBroadcastDelay = 100 * time.Millisecond // Minimum time between global session broadcasts
sessionBroadcastDelay = 50 * time.Millisecond // Minimum time between broadcasts to a single session sessionBroadcastDelay = 50 * time.Millisecond // Minimum time between broadcasts to a single session
broadcastQueueCapacity = 100 // Maximum pending broadcasts before drops occur
// Session timeout defaults // Session timeout defaults
defaultPendingSessionTimeout = 1 * time.Minute // Timeout for pending sessions (DoS protection) defaultPendingSessionTimeout = 1 * time.Minute // Timeout for pending sessions (DoS protection)
@ -154,7 +155,7 @@ func NewSessionManager(logger *zerolog.Logger) *SessionManager {
logger: logger, logger: logger,
maxSessions: maxSessions, maxSessions: maxSessions,
primaryTimeout: primaryTimeout, primaryTimeout: primaryTimeout,
broadcastQueue: make(chan struct{}, 100), broadcastQueue: make(chan struct{}, broadcastQueueCapacity),
} }
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())