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)