]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/job.c
Possible fix for NULL client bug #2105
[bacula/bacula] / bacula / src / dird / job.c
index 08c9fee330e9db5c28bd2d23eb497c3bf5b6bfa8..62181bd198c8e13940fcf25ff73e2acce8810f49 100644 (file)
@@ -367,16 +367,20 @@ void sd_msg_thread_send_signal(JCR *jcr, int sig)
    jcr->unlock();
 }
 
-static int cancel_file_daemon_job(UAContext *ua, const char *cmd, JCR *jcr)
+static bool cancel_file_daemon_job(UAContext *ua, const char *cmd, JCR *jcr)
 {
+   CLIENT *old_client;
+
    if (!jcr->client) {
       Dmsg0(100, "No client to cancel\n");
-      return 0;
+      return false;
    }
+   old_client = ua->jcr->client;
    ua->jcr->client = jcr->client;
    if (!connect_to_file_daemon(ua->jcr, 10, FDConnectTimeout, 1)) {
       ua->error_msg(_("Failed to connect to File daemon.\n"));
-      return 0;
+      ua->jcr->client = old_client;
+      return false;
    }
    Dmsg0(100, "Connected to file daemon\n");
    BSOCK *fd = ua->jcr->file_bsock;
@@ -386,8 +390,8 @@ static int cancel_file_daemon_job(UAContext *ua, const char *cmd, JCR *jcr)
    }
    fd->signal(BNET_TERMINATE);
    free_bsock(ua->jcr->file_bsock);
-   ua->jcr->client = NULL;
-   return 1;
+   ua->jcr->client = old_client;
+   return true;
 }
 
 static bool cancel_sd_job(UAContext *ua, const char *cmd, JCR *jcr)