diff --git a/src/oatpp/core/async/worker/IOEventWorker_epoll.cpp b/src/oatpp/core/async/worker/IOEventWorker_epoll.cpp index 0aaa67ea..6889a79b 100644 --- a/src/oatpp/core/async/worker/IOEventWorker_epoll.cpp +++ b/src/oatpp/core/async/worker/IOEventWorker_epoll.cpp @@ -152,7 +152,7 @@ void IOEventWorker::waitEvents() { struct epoll_event* outEvents = (struct epoll_event*)m_outEvents.get(); auto eventsCount = epoll_wait(m_eventQueueHandle, outEvents, MAX_EVENTS, -1); - if(eventsCount < 0) { + if((eventsCount < 0) && (errno != EINTR)) { OATPP_LOGE("[oatpp::async::worker::IOEventWorker::waitEvents()]", "Error. errno=%d", errno); throw std::runtime_error("[oatpp::async::worker::IOEventWorker::waitEvents()]: Error. Event loop failed."); } @@ -264,4 +264,4 @@ void IOEventWorker::waitEvents() { }}} -#endif // #ifdef OATPP_IO_EVENT_INTERFACE_EPOLL \ No newline at end of file +#endif // #ifdef OATPP_IO_EVENT_INTERFACE_EPOLL