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; }