]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/append.c
Status cleanup and cancelling FD
[bacula/bacula] / bacula / src / stored / append.c
index f494cd63a7a97fd93726c195fbe9e7c5ac4be857..3d5ca9009a3a51dab5622812bcd4ce8c2586996b 100644 (file)
@@ -231,26 +231,30 @@ int do_append_data(JCR *jcr)
     */
    sm_check(__FILE__, __LINE__, False);
    Dmsg0(90, "Write_end_session_label()\n");
+
    /* Create Job status for end of session label */
-   if (!job_cancelled(jcr) && ok) {
-      set_jcr_job_status(jcr, JS_Terminated);
-   } else if (!ok) {
-      set_jcr_job_status(jcr, JS_ErrorTerminated);
-   }
+   set_jcr_job_status(jcr, ok?JS_Terminated:JS_ErrorTerminated);
+
+   Dmsg1(200, "Write session label JobStatus=%d\n", jcr->JobStatus);
+
    if (!write_session_label(jcr, block, EOS_LABEL)) {
       Jmsg1(jcr, M_FATAL, 0, _("Error writting end session label. ERR=%s\n"),
          strerror_dev(dev));
+      set_jcr_job_status(jcr, JS_ErrorTerminated);
       ok = FALSE;
    }
    /* Write out final block of this session */
    if (!write_block_to_device(jcr, dev, block)) {
       Pmsg0(000, _("Set ok=FALSE after write_block_to_device.\n"));
+      set_jcr_job_status(jcr, JS_ErrorTerminated);
       ok = FALSE;
    }
 
+   Dmsg1(200, "release device JobStatus=%d\n", jcr->JobStatus);
    /* Release the device */
    if (!release_device(jcr, dev)) {
       Pmsg0(000, _("Error in release_device\n"));
+      set_jcr_job_status(jcr, JS_ErrorTerminated);
       ok = FALSE;
    }
 
@@ -261,6 +265,8 @@ int do_append_data(JCR *jcr)
       close_spool_file(jcr, jcr->dir_bsock);
    }
 
+   dir_send_job_status(jcr);         /* update director */
+
    Dmsg0(90, "return from do_append_data()\n");
    return ok ? 1 : 0;
 }