file descriptor should not be monitored any more when the tcp connection is destructed.

This commit is contained in:
Michael van der Werve 2020-05-08 13:20:10 +02:00
parent e7f76bc75d
commit ab0a292a0e
1 changed files with 6 additions and 0 deletions

View File

@ -38,6 +38,12 @@ TcpConnection::TcpConnection(TcpHandler *handler, const Address &address) :
*/
TcpConnection::~TcpConnection() noexcept
{
// if there is still a file descriptor open, we must explicitly unwatch it, otherwise it could
// remain open (tcp connection is forcefully closed). since we assume the handler is in scope for
// the complete lifetime of the tcpconnection, we make one last call to notify it to unmonitor
// the file descriptor.
if (fileno() > 0) _handler->monitor(this, fileno(), 0);
// When the object is destructed, the _state-pointer will also destruct, resulting
// in some final calls back to us to inform that the connection has indeed been closed.
// This normally results in calls back to user-space (via the _handler pointer) but