tincctl restart should work even if no tincd is running.
[tinc] / src / tincctl.c
index 619b90e..188db92 100644 (file)
@@ -714,8 +714,16 @@ static int cmd_start(int argc, char *argv[]) {
 
 static int cmd_stop(int argc, char *argv[]) {
 #ifndef HAVE_MINGW
-       if(!connect_tincd())
+       if(!connect_tincd()) {
+               if(pid) {
+                       if(kill(pid, SIGTERM)) 
+                               return 1;
+                       fprintf(stderr, "Sent TERM signal to process with PID %u.\n", pid);
+                       return 0;
+               }
+
                return 1;
+       }
 
        sendline(fd, "%d %d", CONTROL, REQ_STOP);
        if(!recvline(fd, line, sizeof line) || sscanf(line, "%d %d %d", &code, &req, &result) != 3 || code != CONTROL || req != REQ_STOP || result) {
@@ -730,7 +738,8 @@ static int cmd_stop(int argc, char *argv[]) {
 }
 
 static int cmd_restart(int argc, char *argv[]) {
-       return cmd_stop(argc, argv) ?: cmd_start(argc, argv);
+       cmd_stop(argc, argv);
+       return cmd_start(argc, argv);
 }
 
 static int cmd_reload(int argc, char *argv[]) {