Fix issues with regard to unloading channels

This commit is contained in:
calzoneman 2013-09-09 22:11:24 -05:00
parent f7e968a13c
commit efcae43ae8
3 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,10 @@
Mon Sep 9 22:10 2013 CDT
* lib/acp.js: Change acp-channel-unload callback to duplicate the list
of users in the channel to prevent concurrent modification while
kicking
* lib/channel.js: As an extra precaution, set user.channel = null after
kicking a user
Sun Sep 8 17:41 2013 CDT
* lib/server.js: Change behavior of unloadChannel - deletes all object
keys in the channel object and then sets channel.dead = true

View File

@ -135,7 +135,10 @@ module.exports = function (Server) {
return;
ActionLog.record(user.ip, user.name, "acp-channel-unload");
c.initialized = data.save;
c.users.forEach(function(u) {
// copy the list of users to prevent concurrent
// modification
var users = Array.prototype.slice.call(c.users);
users.forEach(function (u) {
c.kick(u, "Channel shutting down");
});

View File

@ -862,10 +862,8 @@ Channel.prototype.kick = function(user, reason) {
user.socket.emit("kick", {
reason: reason
});
if(user.socket.disconnected) {
this.userLeave(user);
}
user.socket.disconnect(true);
user.channel = null;
}
Channel.prototype.hideIP = function(ip) {