summaryrefslogtreecommitdiffstats
path: root/lib/libc/asr/asr.c
diff options
context:
space:
mode:
authoreric <eric@openbsd.org>2017-02-23 17:04:02 +0000
committereric <eric@openbsd.org>2017-02-23 17:04:02 +0000
commitf6f51dad2ad553583ef95d338f9437aa1f620a3e (patch)
treed441125eacf9731b21a7d2d09ddbc3f7e4939b08 /lib/libc/asr/asr.c
parentCheck return value of every BN_* functions in bntest (diff)
downloadwireguard-openbsd-f6f51dad2ad553583ef95d338f9437aa1f620a3e.tar.xz
wireguard-openbsd-f6f51dad2ad553583ef95d338f9437aa1f620a3e.zip
Put a common subq pointer in the query struct, rather than one in each
element of the union. ok gilles@ millert@ krw@
Diffstat (limited to 'lib/libc/asr/asr.c')
-rw-r--r--lib/libc/asr/asr.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/lib/libc/asr/asr.c b/lib/libc/asr/asr.c
index d91a537599d..b678ebccebf 100644
--- a/lib/libc/asr/asr.c
+++ b/lib/libc/asr/asr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr.c,v 1.55 2017/02/18 19:23:05 jca Exp $ */
+/* $OpenBSD: asr.c,v 1.56 2017/02/23 17:04:02 eric Exp $ */
/*
* Copyright (c) 2010-2012 Eric Faurot <eric@openbsd.org>
*
@@ -236,6 +236,10 @@ void
_asr_async_free(struct asr_query *as)
{
DPRINT("asr: asr_async_free(%p)\n", as);
+
+ if (as->as_subq)
+ _asr_async_free(as->as_subq);
+
switch (as->as_type) {
case ASR_SEND:
if (as->as_fd != -1)
@@ -249,38 +253,28 @@ _asr_async_free(struct asr_query *as)
break;
case ASR_SEARCH:
- if (as->as.search.subq)
- _asr_async_free(as->as.search.subq);
if (as->as.search.name)
free(as->as.search.name);
break;
case ASR_GETRRSETBYNAME:
- if (as->as.rrset.subq)
- _asr_async_free(as->as.rrset.subq);
if (as->as.rrset.name)
free(as->as.rrset.name);
break;
case ASR_GETHOSTBYNAME:
case ASR_GETHOSTBYADDR:
- if (as->as.hostnamadr.subq)
- _asr_async_free(as->as.hostnamadr.subq);
if (as->as.hostnamadr.name)
free(as->as.hostnamadr.name);
break;
case ASR_GETNETBYNAME:
case ASR_GETNETBYADDR:
- if (as->as.netnamadr.subq)
- _asr_async_free(as->as.netnamadr.subq);
if (as->as.netnamadr.name)
free(as->as.netnamadr.name);
break;
case ASR_GETADDRINFO:
- if (as->as.ai.subq)
- _asr_async_free(as->as.ai.subq);
if (as->as.ai.aifirst)
freeaddrinfo(as->as.ai.aifirst);
if (as->as.ai.hostname)
@@ -292,8 +286,6 @@ _asr_async_free(struct asr_query *as)
break;
case ASR_GETNAMEINFO:
- if (as->as.ni.subq)
- _asr_async_free(as->as.ni.subq);
break;
}