summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-rw-r--r--src/network/poller.cpp6
-rw-r--r--src/network/socket_handler.cpp1
2 files changed, 5 insertions, 2 deletions
diff --git a/src/network/poller.cpp b/src/network/poller.cpp
index 75e7e6a..010dd58 100644
--- a/src/network/poller.cpp
+++ b/src/network/poller.cpp
@@ -155,13 +155,15 @@ int Poller::poll(const std::chrono::milliseconds& timeout)
else if (this->fds[i].revents & POLLIN)
{
auto socket_handler = this->socket_handlers.at(this->fds[i].fd);
- socket_handler->on_recv();
+ if (socket_handler->is_connected())
+ socket_handler->on_recv();
nb_events--;
}
else if (this->fds[i].revents & POLLOUT)
{
auto socket_handler = this->socket_handlers.at(this->fds[i].fd);
- socket_handler->on_send();
+ if (socket_handler->is_connected())
+ socket_handler->on_send();
nb_events--;
}
}
diff --git a/src/network/socket_handler.cpp b/src/network/socket_handler.cpp
index ae9489d..580bba6 100644
--- a/src/network/socket_handler.cpp
+++ b/src/network/socket_handler.cpp
@@ -100,6 +100,7 @@ void SocketHandler::on_send()
if (res == -1)
{
log_error("send failed: " << strerror(errno));
+ this->on_connection_close();
this->close();
}
else