diff --git a/include/asterisk/dns_internal.h b/include/asterisk/dns_internal.h index be8794ba99e807e0a90467b80ac7fc57ba769186..d517748f8287a564066a178f0bf345f72d9b1ef9 100644 --- a/include/asterisk/dns_internal.h +++ b/include/asterisk/dns_internal.h @@ -161,7 +161,7 @@ struct ast_dns_query_recurring { struct dns_query_set_query { /*! \brief Whether the query started successfully or not */ unsigned int started; - /*! \brief THe query itself */ + /*! \brief The query itself */ struct ast_dns_query *query; }; @@ -169,7 +169,7 @@ struct dns_query_set_query { struct ast_dns_query_set { /*! \brief DNS queries */ AST_VECTOR(, struct dns_query_set_query) queries; - /* \brief Whether the query set is in progress or not */ + /*! \brief Whether the query set is in progress or not */ int in_progress; /*! \brief The total number of completed queries */ int queries_completed; diff --git a/main/dns_query_set.c b/main/dns_query_set.c index 8dfc5eaebe5d387cdfd6bb6aa8a6480f64da1a43..147c737f6f31b43cd0c3cbb09c88c4539d0e50b4 100644 --- a/main/dns_query_set.c +++ b/main/dns_query_set.c @@ -117,6 +117,14 @@ int ast_dns_query_set_add(struct ast_dns_query_set *query_set, const char *name, return -1; } + /* + * We are intentionally passing NULL for the user data even + * though dns_query_set_callback() is not NULL tolerant. Doing + * this avoids a circular reference chain until the queries are + * started. ast_dns_query_set_resolve_async() will set the + * query user_data for us later when we actually kick off the + * queries. + */ query.query = dns_query_alloc(name, rr_type, rr_class, dns_query_set_callback, NULL); if (!query.query) { return -1;