int fd = socket->GetFD();
- if (FD_ISSET(fd, &writefds))
+ if (FD_ISSET(fd, &writefds) && socket->GetFD() != INVALID_SOCKET)
socket->OnWritable(ea);
- if (FD_ISSET(fd, &readfds))
+ if (FD_ISSET(fd, &readfds) && socket->GetFD() != INVALID_SOCKET)
socket->OnReadable(ea);
- if (FD_ISSET(fd, &exceptfds))
+ if (FD_ISSET(fd, &exceptfds) && socket->GetFD() != INVALID_SOCKET)
socket->OnException(ea);
}
}
ClearMethodSinks();
ClearMethodSources();
- if (CountMethodSinks() == 0)
+ if (CountMethodSinks() == 0 && !m_ReconnectTimer)
GetEndpointManager()->UnregisterEndpoint(static_pointer_cast<Endpoint>(shared_from_this()));
m_Client.reset();