diff --git a/src/server.cpp b/src/server.cpp index 9bac3cc..65dd6ca 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -338,7 +338,10 @@ void Server::start_network_threads() { } } - if (events[i].events & EPOLLOUT) { + // Send immediately if we already already have outgoing messages from + // read callbacks. + if ((events[i].events & EPOLLOUT) || + ((events[i].events & EPOLLIN) && conn->hasMessages())) { bool error = conn->writeBytes(); if (error) { continue;