diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 2afb87ab..de15ad01 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -79,7 +79,8 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { enableCTWARecovery, sessionCleanupConfig } = config - const autoCleanCorrupted = (sessionCleanupConfig || DEFAULT_SESSION_CLEANUP_CONFIG).autoCleanCorrupted + // Use nullish coalescing to handle partial config properly + const autoCleanCorrupted = sessionCleanupConfig?.autoCleanCorrupted ?? DEFAULT_SESSION_CLEANUP_CONFIG.autoCleanCorrupted const sock = makeMessagesSocket(config) const { ev, diff --git a/src/Socket/socket.ts b/src/Socket/socket.ts index 5d76e62a..705e2dec 100644 --- a/src/Socket/socket.ts +++ b/src/Socket/socket.ts @@ -506,7 +506,11 @@ export const makeSocket = (config: SocketConfig) => { const sessionActivityTracker = makeSessionActivityTracker(keys, logger) // Session cleanup manager - removes inactive/orphaned sessions - const sessionCleanupConfig = config.sessionCleanupConfig || DEFAULT_SESSION_CLEANUP_CONFIG + // Merge user config with defaults to prevent partial overrides from breaking cleanup + const sessionCleanupConfig = { + ...DEFAULT_SESSION_CLEANUP_CONFIG, + ...(config.sessionCleanupConfig || {}) + } const sessionCleanup = makeSessionCleanup( keys, signalRepository.lidMapping, diff --git a/src/Types/Socket.ts b/src/Types/Socket.ts index 425c20d1..9df4734d 100644 --- a/src/Types/Socket.ts +++ b/src/Types/Socket.ts @@ -254,6 +254,6 @@ export type SocketConfig = { */ enableUnifiedSession?: boolean - /** Session cleanup configuration (optional, uses DEFAULT_SESSION_CLEANUP_CONFIG if not provided) */ - sessionCleanupConfig?: SessionCleanupConfig + /** Session cleanup configuration (optional, partial overrides merged with defaults) */ + sessionCleanupConfig?: Partial }