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 * lib/channel.js: Add extra checks in callbacks to ensure certain things don't happen if the channel is dead * lib/playlist.js: Add extra checks to kill the playlist if the channel it is associated with is dead * lib/database.js: Add extra checks to prevent loading channel data into a dead channel object * tests/fastQuit.js: A simple script to open a connection, join a channel, and disconnect immediately to test for race conditions Sat Sep 7 23:38 2013 CDT * lib/user.js: Add "loggingIn" field to act as a lock on async logins. Delay further login attempts until the current login attempt finishes. Should prevent cases where sending multiple logins quickly in succession caused race conditions and thus odd "duplicate login" kicks. Sat Sep 7 15:43 2013 CDT * lib/channel.js, lib/user.js: Add an extra check for channel.users[i] to write an error message (instead of kicking) when the same user that is connecting is the one being kicked. Fri Sep 6 16:29 2013 CDT * lib/config.js: Add an io-host option to allow binding socket.io to a different IP than the webserver Fri Sep 6 15:51 2013 CDT * lib/utilities.js: Tweak the throttle code for rate limiters to fix incorrect behavior of the burst cap after the cooldown period has been passed * tests/rateLimiter.js: Write a couple quick test cases to ensure that rate limiting is handled properly Thu Sep 5 22:52 2013 CDT * www/assets/js/callbacks.js: Disable the channel registration button and change its text while a registration attempt is being processed (prevents DB errors from impatient people spamming the button) (addresses Issue #276 ) Thu Sep 5 13:45 2013 CDT * acp.js, actionlog.js, api.js, channel.js, chatcommand.js, config.js, customembed.js, database.js, filter.js, get-info.js, logger.js, media.js, notwebsocket.js, playlist.js, poll.js, rank.js, server.js, stats.js, ullist.js, user.js, utilities.js: move server files into lib/ folder to clean up the root directory of the project. * api.js: replace regex with $util.isValidChannelName (L68); fix relative file paths (per moving api.js to lib/) * server.js: fix relative file paths * channel.js: fix relative file paths Wed Sep 4 22:45 2013 CDT * changelog: initialize changelog file Wed Sep 4 17:47 2013 CDT * www/assets/js/data.js: add CHANNEL.usercount variable * www/assets/js/callbacks.js: update CHANNEL.usercount variable when the usercount changes * www/assets/js/util.js: add "Anonymous" to the usercount breakdown display (addresses Issue #270 ) Changelog established on Wed Sep 4 2013