aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/platform/posix/posix_resolv_gai.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/platform/posix/posix_resolv_gai.c b/src/platform/posix/posix_resolv_gai.c
index 4dda0c38..c3336f13 100644
--- a/src/platform/posix/posix_resolv_gai.c
+++ b/src/platform/posix/posix_resolv_gai.c
@@ -230,7 +230,6 @@ nni_resolv_ip(const char *host, uint16_t port, int af, bool passive,
{
resolv_item *item;
sa_family_t fam;
- int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -283,16 +282,17 @@ nni_resolv_ip(const char *host, uint16_t port, int af, bool passive,
item->sa = sa;
nni_mtx_lock(&resolv_mtx);
- if (resolv_fini) {
- rv = NNG_ECLOSED;
- } else {
- nni_aio_set_prov_data(aio, item);
- rv = nni_aio_schedule(aio, resolv_cancel, item);
+ nni_aio_set_prov_data(aio, item);
+ if (!nni_aio_defer(aio, resolv_cancel, item)) {
+ nni_mtx_unlock(&resolv_mtx);
+ resolv_free_item(item);
+ return;
}
- if (rv != 0) {
+
+ if (resolv_fini) {
nni_mtx_unlock(&resolv_mtx);
resolv_free_item(item);
- nni_aio_finish_error(aio, rv);
+ nni_aio_finish_error(aio, NNG_ECLOSED);
return;
}
nni_list_append(&resolv_aios, aio);