Message ID | 53145D87.40308@reverze.net |
---|---|
State | Accepted |
Commit | 064d18b8e5dc93d33f24d2d46123f71bdb753061 |
Headers | show |
Dear mailing list, I have seen very little response on this topic; Would it be possible to apply this patch to trunk? I would like to add that without this patch, the behaviour in uClibc differs from glibc. Best regads, Michel Stam On 03/03/2014 11:46 AM, Michel Stam wrote: > Commit e1420eca7374cd8f583e9d774c890645a205aaee fixed a bug where a > response code should mean the next server is tried. However, it tries > only the next search domain, and never skips to the next server. > > In my specific situation, I was using tmdns as a DNS -> mDNS bridge to > resolve mDNS names. tmdns returns SERVFAIL on any domain that does not > end in .local. > > uClibc then tries all the search domains in /etc/resolv.conf and gives > up, not jumping to the next nameserver in the list (in my case the > real nameserver). Thus, any non-.local domain never got resolved. > > My resolv.conf; > domain bla.net > search bla.net > nameserver 127.0.0.1 > nameserver 172.16.1.1 > > The patch I have attached basically allows SERVFAIL to go back to the > case as it was before 0.9.32, except that search domains are still tried. > > Best regards, > > Michel Stam > > > > > _______________________________________________ > uClibc mailing list > uClibc@uclibc.org > http://lists.busybox.net/mailman/listinfo/uclibc
On 13 March 2014 11:43:05 Michel Stam <michel.uclibc@reverze.net> wrote: > Dear mailing list, > > I have seen very little response on this topic; Would it be possible to > apply this patch to trunk? I'm verifying the patch right now, will apply it afterwards. Will followup in the push. Thanks! > > I would like to add that without this patch, the behaviour in uClibc > differs from glibc. > > Best regads, > > Michel Stam > On 03/03/2014 11:46 AM, Michel Stam wrote: > > Commit e1420eca7374cd8f583e9d774c890645a205aaee fixed a bug where a > > response code should mean the next server is tried. However, it tries > > only the next search domain, and never skips to the next server. > > > > In my specific situation, I was using tmdns as a DNS -> mDNS bridge to > resolve mDNS names. tmdns returns SERVFAIL on any domain that does not end > in .local. > > > > uClibc then tries all the search domains in /etc/resolv.conf and gives > up, not jumping to the next nameserver in the list (in my case the real > nameserver). Thus, any non-.local domain never got resolved. > > > > My resolv.conf; > > domain bla.net > > search bla.net > > nameserver 127.0.0.1 > > nameserver 172.16.1.1 > > > > The patch I have attached basically allows SERVFAIL to go back to the > case as it was before 0.9.32, except that search domains are still tried. > > > > Best regards, > > > > Michel Stam > > > > > > > > Sent with AquaMail for Android http://www.aqua-mail.com
On 3 March 2014 11:46, Michel Stam <michel.uclibc@reverze.net> wrote: > Commit e1420eca7374cd8f583e9d774c890645a205aaee fixed a bug where a > response code should mean the next server is tried. However, it tries > only the next search domain, and never skips to the next server. > > In my specific situation, I was using tmdns as a DNS -> mDNS bridge to > resolve mDNS names. tmdns returns SERVFAIL on any domain that does not end > in .local. > > uClibc then tries all the search domains in /etc/resolv.conf and gives up, > not jumping to the next nameserver in the list (in my case the real > nameserver). Thus, any non-.local domain never got resolved. > > My resolv.conf; > domain bla.net > search bla.net > nameserver 127.0.0.1 > nameserver 172.16.1.1 > > The patch I have attached basically allows SERVFAIL to go back to the case > as it was before 0.9.32, except that search domains are still tried. > Applied, thanks!
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c index 154734d..cfc1eee 100644 --- a/libc/inet/resolv.c +++ b/libc/inet/resolv.c @@ -1471,9 +1471,11 @@ int __dns_lookup(const char *name, } /* no more search domains to try */ } - /* dont loop, this is "no such host" situation */ - h_errno = HOST_NOT_FOUND; - goto fail1; + if (h.rcode != SERVFAIL) { + /* dont loop, this is "no such host" situation */ + h_errno = HOST_NOT_FOUND; + goto fail1; + } } /* Insert other non-fatal errors here, which do not warrant * switching to next nameserver */