]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/job.c
kes Another try at fixing Vbackup. It looks much better this time.
[bacula/bacula] / bacula / src / stored / job.c
index 733f20b042f4811d322b40adc9766599edf37c44..431071c582e0dc321414fabbad707ea26f9c5f97 100644 (file)
@@ -20,7 +20,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Bacula® is a registered trademark of John Walker.
+   Bacula® is a registered trademark of Kern Sibbald.
    The licensor of Bacula is the Free Software Foundation Europe
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
@@ -134,8 +134,8 @@ bool job_cmd(JCR *jcr)
    unbash_spaces(fileset_name);
    jcr->fileset_name = get_pool_memory(PM_NAME);
    pm_strcpy(jcr->fileset_name, fileset_name);
-   jcr->JobType = JobType;
-   jcr->JobLevel = level;
+   jcr->set_JobType(JobType);
+   jcr->set_JobLevel(level);
    jcr->no_attributes = no_attributes;
    jcr->spool_attributes = spool_attributes;
    jcr->spool_data = spool_data;
@@ -146,6 +146,7 @@ bool job_cmd(JCR *jcr)
    jcr->PreferMountedVols = PreferMountedVols;
 
    jcr->authenticated = false;
+   jcr->need_fd = true;
 
    /*
     * Pass back an authorization key for the File daemon
@@ -165,16 +166,15 @@ bool run_cmd(JCR *jcr)
    struct timeval tv;
    struct timezone tz;
    struct timespec timeout;
-   int errstat;
+   int errstat = 0;
 
    Dsm_check(1);
    Dmsg1(200, "Run_cmd: %s\n", jcr->dir_bsock->msg);
-   /* The following jobs don't need the FD */
-   switch (jcr->JobType) {
-   case JT_COPY:
-   case JT_MIGRATE:
-   case JT_ARCHIVE:
-      jcr->authenticated = true;
+
+   /* If we do not need the FD, we are doing a migrate, copy, or virtual
+    *   backup.
+    */
+   if (!jcr->need_fd) {
       do_mac(jcr);
       return false;
    }
@@ -187,7 +187,7 @@ bool run_cmd(JCR *jcr)
    timeout.tv_sec = tv.tv_sec + me->client_wait;
 
    Dmsg3(050, "%s waiting %d sec for FD to contact SD key=%s\n",
-         jcr->Job, (int)me->client_wait, jcr->sd_auth_key);
+         jcr->Job, (int)(timeout.tv_sec-time(NULL)), jcr->sd_auth_key);
 
    /*
     * Wait for the File daemon to contact us to start the Job,
@@ -201,6 +201,8 @@ bool run_cmd(JCR *jcr)
          break;
       }
    }
+   Dmsg3(100, "Auth=%d canceled=%d errstat=%d\n", jcr->authenticated,
+      job_canceled(jcr), errstat);
    V(mutex);
 
    memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
@@ -220,10 +222,14 @@ void handle_filed_connection(BSOCK *fd, char *job_name)
 {
    JCR *jcr;
 
-   bmicrosleep(0, 50000);             /* wait 50 millisecs */
+/*
+ * With the following bmicrosleep on, running the 
+ * SD under the debugger fails.   
+ */ 
+// bmicrosleep(0, 50000);             /* wait 50 millisecs */
    if (!(jcr=get_jcr_by_full_name(job_name))) {
       Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name);
-      Dmsg1(3, "**** Job \"%s\" not found", job_name);
+      Dmsg1(3, "**** Job \"%s\" not found.\n", job_name);
       return;
    }