the original host name will be freed during reload.
also remove unnecessary list_del(), as list_pop() is used above.
/* 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) {
req->res_pos = 0;
}
- /* drop request */
- list_del(&ucb->node);
- free(ucb);
-
goto loop;
}
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);