From 15b35b7641955949acaa209986ff3fa8b7f1a98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 26 Nov 2020 18:23:01 +0100 Subject: [PATCH] fdm: keep polling on EINTR --- fdm.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fdm.c b/fdm.c index 980a464c..e8b96cf7 100644 --- a/fdm.c +++ b/fdm.c @@ -324,11 +324,12 @@ fdm_poll(struct fdm *fdm) struct epoll_event events[tll_length(fdm->fds)]; - int r = epoll_wait(fdm->epoll_fd, events, tll_length(fdm->fds), -1); - if (r == -1) { - if (errno == EINTR) - return true; + int r; + do { + r = epoll_wait(fdm->epoll_fd, events, tll_length(fdm->fds), -1); + } while (unlikely(r < 0 && errno == EINTR)); + if (r < 0) { LOG_ERRNO("failed to epoll"); return false; }