From 3ce9d0d50c6854c52c2524b1f7613b0b8b614557 Mon Sep 17 00:00:00 2001 From: zefie Date: Wed, 25 Jun 2025 17:31:11 -0400 Subject: [PATCH] fix quit for clients that dont send quit before disconnect --- zefie_wtvp_minisrv/includes/classes/WTVIRC.js | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/zefie_wtvp_minisrv/includes/classes/WTVIRC.js b/zefie_wtvp_minisrv/includes/classes/WTVIRC.js index 1334503c..bb633ee1 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVIRC.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVIRC.js @@ -2971,20 +2971,21 @@ class WTVIRC { // Cleans up the user session and removes them from all channels const nickname = this.nicknames.get(socket); if (nickname) { + if (!socket.signedoff) { + var serverSocket = null; + for (const [srvSocket, users] of this.serverusers.entries()) { + if (users && typeof users.has === 'function' && users.has(nickname)) { + // Don't send QUIT to this server, as it owns the user + serverSocket = srvSocket; + continue; + } + } + await this.broadcastUser(nickname, `:${nickname}!${socket.username}@${socket.host} QUIT :Client disconnected\r\n`, socket); + await this.broadcastToAllServers(`:${socket.uniqueId} QUIT :Client disconnected\r\n`, serverSocket); + socket.signedoff = true; // Just in case + } this.cleanupUserSession(nickname); this.nicknames.delete(socket); - } - if (!socket.signedoff) { - var serverSocket = null; - for (const [srvSocket, users] of this.serverusers.entries()) { - if (users && typeof users.has === 'function' && users.has(nickname)) { - // Don't send QUIT to this server, as it owns the user - serverSocket = srvSocket; - continue; - } - } - await this.broadcastToAllServers(`:${socket.uniqueId} QUIT :Client disconnected\r\n`, serverSocket); - socket.signedoff = true; // Just in case } if (socket.isserver) { const srvUsers = this.serverusers.get(socket) || [];