From a06a6349436ccddb2909715f495b53fe9a0f8969 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Thu, 10 Sep 2020 09:34:51 +0200 Subject: llmnrd: exit gracefully on select() EINTR If a signal was caught, select returns with errno set to EINTR. The signal handler already set llmnrd_running = false. This will also make sure the log message moved by commit a1a821814101 ("llmnrd: only async signal safe functions may be called in signal handler") will get logged correctly in all cases and the process will exit gracefully. Signed-off-by: Tobias Klauser --- llmnrd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llmnrd.c b/llmnrd.c index e79db24..92cd738 100644 --- a/llmnrd.c +++ b/llmnrd.c @@ -262,9 +262,10 @@ int main(int argc, char **argv) ret = select(nfds, &rfds, NULL, &efds, NULL); if (ret < 0) { - if (errno != EINTR) + if (errno != EINTR) { log_err("Failed to select() on socket: %s\n", strerror(errno)); - goto out; + goto out; + } } else if (ret) { /* handle RTNL messages first so we can respond with * up-to-date information. -- cgit v1.2.3-54-g00ecf