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;