From b23f33e7e5bc1524d3e2b3536174590db575055e Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Fri, 5 Jun 2015 12:16:22 -0500 Subject: DNS: Fix some corner cases. * Fix query_set destruction before we are done kicking the queries off. * Fixed no queries requested handling. * Add empty queries request unit test. * Added missing allocation check in ast_dns_query_set_add(). * Made initial pjsip resolving query vector slightly larger. ASTERISK-25115 Reported by: John Bigelow Change-Id: Ie8be8347d0992e93946d72b6e7b1299727b038f2 --- res/res_pjsip/pjsip_resolver.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'res/res_pjsip') diff --git a/res/res_pjsip/pjsip_resolver.c b/res/res_pjsip/pjsip_resolver.c index 4573e4ce1..915d1d90a 100644 --- a/res/res_pjsip/pjsip_resolver.c +++ b/res/res_pjsip/pjsip_resolver.c @@ -516,7 +516,7 @@ static void sip_resolve(pjsip_resolver_t *resolver, pj_pool_t *pool, const pjsip resolve->callback = cb; resolve->token = token; - if (AST_VECTOR_INIT(&resolve->resolving, 2)) { + if (AST_VECTOR_INIT(&resolve->resolving, 4)) { ao2_ref(resolve, -1); cb(PJ_ENOMEM, token, NULL); return; @@ -565,6 +565,12 @@ static void sip_resolve(pjsip_resolver_t *resolver, pj_pool_t *pool, const pjsip cb(PJ_ENOMEM, token, NULL); return; } + if (!resolve->queries) { + ast_debug(2, "[%p] No resolution queries for target '%s'\n", resolve, host); + ao2_ref(resolve, -1); + cb(PJLIB_UTIL_EDNSNOANSWERREC, token, NULL); + return; + } ast_debug(2, "[%p] Starting initial resolution using parallel queries for target '%s'\n", resolve, host); ast_dns_query_set_resolve_async(resolve->queries, sip_resolve_callback, resolve); -- cgit v1.2.3