Allow control-C to stop tincd without stopping the tinc shell.
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 25 Jul 2013 15:14:07 +0000 (17:14 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 25 Jul 2013 15:30:47 +0000 (17:30 +0200)
src/tincctl.c

index d02bda5..a496548 100644 (file)
@@ -830,8 +830,16 @@ static int cmd_start(int argc, char *argv[]) {
 
        free(nargv);
 
-       int status = -1;
-       if(waitpid(pid, &status, 0) != pid || !WIFEXITED(status) || WEXITSTATUS(status)) {
+       int status = -1, result;
+#ifdef SIGINT
+       signal(SIGINT, SIG_IGN);
+#endif
+       result = waitpid(pid, &status, 0);
+#ifdef SIGINT
+       signal(SIGINT, SIG_DFL);
+#endif
+
+       if(result != pid || !WIFEXITED(status) || WEXITSTATUS(status)) {
                fprintf(stderr, "Error starting %s\n", c);
                return 1;
        }