diff options
author | ume <ume@FreeBSD.org> | 2006-08-04 12:26:07 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2006-08-04 12:26:07 +0000 |
commit | f44836f7cb50445105e52da73e6dd444381905ad (patch) | |
tree | e16ef8cbfcffede2740dbc0dcd14f15b7569ebbd | |
parent | 0b94127d30eafcdec37379cec51e454aeb6062c5 (diff) | |
download | FreeBSD-src-f44836f7cb50445105e52da73e6dd444381905ad.zip FreeBSD-src-f44836f7cb50445105e52da73e6dd444381905ad.tar.gz |
Check if the filedes of kevent is expected one. Though our
old resolver opened just one socket, BIND9's resolver may
open more than one sockets. And, BIND9's resolver doesn't
close the socket on timeout. So, we need this check.
Reported by: freebsd-cvs-src__at__oldach.net (Helge Oldach), bz
Hinted by: rwatson
-rw-r--r-- | lib/libc/resolv/res_send.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/libc/resolv/res_send.c b/lib/libc/resolv/res_send.c index f31abf1..e0c97d6 100644 --- a/lib/libc/resolv/res_send.c +++ b/lib/libc/resolv/res_send.c @@ -970,6 +970,10 @@ send_dg(res_state statp, res_nclose(statp); return (0); } +#ifdef USE_KQUEUE + if (kv.ident != s) + goto wait; +#endif errno = 0; fromlen = sizeof(from); resplen = _recvfrom(s, (char*)ans, anssiz,0, |