From: Marko Kreen Date: Mon, 12 Dec 2011 19:33:00 +0000 (+0200) Subject: adns_create_context: do zone_init before impl_init X-Git-Tag: pgbouncer_1_5_rc1~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6115d71c23047760e0c4c2c9bf9bcc7cda059cdc;p=pgbouncer adns_create_context: do zone_init before impl_init The latter can fail, thus crashing adns_free_context(). --- diff --git a/src/dnslookup.c b/src/dnslookup.c index 280774b..c525bf8 100644 --- a/src/dnslookup.c +++ b/src/dnslookup.c @@ -747,16 +747,21 @@ static void req_free(struct AANode *node, void *arg) struct DNSContext *adns_create_context(void) { - struct DNSContext *ctx = calloc(1, sizeof(*ctx)); + struct DNSContext *ctx; + + log_debug("adns_create_context: %s", adns_get_backend()); + + ctx = calloc(1, sizeof(*ctx)); if (!ctx) return NULL; aatree_init(&ctx->req_tree, req_cmp, req_free); + zone_init(ctx); + if (!impl_init(ctx)) { adns_free_context(ctx); return NULL; } - zone_init(ctx); return ctx; }