Package: libc6 Version: 2.3.2.ds1-16 Tags: patch Severity: wishlist The current DNS resolver in glibc only read the content of /etc/resolv.conf when a program starts (or during the first call to one of the resolver function). This is a problem for long-lasting programs on for example laptops, where the content of the file may change when a new IP configuration is fetched using DHCP. A workaround is to use nscd and call 'nscd -i hosts' when the file changes, but it would be better if the content of the file was reread automatically when it changes.
The following patch by Torstein Kukuk from <URL:http://sources.redhat.com/ml/libc-alpha/2004-09/msg00130.html> fixes this problem, by making sure the timestamp of the file is checked every time a DNS lookup is done. Please include this patch in the default glibc used in Debian. It would make it so much useful on machines with changing IP configuration. --- resolv/res_libc.c 6 Aug 2004 17:52:53 -0000 1.20 +++ resolv/res_libc.c 9 Aug 2004 15:14:47 -0000 @@ -22,7 +22,7 @@ #include <arpa/nameser.h> #include <resolv.h> #include <bits/libc-lock.h> - +#include <sys/stat.h> /* The following bit is copied from res_data.c (where it is #ifdef'ed out) since res_init() should go into libc.so but the rest of that @@ -100,8 +100,17 @@ res_init(void) { int __res_maybe_init (res_state resp, int preinit) { - if (resp->options & RES_INIT) { - if (__res_initstamp != resp->_u._ext.initstamp) { + static time_t last_mtime; + struct stat statbuf; + int ret; + + + if (resp->options & RES_INIT) { + ret = stat (_PATH_RESCONF, &statbuf); + if (__res_initstamp != resp->_u._ext.initstamp + || (ret == 0) && (last_mtime != statbuf.st_mtime)) + { + last_mtime = statbuf.st_mtime; if (resp->nscount > 0) { __res_nclose (resp); for (int ns = 0; ns < MAXNS; ns++) { -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

