On any new connection (without sid), AuthorizeHandler.authorize gets called, creates a ClientHead, and assigns a sid, putting it in ClientsBox.uuid2client and send the request down the pipeline.
Then comes the WebSocketTransport class, and tries the handshake. If no handshaker is found, or if the handshake fails, the client never gets removed from ClientsBox.uuid2client and gets leaked.
This would be much less of an issue if not for the other bug I found #989 which slowly but surely keeps adding packets to the transportState queue
On any new connection (without sid), AuthorizeHandler.authorize gets called, creates a ClientHead, and assigns a sid, putting it in ClientsBox.uuid2client and send the request down the pipeline. Then comes the WebSocketTransport class, and tries the handshake. If no handshaker is found, or if the handshake fails, the client never gets removed from ClientsBox.uuid2client and gets leaked.
This would be much less of an issue if not for the other bug I found #989 which slowly but surely keeps adding packets to the transportState queue