A new helper method, terminateConnection(), is added to ensure all the places where sockets are closed cause the socket file descriptor to become invalidated and the client to be put in the correct state.
A destructor is added to call terminateConnection() ensuring resources are freed if the WebSocket object is destroyed.
Finally, private copy constructor and copy assignment operator are added per the "Rule of Three" ensuring only one instance manages the socket.
This should address issue #71: Websocket::close() doesn't disconnect correctly. Calling WebSocket::close() still requests a clean disconnect; however, the socket is guaranteed to be closed when the WebSocket destructor is run.
A new helper method,
terminateConnection()
, is added to ensure all the places where sockets are closed cause the socket file descriptor to become invalidated and the client to be put in the correct state.A destructor is added to call
terminateConnection()
ensuring resources are freed if theWebSocket
object is destroyed.Finally, private copy constructor and copy assignment operator are added per the "Rule of Three" ensuring only one instance manages the socket.
This should address issue #71: Websocket::close() doesn't disconnect correctly. Calling
WebSocket::close()
still requests a clean disconnect; however, the socket is guaranteed to be closed when theWebSocket
destructor is run.