diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp
index 659cb9f9bc5ed567195bfe101b8619a4d838e5fe..8d24555aee72885eb2586616c74e5aa7c60bce7e 100644
--- a/src/dhtrunner.cpp
+++ b/src/dhtrunner.cpp
@@ -569,7 +569,8 @@ DhtRunner::startNetwork(const SockAddr sin4, const SockAddr sin6)
                 if(s6 >= 0)
                     FD_SET(s6, &readfds);
 
-                int rc = select(s4 > s6 ? s4 + 1 : s6 + 1, &readfds, nullptr, nullptr, nullptr);
+                int selectFd = std::max({s4, s6, stop_readfd}) + 1;
+                int rc = select(selectFd, &readfds, nullptr, nullptr, nullptr);
                 if(rc < 0) {
                     if(errno != EINTR) {
                         perror("select");