diff options
-rw-r--r-- | include/asterisk/dns_internal.h | 4 | ||||
-rw-r--r-- | main/dns_query_set.c | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/include/asterisk/dns_internal.h b/include/asterisk/dns_internal.h index be8794ba9..d517748f8 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 8dfc5eaeb..147c737f6 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; |