summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/resolver.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/resolver.c b/lib/resolver.c
index 001c293df2..fb8aeed92f 100644
--- a/lib/resolver.c
+++ b/lib/resolver.c
@@ -145,14 +145,17 @@ static void ares_address_cb(void *arg, int status, int timeouts,
{
struct resolver_query *query = (struct resolver_query *)arg;
union sockunion addr[16];
+ void (*callback)(struct resolver_query *, int, union sockunion *);
size_t i;
+ callback = query->callback;
+ query->callback = NULL;
+
if (status != ARES_SUCCESS) {
if (resolver_debug)
zlog_debug("[%p] Resolving failed", query);
- query->callback(query, -1, NULL);
- query->callback = NULL;
+ callback(query, -1, NULL);
return;
}
@@ -174,8 +177,7 @@ static void ares_address_cb(void *arg, int status, int timeouts,
if (resolver_debug)
zlog_debug("[%p] Resolved with %d results", query, (int)i);
- query->callback(query, i, &addr[0]);
- query->callback = NULL;
+ callback(query, i, &addr[0]);
}
void resolver_resolve(struct resolver_query *query, int af,