mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-29 12:21:25 +00:00
lib/resolver: NULL out callback before call
The callback itself might want to reschedule the resolver, so it is useful to clear out the callback field before making the call instead of after. Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
parent
fe9e7b71cf
commit
50cdb6cf95
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user