]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/fd_cmds.c
23Aug07
[bacula/bacula] / bacula / src / dird / fd_cmds.c
index b62ad8289be879b6ecdf045f7ef04a15eaede2ba..2e9e3e50148f4e4cd2c78b4dfdf15b71fa829020 100644 (file)
@@ -7,8 +7,8 @@
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
    modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -530,13 +530,11 @@ int send_runscripts_commands(JCR *jcr)
    Dmsg0(120, "bdird: sending runscripts to fd\n");
    
    foreach_alist(cmd, jcr->job->RunScripts) {
-      
       if (cmd->can_run_at_level(jcr->JobLevel) && cmd->target) {
-
          ehost = edit_job_codes(jcr, ehost, cmd->target, "");
          Dmsg2(200, "bdird: runscript %s -> %s\n", cmd->target, ehost);
 
-         if (strcmp(ehost, jcr->client->hdr.name) == 0) {
+         if (strcmp(ehost, jcr->client->name()) == 0) {
             pm_strcpy(msg, cmd->command);
             bash_spaces(msg);
 
@@ -549,19 +547,16 @@ int send_runscripts_commands(JCR *jcr)
             } else {
                bnet_fsend(fd, runscript, cmd->on_success, 
                                          cmd->on_failure,
-                                         cmd->abort_on_error,
+                                         cmd->fail_on_error,
                                          cmd->when,
                                          msg);
 
                result = response(jcr, fd, OKRunScript, "RunScript", DISPLAY_ERROR);
-               launch_before_cmd=true;
+               launch_before_cmd = true;
             }
             
             if (!result) {
-               set_jcr_job_status(jcr, JS_ErrorTerminated);
-               free_pool_memory(msg);
-               free_pool_memory(ehost);
-               return 0;
+               goto bail_out;
             }
          }
          /* TODO : we have to play with other client */
@@ -573,19 +568,22 @@ int send_runscripts_commands(JCR *jcr)
       }        
    } 
 
-   /* We tell to the FD that i can execute commands (ie ClientRunBeforeJob) */
+   /* Tell the FD to execute the ClientRunBeforeJob */
    if (launch_before_cmd) {
       bnet_fsend(fd, runbeforenow);
       if (!response(jcr, fd, OKRunBeforeNow, "RunBeforeNow", DISPLAY_ERROR)) {
-        set_jcr_job_status(jcr, JS_ErrorTerminated);
-        free_pool_memory(msg);
-        free_pool_memory(ehost);
-        return 0;
+        goto bail_out;
       }
    }
    free_pool_memory(msg);
    free_pool_memory(ehost);
    return 1;
+
+bail_out:
+   Jmsg(jcr, M_FATAL, 0, _("Client \"%s\" RunScript failed.\n"), ehost);
+   free_pool_memory(msg);
+   free_pool_memory(ehost);
+   return 0;
 }
 
 
@@ -599,6 +597,7 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
    BSOCK   *fd;
    int n = 0;
    ATTR_DBR *ar = NULL;
+   char digest[MAXSTRING];
 
    fd = jcr->file_bsock;
    jcr->jr.FirstIndex = 1;
@@ -613,11 +612,10 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
       uint32_t file_index;
       int stream, len;
       char *p, *fn;
-      char Opts_Digest[MAXSTRING];      /* either Verify opts or MD5/SHA1 digest */
-      char digest[CRYPTO_DIGEST_MAX_SIZE];
+      char Digest[MAXSTRING];      /* either Verify opts or MD5/SHA1 digest */
 
       jcr->fname = check_pool_memory_size(jcr->fname, fd->msglen);
-      if ((len = sscanf(fd->msg, "%ld %d %s", &file_index, &stream, Opts_Digest)) != 3) {
+      if ((len = sscanf(fd->msg, "%ld %d %s", &file_index, &stream, Digest)) != 3) {
          Jmsg(jcr, M_FATAL, 0, _("<filed: bad attributes, expected 3 fields got %d\n"
 "msglen=%d msg=%s\n"), len, fd->msglen, fd->msg);
          set_jcr_job_status(jcr, JS_ErrorTerminated);
@@ -677,18 +675,18 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
                stream_to_ascii(stream), file_index, jcr->FileIndex);
             continue;
          }
-         db_escape_string(digest, Opts_Digest, strlen(Opts_Digest));
          ar->Digest = digest;
          ar->DigestType = crypto_digest_stream_type(stream);
-         Dmsg3(dbglvl, "DigestLen=%d Digest=%s type=%d\n", strlen(digest), digest,
-               ar->DigestType);
+         db_escape_string(digest, Digest, strlen(Digest));
+         Dmsg4(dbglvl, "stream=%d DigestLen=%d Digest=%s type=%d\n", stream,
+               strlen(digest), digest, ar->DigestType);
       }
       jcr->jr.JobFiles = jcr->JobFiles = file_index;
       jcr->jr.LastIndex = file_index;
    }
    if (is_bnet_error(fd)) {
       Jmsg1(jcr, M_FATAL, 0, _("<filed: Network error getting attributes. ERR=%s\n"),
-                        bnet_strerror(fd));
+            fd->bstrerror());
       return 0;
    }
    if (jcr->cached_attribute) {