fix quit for clients that dont send quit before disconnect
This commit is contained in:
@@ -2971,20 +2971,21 @@ class WTVIRC {
|
|||||||
// Cleans up the user session and removes them from all channels
|
// Cleans up the user session and removes them from all channels
|
||||||
const nickname = this.nicknames.get(socket);
|
const nickname = this.nicknames.get(socket);
|
||||||
if (nickname) {
|
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.cleanupUserSession(nickname);
|
||||||
this.nicknames.delete(socket);
|
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) {
|
if (socket.isserver) {
|
||||||
const srvUsers = this.serverusers.get(socket) || [];
|
const srvUsers = this.serverusers.get(socket) || [];
|
||||||
|
|||||||
Reference in New Issue
Block a user