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) || [];