]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/job.c
Use rentrant mysql lib, eliminate race in sql_list, Win32 streams, misc see kes-1.31
[bacula/bacula] / bacula / src / stored / job.c
index 432238ee7b0b17aaa9193db7acfd71abfb8e0bc6..8eeecc94580fa997d3c78e5921e7542ca8d08511 100644 (file)
@@ -44,7 +44,7 @@ static char use_device[] = "use device=%s media_type=%s pool_name=%s pool_type=%
 /* Responses sent to Director daemon */
 static char OKjob[]     = "3000 OK Job SDid=%u SDtime=%u Authorization=%s\n";
 static char OK_device[] = "3000 OK use device\n";
-static char NO_device[] = "3914 Device %s does not exist\n";
+static char NO_device[] = "3914 Device \"%s\" not in SD Device resources.\n";
 static char BAD_use[]   = "3913 Bad use command: %s\n";
 static char BAD_job[]   = "3915 Bad Job command: %s\n";
 
@@ -84,8 +84,9 @@ int job_cmd(JCR *jcr)
    if (sscanf(dir->msg, jobcmd, &JobId, job, job_name, client_name,
              &JobType, &level, fileset_name, &no_attributes,
              &spool_attributes, fileset_md5) != 10) {
-      bnet_fsend(dir, BAD_job, dir->msg);
-      Emsg1(M_FATAL, 0, _("Bad Job Command from Director: %s\n"), dir->msg);
+      pm_strcpy(&jcr->errmsg, dir->msg);
+      bnet_fsend(dir, BAD_job, jcr->errmsg);
+      Emsg1(M_FATAL, 0, _("Bad Job Command from Director: %s\n"), jcr->errmsg);
       free_memory(job);
       free_memory(job_name);
       free_memory(client_name);
@@ -162,7 +163,7 @@ int job_cmd(JCR *jcr)
     *  expires.
     */
    P(jcr->mutex);
-   for ( ;!job_cancelled(jcr); ) {
+   for ( ;!job_canceled(jcr); ) {
       errstat = pthread_cond_timedwait(&jcr->job_start_wait, &jcr->mutex, &timeout);
       if (errstat == 0 || errstat == ETIMEDOUT) {
         break;
@@ -170,7 +171,7 @@ int job_cmd(JCR *jcr)
    }
    V(jcr->mutex);
 
-   if (jcr->authenticated && !job_cancelled(jcr)) {
+   if (jcr->authenticated && !job_canceled(jcr)) {
       run_job(jcr);                  /* Run the job */
    }
    return 0;
@@ -194,8 +195,9 @@ void connection_from_filed(void *arg)
    }
    Dmsg1(100, "got: %s\n", fd->msg);
 
-   if (sscanf(fd->msg, "Hello Start Job %127s\n", job_name) != 1) {
-      Emsg1(M_FATAL, 0, _("Authentication failure: %s\n"), fd->msg);
+   if (fd->msglen < 17 || fd->msglen > 17+127 ||
+       sscanf(fd->msg, "Hello Start Job %127s\n", job_name) != 1) {
+      Emsg1(M_FATAL, 0, _("Bad Hello from FD: %s\n"), fd->msg);
       return;
    }
    handle_filed_connection(fd, job_name);
@@ -297,12 +299,23 @@ static int use_device_cmd(JCR *jcr)
         }
       }
       UnlockRes();
-      Jmsg(jcr, M_FATAL, 0, _("Requested device %s not found. Cannot continue.\n"),
+      if (verbose) {
+        unbash_spaces(dir->msg);
+        pm_strcpy(&jcr->errmsg, dir->msg);
+         Jmsg(jcr, M_INFO, 0, _("Failed command: %s\n"), jcr->errmsg);
+      }
+      Jmsg(jcr, M_FATAL, 0, _("\n"
+         "     Device \"%s\" requested by Dir not found in SD Device resources.\n"),
           dev_name);
       bnet_fsend(dir, NO_device, dev_name);
    } else {
-      Jmsg(jcr, M_FATAL, 0, _("store<dir: Bad Use Device command: %s\n"), dir->msg);
-      bnet_fsend(dir, BAD_use, dir->msg);
+      unbash_spaces(dir->msg);
+      pm_strcpy(&jcr->errmsg, dir->msg);
+      if (verbose) {
+         Jmsg(jcr, M_INFO, 0, _("Failed command: %s\n"), jcr->errmsg);
+      }
+      Jmsg(jcr, M_FATAL, 0, _("Bad Use Device command: %s\n"), jcr->errmsg);
+      bnet_fsend(dir, BAD_use, jcr->errmsg);
    }
 
    free_memory(dev_name);