From 78cd2faa2ac6141d2da9942ab013f74cb13d21d7 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 28 Jan 2021 14:30:53 +0000 Subject: [PATCH] client+server: Terminate gracefully when receiving a signal Signed-off-by: Michael Tremer --- src/client.c | 4 ++++ src/server.c | 4 ++++ 2 files changed, 8 insertions(+) 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; } -- 2.47.2