diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2015-12-13 23:42:34 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-12-17 20:35:20 +0100 |
commit | e83b4786d78b97f1657e96c0dfd13f0e9298e55f (patch) | |
tree | e9e8e9fbe86fad041076a089f6cc340499a196c1 /libc/inet/resolv.c | |
parent | a574f01947321cfc4dc746db90c2291f3e9f10c2 (diff) |
resolv: __dns_lookup - immediately switch to next server in case of poll() set error events
https://bugs.busybox.net/show_bug.cgi?id=3211
Signed-off-by: Leonid Lisovskiy <lly.dev@gmail.com>
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Diffstat (limited to 'libc/inet/resolv.c')
-rw-r--r-- | libc/inet/resolv.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c index fffe4281c..8e5a97db0 100644 --- a/libc/inet/resolv.c +++ b/libc/inet/resolv.c @@ -1410,6 +1410,10 @@ int __dns_lookup(const char *name, * to next nameserver */ goto try_next_server; } + if (fds.revents & (POLLERR | POLLHUP | POLLNVAL)) { + DPRINTF("Bad event\n"); + goto try_next_server; + } /*TODO: better timeout accounting?*/ reply_timeout -= 1000; #endif /* USE_SELECT */ |