From ed74a83706b0045b2358ddcfebdab3f0b5e8116a Mon Sep 17 00:00:00 2001 From: Marko Kreen Date: Tue, 12 Oct 2010 10:29:24 +0300 Subject: [PATCH] dnslookup - forgot to strdup host name the original host name will be freed during reload. also remove unnecessary list_del(), as list_pop() is used above. --- src/dnslookup.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/dnslookup.c b/src/dnslookup.c index a52ad61..178ccbd 100644 --- a/src/dnslookup.c +++ b/src/dnslookup.c @@ -315,6 +315,7 @@ loop: /* launch callback */ log_noise("dns: deliver_info(%s) type=%d pos=%d", req->name, req->res_af, req->res_pos); ucb->cb_func(ucb->cb_arg, req->res_af, res + req->res_pos * adrlen); + free(ucb); /* round-robin between results */ if (req->res_count > 1) { @@ -323,10 +324,6 @@ loop: req->res_pos = 0; } - /* drop request */ - list_del(&ucb->node); - free(ucb); - goto loop; } @@ -391,8 +388,12 @@ void adns_resolve(struct DNSContext *ctx, const char *name, adns_callback_f cb_f req = calloc(1, sizeof(*req)); if (!req) goto nomem; + req->name = strdup(name); + if (!req->name) { + free(req); + goto nomem; + } req->ctx = ctx; - req->name = name; req->namelen = namelen; list_init(&req->ucb_list); aatree_insert(&ctx->req_tree, (long)req->name, &req->node); -- 2.39.5