3 memory leaks were fixed
- ipThrottle (due to the periodic cleaner clearing the wrong object...)
- ipCount (shouldn't have leaked very much, but removing obsolete data is good practice)
- lastguestlogin (again, shouldn't leak much, but should be cleared periodically anyways)
A new console command (i.e. from the terminal running node) was added: /gc
- If the process is invoked as node --expose-gc index.js, /gc allows you to manually invoke the garbage collector
A global object AllPlaylists was added back in v2 as a hardfix for an issue where playlists would continue to send updates after the channel was reloaded and the playlist object was obsolete. This condition should no longer happen due to other fixes, so the only thing this object was doing was wasting memory.
This allows for authenticated API requests. Currently, the only reason
you would want to use this is to be able to add videos that are marked
private but still embeddable.
- Add a nice menu to userlist dropdowns for easily changing ranks
- Merge give/take leader into one button
- Move playlist lock button to the same button strip as voteskip/get playlist urls
- Add a volume slider for Soundcloud
- If NO_WEBSOCKETS or USEROPTS.altsocket are true, don't use websockets
- Base resizing on an invisible div (some channels remove/hide #queue)
- Names are properly italicized when AFK
It came to my attention today that some firewalls block websocket traffic on port 80. For this reason, I have split out the webserver and socket.io traffic to 2 different ports.
In config.js, IO_PORT is the socket.io port. This should NOT be port 80. WEBSERVER_PORT is the port that the built in webserver will bind to (can be port 80, but this requires root permissions).
You will connect to yourhostname:WEBSERVER_PORT, and use yourhostname:IO_PORT as IO_URL.