valgrind client close in a controlled way on SIGINT
With this, both the test server and client are valgrind-clean
tested with a chrome session also active to the server
Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/test-server/test-client.c b/test-server/test-client.c
index 7b36de9..4e8097b 100644
--- a/test-server/test-client.c
+++ b/test-server/test-client.c
@@ -24,6 +24,7 @@
#include <unistd.h>
#include <getopt.h>
#include <string.h>
+#include <signal.h>
#include "../lib/libwebsockets.h"
@@ -33,6 +34,7 @@
static int deny_mux;
static struct libwebsocket *wsi_mirror;
static int mirror_lifetime = 0;
+static int force_exit = 0;
/*
* This demo shows how to connect multiple websockets simultaneously to a
@@ -182,6 +184,11 @@
{ NULL, NULL, 0, 0 } /* end */
};
+void sighandler(int sig)
+{
+ force_exit = 1;
+}
+
static struct option options[] = {
{ "help", no_argument, NULL, 'h' },
{ "debug", required_argument, NULL, 'd' },
@@ -251,6 +258,8 @@
if (optind >= argc)
goto usage;
+ signal(SIGINT, sighandler);
+
address = argv[optind];
/*
@@ -295,7 +304,7 @@
*/
n = 0;
- while (n >= 0 && !was_closed) {
+ while (n >= 0 && !was_closed && !force_exit) {
n = libwebsocket_service(context, 10);
if (n < 0)