aboutsummaryrefslogtreecommitdiff
path: root/src/platform/windows/win_resolv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/windows/win_resolv.c')
-rw-r--r--src/platform/windows/win_resolv.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/platform/windows/win_resolv.c b/src/platform/windows/win_resolv.c
index 83da0b56..6701136e 100644
--- a/src/platform/windows/win_resolv.c
+++ b/src/platform/windows/win_resolv.c
@@ -196,7 +196,7 @@ resolv_worker(void *index)
if ((aio = resolv_active[tid]) == NULL) {
// no more interest (canceled), so ignore the result
// and carry on
- if (results != NULL) {
+ if (rv == 0) {
freeaddrinfo(results);
}
continue;
@@ -206,16 +206,12 @@ resolv_worker(void *index)
if (rv != 0) {
rv = resolv_errno(rv);
nni_aio_finish_error(aio, rv);
- if (results != NULL) {
- freeaddrinfo(results);
- }
continue;
}
// We only take the first matching address. Presumably
// DNS load balancing is done by the resolver/server.
- rv = NNG_EADDRINVAL;
for (probe = results; probe != NULL; probe = probe->ai_next) {
if (probe->ai_addr->sa_family == AF_INET) {
break;
@@ -229,10 +225,8 @@ resolv_worker(void *index)
if (probe == NULL) {
// no match
- nni_aio_finish_error(aio, rv);
- if (results != NULL) {
- freeaddrinfo(results);
- }
+ nni_aio_finish_error(aio, NNG_EADDRINVAL);
+ freeaddrinfo(results);
continue;
}