only reserve nicks if not reserved already
This commit is contained in:
@@ -483,7 +483,9 @@ class WTVIRC {
|
|||||||
const expiry = parseInt(parts[2]) || 0;
|
const expiry = parseInt(parts[2]) || 0;
|
||||||
const reservedNick = parts[3];
|
const reservedNick = parts[3];
|
||||||
var reason = parts.slice(4).join(' ') || '';
|
var reason = parts.slice(4).join(' ') || '';
|
||||||
this.reservednicks.push(reservedNick);
|
if (!this.reservednicks.includes(reservedNick)) {
|
||||||
|
this.reservednicks.push(reservedNick);
|
||||||
|
}
|
||||||
if (expiry > 0) {
|
if (expiry > 0) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const index = this.reservednicks.indexOf(reservedNick);
|
const index = this.reservednicks.indexOf(reservedNick);
|
||||||
@@ -765,8 +767,8 @@ class WTVIRC {
|
|||||||
if (serverUsers && typeof serverUsers.delete === 'function') {
|
if (serverUsers && typeof serverUsers.delete === 'function') {
|
||||||
const nickToRemove = this.findUserByUniqueId(sourceUniqueId);
|
const nickToRemove = this.findUserByUniqueId(sourceUniqueId);
|
||||||
serverUsers.delete(nickToRemove);
|
serverUsers.delete(nickToRemove);
|
||||||
|
this.cleanupUserSession(nickToRemove);
|
||||||
}
|
}
|
||||||
this.cleanupUserSession(user_name);
|
|
||||||
await this.broadcastToAllServers(`:${nickname}!${user_name}@${this.servername} QUIT :${message}\r\n`, socket);
|
await this.broadcastToAllServers(`:${nickname}!${user_name}@${this.servername} QUIT :${message}\r\n`, socket);
|
||||||
break;
|
break;
|
||||||
case 'JOIN':
|
case 'JOIN':
|
||||||
@@ -2984,16 +2986,17 @@ class WTVIRC {
|
|||||||
socket.signedoff = true; // Just in case
|
socket.signedoff = true; // Just in case
|
||||||
}
|
}
|
||||||
if (socket.isserver) {
|
if (socket.isserver) {
|
||||||
for (const [srvSocket, users] of this.serverusers.entries()) {
|
const srvUsers = this.serverusers.get(socket) || [];
|
||||||
if (srvSocket === socket) {
|
for (const nickname of srvUsers) {
|
||||||
for (const nickname of users) {
|
// Remove all user data for this server
|
||||||
// Remove all user data for this server
|
this.debugLog('debug', `Removing user ${nickname} from server ${socket.servername}`);
|
||||||
this.cleanupUserSession(nickname);
|
if (users && typeof users.delete === 'function') {
|
||||||
}
|
users.delete(nickname);
|
||||||
}
|
}
|
||||||
|
this.cleanupUserSession(nickname);
|
||||||
}
|
}
|
||||||
this.servers.filter(s => s !== socket);
|
this.servers.delete(socket);
|
||||||
this.serverusers.filter(s => s !== socket);
|
this.serverusers.delete(socket);
|
||||||
} else {
|
} else {
|
||||||
this.clients.filter(c => c !== socket);
|
this.clients.filter(c => c !== socket);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user