If no evdns request can be launched, return NULL, not a handle

Some of our evdns code was willing to return an evdns_request with
handle->current_req set to NULL.  Really, those cases should just
return NULL.
This commit is contained in:
Nick Mathewson 2010-05-18 17:27:06 -04:00
parent d14bb926b4
commit b14f151b42

24
evdns.c
View File

@ -2692,8 +2692,12 @@ evdns_base_resolve_ipv4(struct evdns_base *base, const char *name, int flags,
if (req)
request_submit(req);
} else {
req = search_request_new(base, handle, TYPE_A, name, flags,
callback, ptr);
search_request_new(base, handle, TYPE_A, name, flags,
callback, ptr);
}
if (handle->current_req == NULL) {
mm_free(handle);
handle = NULL;
}
EVDNS_UNLOCK(base);
return handle;
@ -2726,8 +2730,12 @@ evdns_base_resolve_ipv6(struct evdns_base *base,
if (req)
request_submit(req);
} else {
req = search_request_new(base, handle, TYPE_AAAA, name, flags,
callback, ptr);
search_request_new(base, handle, TYPE_AAAA, name, flags,
callback, ptr);
}
if (handle->current_req == NULL) {
mm_free(handle);
handle = NULL;
}
EVDNS_UNLOCK(base);
return handle;
@ -2760,6 +2768,10 @@ evdns_base_resolve_reverse(struct evdns_base *base, const struct in_addr *in, in
req = request_new(base, handle, TYPE_PTR, buf, flags, callback, ptr);
if (req)
request_submit(req);
if (handle->current_req == NULL) {
mm_free(handle);
handle = NULL;
}
EVDNS_UNLOCK(base);
return (handle);
}
@ -2796,6 +2808,10 @@ evdns_base_resolve_reverse_ipv6(struct evdns_base *base, const struct in6_addr *
req = request_new(base, handle, TYPE_PTR, buf, flags, callback, ptr);
if (req)
request_submit(req);
if (handle->current_req == NULL) {
mm_free(handle);
handle = NULL;
}
EVDNS_UNLOCK(base);
return (handle);
}