]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
- Fixed dnsGetFirstAvailable() to skip dead dnsservers.
authorwessels <>
Thu, 5 Dec 1996 00:50:34 +0000 (00:50 +0000)
committerwessels <>
Thu, 5 Dec 1996 00:50:34 +0000 (00:50 +0000)
src/dns.cc

index 632064287c0703495b0cf367aeb9a5ce5dec0092..81e0bdd950fc0d733e2a0eac5e02d32795a0aae7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dns.cc,v 1.26 1996/12/04 16:28:34 wessels Exp $
+ * $Id: dns.cc,v 1.27 1996/12/04 17:50:34 wessels Exp $
  *
  * DEBUG: section 34    Dnsserver interface
  * AUTHOR: Harvest Derived
@@ -212,8 +212,11 @@ dnsGetFirstAvailable(void)
     dnsserver_t *dns = NULL;
     for (k = 0; k < NDnsServersAlloc; k++) {
        dns = *(dns_child_table + k);
-       if (!(dns->flags & DNS_FLAG_BUSY))
-           return dns;
+       if (BIT_TEST(dns->flags, DNS_FLAG_BUSY))
+           continue;
+       if (!BIT_TEST(dns->flags, DNS_FLAG_ALIVE))
+           continue;
+       return dns;
     }
     return NULL;
 }
@@ -250,6 +253,9 @@ dnsOpenServers(void)
        if ((dnssocket = dnsOpenServer(prg)) < 0) {
            debug(34, 1, "dnsOpenServers: WARNING: Failed to start 'dnsserver' #%d.\n", k+1);
            dns_child_table[k]->flags &= ~DNS_FLAG_ALIVE;
+           dns_child_table[k]->id = k + 1;
+           dns_child_table[k]->inpipe = -1;
+           dns_child_table[k]->outpipe = -1;
        } else {
            debug(34, 4, "dnsOpenServers: FD %d connected to %s #%d.\n",
                dnssocket, prg, k + 1);