From: wessels <> Date: Sat, 3 Jan 1998 05:03:40 +0000 (+0000) Subject: - Fixed some dnsserver-related reconfigure bugs. Need to X-Git-Tag: SQUID_3_0_PRE1~4275 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=369e91e4baab52cdd0559aee5bc95d76f8e964a8;p=thirdparty%2Fsquid.git - Fixed some dnsserver-related reconfigure bugs. Need to use cbdataLock, etc in fqdncache.c. Also don't want to use ipcacheQueueDrain() and fqdncacheQueueDrain(). --- diff --git a/src/dns.cc b/src/dns.cc index d497416043..5fe294e1f2 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -1,6 +1,6 @@ /* - * $Id: dns.cc,v 1.47 1998/01/02 18:15:32 wessels Exp $ + * $Id: dns.cc,v 1.48 1998/01/02 22:03:41 wessels Exp $ * * DEBUG: section 34 Dnsserver interface * AUTHOR: Harvest Derived @@ -349,9 +349,15 @@ dnsShutdownServers(void) debug(34, 3) ("dnsShutdownServers:\n"); +#if OLD_CODE + /* + * We used to do this when we waited for all active connections + * to close before reconfiguring. + */ k = ipcacheQueueDrain(); if (fqdncacheQueueDrain() || k) return; +#endif for (k = 0; k < NDnsServersAlloc; k++) { dns = *(dns_child_table + k); if (!EBIT_TEST(dns->flags, HELPER_ALIVE)) { diff --git a/src/fqdncache.cc b/src/fqdncache.cc index 9865005033..8c586e9344 100644 --- a/src/fqdncache.cc +++ b/src/fqdncache.cc @@ -1,6 +1,6 @@ /* - * $Id: fqdncache.cc,v 1.75 1997/12/30 02:47:41 wessels Exp $ + * $Id: fqdncache.cc,v 1.76 1998/01/02 22:03:41 wessels Exp $ * * DEBUG: section 35 FQDN Cache * AUTHOR: Harvest Derived @@ -487,16 +487,21 @@ fqdncache_dnsHandleRead(int fd, void *data) fqdncache_call_pending(f); } fqdncacheUnlockEntry(f); /* unlock from FQDN_DISPATCHED */ + } else { + debug(14, 5) ("fqdncache_dnsHandleRead: Incomplete reply\n"); + commSetSelect(fd, + COMM_SELECT_READ, + fqdncache_dnsHandleRead, + dnsData, + 0); } if (dnsData->offset == 0) { dnsData->data = NULL; EBIT_CLR(dnsData->flags, HELPER_BUSY); + if (EBIT_TEST(dnsData->flags, HELPER_SHUTDOWN)) + dnsShutdownServer(dnsData); + cbdataUnlock(dnsData); } - /* reschedule */ - commSetSelect(dnsData->inpipe, - COMM_SELECT_READ, - fqdncache_dnsHandleRead, - dnsData, 0); fqdncacheNudgeQueue(); } @@ -605,6 +610,7 @@ fqdncache_dnsDispatch(dnsserver_t * dns, fqdncache_entry * f) NULL, /* Handler */ NULL, /* Handler-data */ xfree); + cbdataLock(dns); commSetSelect(dns->outpipe, COMM_SELECT_READ, fqdncache_dnsHandleRead, @@ -787,6 +793,7 @@ fqdnFromAddr(struct in_addr addr) return buf; } +#if OLD_CODE int fqdncacheQueueDrain(void) { @@ -798,6 +805,7 @@ fqdncacheQueueDrain(void) fqdncache_dnsDispatch(dnsData, i); return 1; } +#endif static void fqdncacheLockEntry(fqdncache_entry * f) diff --git a/src/ipcache.cc b/src/ipcache.cc index 6b4b6b2eb4..d09b655161 100644 --- a/src/ipcache.cc +++ b/src/ipcache.cc @@ -1,6 +1,6 @@ /* - * $Id: ipcache.cc,v 1.151 1997/12/30 02:47:42 wessels Exp $ + * $Id: ipcache.cc,v 1.152 1998/01/02 22:03:40 wessels Exp $ * * DEBUG: section 14 IP Cache * AUTHOR: Harvest Derived @@ -873,6 +873,7 @@ ipcacheCheckNumeric(const char *name) return &static_addrs; } +#if OLD_CODE int ipcacheQueueDrain(void) { @@ -881,6 +882,7 @@ ipcacheQueueDrain(void) ipcacheNudgeQueue(); return 1; } +#endif static void ipcacheLockEntry(ipcache_entry * i)