diff options
author | 2012-08-18 16:48:17 +0000 | |
---|---|---|
committer | 2012-08-18 16:48:17 +0000 | |
commit | 055465ae3a21c0ff619ff94493992470f5caa75c (patch) | |
tree | 272c3f8d0af91070ce4cff7e901b78f6d5202a09 /lib/libc/asr/asr_resolver.c | |
parent | RFC updates: (diff) | |
download | wireguard-openbsd-055465ae3a21c0ff619ff94493992470f5caa75c.tar.xz wireguard-openbsd-055465ae3a21c0ff619ff94493992470f5caa75c.zip |
ensure that async_run() and async_run_sync() always preserve errno.
Diffstat (limited to 'lib/libc/asr/asr_resolver.c')
-rw-r--r-- | lib/libc/asr/asr_resolver.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/libc/asr/asr_resolver.c b/lib/libc/asr/asr_resolver.c index ab996fd97b6..acebcbd6753 100644 --- a/lib/libc/asr/asr_resolver.c +++ b/lib/libc/asr/asr_resolver.c @@ -1,4 +1,4 @@ -/* $OpenBSD: asr_resolver.c,v 1.7 2012/08/18 13:49:13 eric Exp $ */ +/* $OpenBSD: asr_resolver.c,v 1.8 2012/08/18 16:48:17 eric Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -237,7 +237,6 @@ getrrsetbyname(const char *name, unsigned int class, unsigned int type, async_run_sync(as, &ar); - errno = saved_errno; *res = ar.ar_rrsetinfo; return (ar.ar_rrset_errno); @@ -490,7 +489,8 @@ getaddrinfo(const char *hostname, const char *servname, async_run_sync(as, &ar); *res = ar.ar_addrinfo; - errno = (ar.ar_gai_errno == EAI_SYSTEM) ? ar.ar_errno : saved_errno; + if (ar.ar_gai_errno == EAI_SYSTEM) + errno = ar.ar_errno; return (ar.ar_gai_errno); } @@ -514,8 +514,8 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, } async_run_sync(as, &ar); - - errno = (ar.ar_gai_errno == EAI_SYSTEM) ? ar.ar_errno : saved_errno; + if (ar.ar_gai_errno == EAI_SYSTEM) + errno = ar.ar_errno; return (ar.ar_gai_errno); } |