]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/fd_cmds.c
Fix race condition between setip and the access to CLIENT::address()
[bacula/bacula] / bacula / src / dird / fd_cmds.c
index d3cdb6885957c46cf033c02640a52d56fda9ea89..1b64be4cd4cfe1e4dbf3706dfb3975cb6e159533 100644 (file)
@@ -93,6 +93,7 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
 
    if (!is_bsock_open(jcr->file_bsock)) {
       char name[MAX_NAME_LENGTH + 100];
+      POOL_MEM buf;
 
       if (!fd) {
          fd = jcr->file_bsock = new_bsock();
@@ -101,8 +102,13 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
       bstrncat(name, jcr->client->name(), sizeof(name));
 
       fd->set_source_address(director->DIRsrc_addr);
-      if (!fd->connect(jcr,retry_interval,max_retry_time, heart_beat, name, jcr->client->address(),
-           NULL, jcr->client->FDport, verbose)) {
+      if (!fd->connect(jcr,retry_interval,
+                       max_retry_time,
+                       heart_beat, name,
+                       jcr->client->address(buf.addr()),
+                       NULL,
+                       jcr->client->FDport,
+                       verbose)) {
          fd->close();
          jcr->setJobStatus(JS_ErrorTerminated);
          return 0;