summaryrefslogtreecommitdiff
path: root/res/res_pjsip
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2015-06-05 12:16:22 -0500
committerRichard Mudgett <rmudgett@digium.com>2015-06-10 18:06:15 -0500
commitb23f33e7e5bc1524d3e2b3536174590db575055e (patch)
tree1918dd3f90b48c944a7f0b837c8f604e7569823b /res/res_pjsip
parentae589da4662e0a626223cbef05dc53d197a0b16a (diff)
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
Diffstat (limited to 'res/res_pjsip')
-rw-r--r--res/res_pjsip/pjsip_resolver.c8
1 files changed, 7 insertions, 1 deletions
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);