From 87043f9c89593125a27199d0c1b4069d088672d7 Mon Sep 17 00:00:00 2001 From: Jim Huang Date: Mon, 12 Dec 2011 16:32:56 +0800 Subject: res_send: Avoid spurious close()s and (rare) failure When looping over the current list of sockets we are connected to, use getpeername() not getsockname() to find out who the remote end is. This change avoids spurious close() and (rare) failure. Origin: ISC bug #18625 and fixed in libbind 6.0 Change-Id: I5e85f9ff4b98c237978e4bf4bd85ba0a90d768e6 --- libc/netbsd/resolv/res_send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libc/netbsd/resolv/res_send.c') diff --git a/libc/netbsd/resolv/res_send.c b/libc/netbsd/resolv/res_send.c index b11895621..1a28d9e7b 100644 --- a/libc/netbsd/resolv/res_send.c +++ b/libc/netbsd/resolv/res_send.c @@ -413,7 +413,7 @@ res_nsend(res_state statp, if (EXT(statp).nssocks[ns] == -1) continue; peerlen = sizeof(peer); - if (getsockname(EXT(statp).nssocks[ns], + if (getpeername(EXT(statp).nssocks[ns], (struct sockaddr *)(void *)&peer, &peerlen) < 0) { needclose++; break; -- cgit v1.2.3