]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/fd_cmds.c
Massive SD calling sequence reorganization
[bacula/bacula] / bacula / src / dird / fd_cmds.c
index 5d05c051e2ea538c3526e6888391d4dfca5b29a9..ee2e89eda405d34161cad03b70048510ac5bdd26 100644 (file)
@@ -76,14 +76,18 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
 {
    BSOCK   *fd;
 
-   fd = bnet_connect(jcr, retry_interval, max_retry_time,
-        _("File daemon"), jcr->client->address, 
-       NULL, jcr->client->FDport, verbose);
-   if (fd == NULL) {
-      set_jcr_job_status(jcr, JS_ErrorTerminated);
-      return 0;
+   if (!jcr->file_bsock) {
+      fd = bnet_connect(jcr, retry_interval, max_retry_time,
+           _("File daemon"), jcr->client->address, 
+          NULL, jcr->client->FDport, verbose);
+      if (fd == NULL) {
+        set_jcr_job_status(jcr, JS_ErrorTerminated);
+        return 0;
+      }
+      Dmsg0(10, "Opened connection with File daemon\n");
+   } else {
+      fd = jcr->file_bsock;          /* use existing connection */
    }
-   Dmsg0(10, "Opened connection with File daemon\n");
    fd->res = (RES *)jcr->client;      /* save resource in BSOCK */
    jcr->file_bsock = fd;
    set_jcr_job_status(jcr, JS_Running);
@@ -193,7 +197,6 @@ int send_level_command(JCR *jcr)
       break;
    case L_DIFFERENTIAL:
    case L_INCREMENTAL:
-//    bnet_fsend(fd, levelcmd, "since ", jcr->stime, 0); /* old code, deprecated */
       stime = str_to_utime(jcr->stime);
       bnet_fsend(fd, levelcmd, "since_utime ", edit_uint64(stime, ed1), 0);
       while (bget_dirmsg(fd) >= 0) {  /* allow him to poll us to sync clocks */
@@ -269,7 +272,7 @@ static int send_list(JCR *jcr, int list)
             Dmsg1(500, "Opts=%s\n", buf);
            optlen = strlen(buf);
            while (fgets(buf+optlen, sizeof(buf)-optlen, bpipe->rfd)) {
-               fd->msglen = Mmsg(&fd->msg, "%s", buf);
+               fd->msglen = Mmsg(fd->msg, "%s", buf);
                Dmsg2(500, "Inc/exc len=%d: %s", fd->msglen, fd->msg);
               if (!bnet_send(fd)) {
                   Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
@@ -278,9 +281,8 @@ static int send_list(JCR *jcr, int list)
            }
            if ((stat=close_bpipe(bpipe)) != 0) {
               berrno be;
-              be.set_errno(stat);
                Jmsg(jcr, M_FATAL, 0, _("Error running program %p: ERR=%s\n"),
-                 p, be.strerror());
+                 p, be.strerror(stat));
               goto bail_out;
            }
            break;
@@ -301,7 +303,7 @@ static int send_list(JCR *jcr, int list)
             Dmsg1(500, "Opts=%s\n", buf);
            optlen = strlen(buf);
            while (fgets(buf+optlen, sizeof(buf)-optlen, ffd)) {
-               fd->msglen = Mmsg(&fd->msg, "%s", buf);
+               fd->msglen = Mmsg(fd->msg, "%s", buf);
               if (!bnet_send(fd)) {
                   Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
                  goto bail_out;
@@ -315,12 +317,12 @@ static int send_list(JCR *jcr, int list)
         default:
            if (ie->num_opts) {
                Dmsg2(500, "numopts=%d opts=%s\n", ie->num_opts, NPRT(ie->opts_list[0]->opts));
-              pm_strcpy(&fd->msg, ie->opts_list[0]->opts);
-               pm_strcat(&fd->msg, " ");
+              pm_strcpy(fd->msg, ie->opts_list[0]->opts);
+               pm_strcat(fd->msg, " ");
            } else {
-               pm_strcpy(&fd->msg, "0 ");
+               pm_strcpy(fd->msg, "0 ");
            }
-           fd->msglen = pm_strcat(&fd->msg, p);
+           fd->msglen = pm_strcat(fd->msg, p);
             Dmsg1(500, "Inc/Exc name=%s\n", fd->msg);
            if (!bnet_send(fd)) {
                Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
@@ -408,15 +410,16 @@ static int send_fileset(JCR *jcr)
                fd->msg = edit_job_codes(jcr, fd->msg, p, "");
                bpipe = open_bpipe(fd->msg, 0, "r");
               if (!bpipe) {
+                 berrno be;
                   Jmsg(jcr, M_FATAL, 0, _("Cannot run program: %s. ERR=%s\n"),
-                    p, strerror(errno));
+                    p, be.strerror());
                  goto bail_out;
               }
                bstrncpy(buf, "F ", sizeof(buf));
                Dmsg1(500, "Opts=%s\n", buf);
               optlen = strlen(buf);
               while (fgets(buf+optlen, sizeof(buf)-optlen, bpipe->rfd)) {
-                  fd->msglen = Mmsg(&fd->msg, "%s", buf);
+                  fd->msglen = Mmsg(fd->msg, "%s", buf);
                   Dmsg2(500, "Inc/exc len=%d: %s", fd->msglen, fd->msg);
                  if (!bnet_send(fd)) {
                      Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
@@ -425,24 +428,24 @@ static int send_fileset(JCR *jcr)
               }
               if ((stat=close_bpipe(bpipe)) != 0) {
                  berrno be;
-                 be.set_errno(stat);
                   Jmsg(jcr, M_FATAL, 0, _("Error running program: %s. ERR=%s\n"),
-                    p, be.strerror());
+                    p, be.strerror(stat));
                  goto bail_out;
               }
               break;
             case '<':
               p++;                      /* skip over < */
                if ((ffd = fopen(p, "r")) == NULL) {
+                 berrno be;
                   Jmsg(jcr, M_FATAL, 0, _("Cannot open included file: %s. ERR=%s\n"),
-                    p, strerror(errno));
+                    p, be.strerror());
                  goto bail_out;
               }
                bstrncpy(buf, "F ", sizeof(buf));
                Dmsg1(500, "Opts=%s\n", buf);
               optlen = strlen(buf);
               while (fgets(buf+optlen, sizeof(buf)-optlen, ffd)) {
-                  fd->msglen = Mmsg(&fd->msg, "%s", buf);
+                  fd->msglen = Mmsg(fd->msg, "%s", buf);
                  if (!bnet_send(fd)) {
                      Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
                     goto bail_out;
@@ -454,8 +457,8 @@ static int send_fileset(JCR *jcr)
                p++;                      /* skip over \ */
               /* Note, fall through wanted */
            default:
-               pm_strcpy(&fd->msg, "F ");
-              fd->msglen = pm_strcat(&fd->msg, p);
+               pm_strcpy(fd->msg, "F ");
+              fd->msglen = pm_strcat(fd->msg, p);
                Dmsg1(500, "Inc/Exc name=%s\n", fd->msg);
               if (!bnet_send(fd)) {
                   Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
@@ -532,8 +535,9 @@ int send_bootstrap_file(JCR *jcr)
    }
    bs = fopen(jcr->RestoreBootstrap, "r");
    if (!bs) {
+      berrno be;
       Jmsg(jcr, M_FATAL, 0, _("Could not open bootstrap file %s: ERR=%s\n"), 
-        jcr->RestoreBootstrap, strerror(errno));
+        jcr->RestoreBootstrap, be.strerror());
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       return 0;
    }
@@ -558,7 +562,7 @@ int send_run_before_and_after_commands(JCR *jcr)
    POOLMEM *msg = get_pool_memory(PM_FNAME);
    BSOCK *fd = jcr->file_bsock;
    if (jcr->job->ClientRunBeforeJob) {
-      pm_strcpy(&msg, jcr->job->ClientRunBeforeJob);
+      pm_strcpy(msg, jcr->job->ClientRunBeforeJob);
       bash_spaces(msg);
       bnet_fsend(fd, runbefore, msg);
       if (!response(jcr, fd, OKRunBefore, "ClientRunBeforeJob", DISPLAY_ERROR)) {
@@ -568,7 +572,7 @@ int send_run_before_and_after_commands(JCR *jcr)
       }
    }
    if (jcr->job->ClientRunAfterJob) {
-      fd->msglen = pm_strcpy(&msg, jcr->job->ClientRunAfterJob);
+      fd->msglen = pm_strcpy(msg, jcr->job->ClientRunAfterJob);
       bash_spaces(msg);
       bnet_fsend(fd, runafter, msg);
       if (!response(jcr, fd, OKRunAfter, "ClientRunAfterJob", DISPLAY_ERROR)) {