diff --git a/src/event_manager.cc b/src/event_manager.cc index 2c77e144..b7100a8f 100644 --- a/src/event_manager.cc +++ b/src/event_manager.cc @@ -87,7 +87,8 @@ void EventManager::handle_next_events(EventMode mode) auto timeout = duration_cast(next_timer - Clock::now()).count(); constexpr auto us = 1000000; - timeval tv{ (time_t)(timeout / us), (suseconds_t)(timeout % us) }; + // max timeout of 2 secs + timeval tv{ (time_t)(timeout > us ? 1 : 0), (suseconds_t)(timeout % us) }; int res = select(max_fd + 1, &rfds, nullptr, nullptr, &tv); // copy forced fds *after* poll, so that signal handlers can write to