gethostbyname() and resolv.conf updates

Stephen Gallagher sgallagh at redhat.com
Fri Jun 18 12:23:20 UTC 2010


On 06/17/2010 05:41 PM, Bernie Innocenti wrote:
> Hello,
>
> xchat in Fedora needs to be restarted after switching to a different
> nameserver or it fails to resolve.
>
> The xchat developers say that all xchat does is call gethostbyname(). A
> Debian user told me that Debian carries a glibc patch to make processes
> notice resolv.conf updates and reload it.
>
> Is there any chance we could apply the same patch in Fedora too? I don't
> know all the details, but I guess there might be a good reason why this
> patch wasn't upstreamed yet.
>

This is the entire purpose of the res_init() function in glibc. If your 
application needs to be aware of a change in resolv.conf, you should be 
monitoring it with inotify and calling res_init() anytime the file is 
changed.

I disagree that this is necessarily a bug in glibc, as it allows the 
application writer to decide for themselves whether to trust a change to 
resolv.conf mid-operation.

The easy fix in xchat would be to simply call res_init() immediately 
before calling gethostbyname(). It would add a small amount of overhead 
to hostname lookups, but it would always work. Monitoring resolv.conf 
for changes would be an optimization, of course.

-- 
Stephen Gallagher
RHCE 804006346421761

Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/


More information about the devel mailing list