From 31581eb1106581d0f87d7e5a19490c77e754e859 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 29 Jul 2020 11:55:02 +1000 Subject: [PATCH] tools: terminate the example server correctly on SIGINT Signed-off-by: Peter Hutterer --- tools/eis-socket-server.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/eis-socket-server.c b/tools/eis-socket-server.c index f282422..1f24ca1 100644 --- a/tools/eis-socket-server.c +++ b/tools/eis-socket-server.c @@ -35,6 +35,12 @@ #include "src/util-mem.h" #include "src/util-strings.h" +static bool stop = false; + +static void sighandler(int signal) { + stop = true; +} + int main(int argc, char **argv) { const char SOCKETNAME[] = "eis.socket"; @@ -49,6 +55,7 @@ int main(int argc, char **argv) /* This should be handled by libeis */ signal(SIGPIPE, SIG_IGN); + signal(SIGINT, sighandler); int rc = eis_socket_init(eis, SOCKETNAME); if (rc != 0) { @@ -64,7 +71,7 @@ int main(int argc, char **argv) .revents = 0, }; - while (poll(&fds, 1, -1) > -1) { + while (!stop && poll(&fds, 1, -1) > -1) { eis_dispatch(eis); while (true) { @@ -121,5 +128,7 @@ int main(int argc, char **argv) } } + eis_unref(eis); + return 0; }