45 Commits

Author SHA1 Message Date
Calvin Montgomery
99760b6989 Purge the awful refreshAccount logic
User.prototype.refreshAccount was responsible for multiple race
condition bugs as well as inefficient duplication of DB queries in an
attempt to correct such race conditions.

It has now been replaced by a more reasonable model:

  * Global user account information and aliases are fetched in parallel
    on socket connection
  * Channel rank is fetched when the user tries to join a channel
2016-10-03 23:12:22 -07:00
Calvin Montgomery
e1120455b2 Cache channel ID for quicker loads/saves 2016-09-26 22:20:58 -07:00
Calvin Montgomery
edff85dfb0 Fix User#inChannel for channels with passwords 2016-09-17 15:02:30 -07:00
Calvin Montgomery
1b1d2596f8 Change default for new account delays to 0 2016-09-14 22:06:00 -07:00
Calvin Montgomery
8b94c54d25 Fix bug causing channels to get stuck when DB is down 2016-08-31 21:32:42 -07:00
Calvin Montgomery
e17dac58fd Add a temp bypass for initial rollout 2016-08-24 20:03:30 -07:00
Calvin Montgomery
af6e958c49 Merge remote-tracking branch 'origin' into ip-session-age 2016-08-24 19:48:58 -07:00
calzoneman
d9d385f85e Fix an age old log message missing whitespace 2016-08-10 23:10:44 -07:00
calzoneman
74cb1b3efc Implement time parsing/formatting for channel settings 2016-08-10 21:59:36 -07:00
calzoneman
8305c235eb Add initial channel setting for new account chat delay 2016-08-10 21:59:30 -07:00
calzoneman
701d470494 Add initial blocking of new users in chat 2016-08-10 21:59:18 -07:00
Xaekai
5896a1c0eb Add timestamps to polls.
Closes #562
2016-07-07 22:56:06 -07:00
calzoneman
f75d40d278 Fix a bug with passwords for bot logins 2016-07-03 23:50:16 -07:00
calzoneman
312892e56b Short term additional fix for #583
The previous commits do not handle all of the edge cases of #583
appropriately.  This is a short term solution that will work, but is not
as efficient as it could be.  The whole refreshAccount function needs to
be reconsidered and replaced with a more sane way of handling atomic
updates to the user's account state.
2016-06-29 22:00:25 -07:00
calzoneman
c70dc83504 Fix previous fix 2016-06-26 21:15:33 -07:00
calzoneman
e9fdb1a7e5 Fix login race condition (#583) 2016-06-26 16:21:15 -07:00
calzoneman
6f56862307 Add vidme support (#568) 2016-06-25 17:09:48 -07:00
calzoneman
056b2a48ea Add throttling of usercount frames 2016-06-18 00:32:50 -07:00
calzoneman
75245e4d98 Include video ID in the progress bar to prevent false clears 2016-05-19 21:31:10 -07:00
calzoneman
d61005e419 Add rel=noopener noreferrer to autogenerated links 2016-05-04 20:58:18 -07:00
calzoneman
0ee7f05213 Make polls more efficient
Instead of emitting frames to each individual socket, group them into
socket.io rooms of people who can see hidden poll results and people who
can't, then just do 2 broadcasts.
2016-04-02 11:57:26 -07:00
calzoneman
20538e328f Replace legacy emitter with EventEmitter prototype 2016-04-02 11:23:34 -07:00
calzoneman
9debebd4b9 /clean: error when no argument given 2016-03-28 22:31:35 -07:00
calzoneman
319c52911a Resolve #553 2016-03-23 23:04:58 -07:00
calzoneman
76ef8d6906 Improve performance of mass connects by broadcasting usercount 2016-02-15 21:35:59 -08:00
calzoneman
b3c85e8534 Limit requestPlaylist to once per 60 seconds
If clients call it quickly in succession with large playlists, it can
cause node to get stuck stringifying socket.io frames and cause an out
of memory crash.
2016-02-06 19:40:50 -08:00
calzoneman
ba54848db5 mediarefresher: fix memory leak from dangling timers 2016-01-30 19:42:55 -08:00
calzoneman
1ac69709ee Minor fix to refcounter logic 2016-01-04 20:35:02 -08:00
calzoneman
be4011cda1 Replace old ActiveLock system with a slightly better one
CyTube has been crashing recently due to things attempting to release
the reference after the channel was already closed (apparently the
uncaughtException handler isn't called for this?).  This newer
implementation keeps track of what is ref'ing and unref'ing it, so it
can log an error if it detects a discrepancy.

Also changed the server to not delete the refCounter field from the
channel when it's unloaded, so that should reduce the number of errors
stemming from it being null/undefined.
2015-12-25 17:07:25 -08:00
calzoneman
5a2ef2d24d Minor fixes for queueWarn 2015-12-20 22:35:24 -08:00
calzoneman
b4e7ab2443 Don't save a channel if it hasn't loaded yet 2015-12-18 19:20:57 -08:00
calzoneman
6f654b16b8 Prevent crash due to activeLock being destroyed before callback 2015-12-13 00:22:18 -08:00
calzoneman
11d4c4ca62 Reject blank emote names and images 2015-12-05 18:52:39 -08:00
calzoneman
59468ec77c Add safeguard to prevent #539 2015-12-02 20:59:46 -08:00
Calvin Montgomery
b241a210f3 Fix for uniqueness of IP range bans 2015-11-23 18:22:51 -08:00
OurFlagIsMined
4809a3db00 more than one Play click deleted a playlist item
If two people tried to play the same playlist item, before the playlist updated, it would delete instead of playing.
The same would also happen if the play button was double-clicked instead of single-clicked.
Also, the active item's play button functioned as a delete button.

Fully tested. Still removes the item (if it was added as temporary) when it finishes playing, or if the play button of a *different* item is clicked.
2015-10-25 19:52:34 -04:00
calzoneman
8d39daf942 Factor out resumeAutolead() 2015-10-16 20:32:25 -07:00
calzoneman
217ed115a3 Fix #513 2015-10-16 20:23:41 -07:00
Calvin Montgomery
9f4461a779 Merge pull request #507 from calzoneman/channel-store
Refactor channel storage to allow database store
2015-10-04 23:22:05 -07:00
calzoneman
2fe646ec03 Minor cleanup 2015-10-04 23:21:53 -07:00
calzoneman
a16f885fbd Fix custom embed invalid tag message 2015-09-28 17:31:37 -07:00
calzoneman
c5e73e156a channel/chat: don't allow users to unmute themselves 2015-09-26 19:54:20 -07:00
calzoneman
20dc871303 Use create-error for better error creation 2015-09-24 23:36:05 -07:00
calzoneman
5ec9c2b029 Start refactoring channel storage 2015-09-23 21:56:04 -07:00
calzoneman
0109a87e55 package: build with babel for ES2015 support
* Rename lib/ -> src/
* Add `postinstall` npm target for compiling src files to lib
* Add `build-watch` npm target for development with babel --watch
* Add `lib/` to .gitignore
* Add `source-map-support` module for babel-generated sourcemaps
2015-09-23 19:27:04 -07:00