]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/bnet.c
Minor bsock cleanup in stored
[bacula/bacula] / bacula / src / lib / bnet.c
index 0440ba74324bbfd329aff257dfa324c2d9bbe0f6..8f802b15111eaa286f8b88bc474c96734e8db3b7 100644 (file)
@@ -41,8 +41,6 @@
 #include "jcr.h"
 #include <netdb.h>
 
-extern time_t watchdog_time;
-
 #ifndef   INADDR_NONE
 #define   INADDR_NONE    -1
 #endif
@@ -194,7 +192,7 @@ int32_t bnet_recv(BSOCK * bsock)
  */
 bool is_bnet_stop(BSOCK * bsock)
 {
-   return bsock->errors || bsock->is_terminated();
+   return bsock->is_stop();
 }
 
 /*
@@ -202,8 +200,7 @@ bool is_bnet_stop(BSOCK * bsock)
  */
 int is_bnet_error(BSOCK * bsock)
 {
-   errno = bsock->b_errno;
-   return bsock->errors;
+   return bsock->is_error();
 }
 
 /*
@@ -497,13 +494,16 @@ dlist *bnet_host2ipaddrs(const char *host, int family, const char **errstr)
             return 0;
          }
       } else {
-         errmsg = resolv_host(AF_INET, host, addr_list);
 #ifdef HAVE_IPV6
-         if (errmsg) {
-            errmsg = resolv_host(AF_INET6, host, addr_list);
-         }
+         /* We try to resolv host for ipv6 and ipv4, the connection procedure
+          * will try to reach the host for each protocols. We report only "Host
+          * not found" ipv4 message (no need to have ipv6 and ipv4 messages).
+          */
+         resolv_host(AF_INET6, host, addr_list);
 #endif
-         if (errmsg) {
+         errmsg = resolv_host(AF_INET, host, addr_list);
+
+         if (addr_list->size() == 0) {
             *errstr = errmsg;
             free_addresses(addr_list);
             return 0;
@@ -701,6 +701,9 @@ BSOCK *dup_bsock(BSOCK *osock)
    if (osock->host()) {
       bsock->set_host(bstrdup(osock->host()));
    }
+   if (osock->src_addr) {
+      bsock->src_addr = New( IPADDR( *(osock->src_addr)) );
+   }
    bsock->set_duped();
    return bsock;
 }