From: Michael Tremer Date: Thu, 28 Jan 2021 14:30:53 +0000 (+0000) Subject: client+server: Terminate gracefully when receiving a signal X-Git-Tag: 0.1.0~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78cd2faa2ac6141d2da9942ab013f74cb13d21d7;p=fireperf.git client+server: Terminate gracefully when receiving a signal Signed-off-by: Michael Tremer --- diff --git a/src/client.c b/src/client.c index 45ea2ad..c476531 100644 --- a/src/client.c +++ b/src/client.c @@ -205,6 +205,10 @@ int fireperf_client(struct fireperf_config* conf) { while (!conf->terminated && !timeout_expired) { int fds = epoll_wait(epollfd, events, EPOLL_MAX_EVENTS, -1); if (fds < 1) { + // We terminate gracefully when we receive a signal + if (errno == EINTR) + break; + ERROR(conf, "epoll_wait() failed: %s\n", strerror(errno)); goto ERROR; } diff --git a/src/server.c b/src/server.c index 1d62a6c..bb21b6c 100644 --- a/src/server.c +++ b/src/server.c @@ -151,6 +151,10 @@ int fireperf_server(struct fireperf_config* conf) { while (!conf->terminated) { int fds = epoll_wait(epollfd, events, EPOLL_MAX_EVENTS, -1); if (fds < 1) { + // We terminate gracefully when we receive a signal + if (errno == EINTR) + break; + ERROR(conf, "epoll_wait() failed: %s\n", strerror(errno)); goto ERROR; }