[asterisk-commits] file: branch group/dns_pjsip r434283 - in /team/group/dns_pjsip: ./ include/a...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Apr 8 06:10:12 CDT 2015


Author: file
Date: Wed Apr  8 06:10:06 2015
New Revision: 434283

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=434283
Log:
Add support for using the official PJSIP external resolver API, and provide notice about falling back to built-in if unavailable.

Modified:
    team/group/dns_pjsip/configure
    team/group/dns_pjsip/configure.ac
    team/group/dns_pjsip/include/asterisk/autoconfig.h.in
    team/group/dns_pjsip/res/res_pjsip/pjsip_resolver.c

Modified: team/group/dns_pjsip/configure.ac
URL: http://svnview.digium.com/svn/asterisk/team/group/dns_pjsip/configure.ac?view=diff&rev=434283&r1=434282&r2=434283
==============================================================================
--- team/group/dns_pjsip/configure.ac (original)
+++ team/group/dns_pjsip/configure.ac Wed Apr  8 06:10:06 2015
@@ -458,6 +458,7 @@
 AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_REPLACE_MEDIA_STREAM], [PJSIP Media Stream Replacement Support], [PJPROJECT], [pjsip])
 AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_GET_DEST_INFO], [pjsip_get_dest_info support], [PJPROJECT], [pjsip])
 AST_EXT_LIB_SETUP_OPTIONAL([PJ_SSL_CERT_LOAD_FROM_FILES2], [pj_ssl_cert_load_from_files2 support], [PJPROJECT], [pjsip])
+AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_EXTERNAL_RESOLVER], [PJSIP External Resolver Support], [PJPROJECT], [pjsip])
 AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio])
 AST_EXT_LIB_SETUP([PRI], [ISDN PRI], [pri])
 AST_EXT_LIB_SETUP_OPTIONAL([PRI_SETUP_ACK_INBAND], [ISDN PRI progress inband ie in SETUP ACK], [PRI], [pri])
@@ -2124,6 +2125,7 @@
 
 AST_EXT_LIB_CHECK([PJSIP_GET_DEST_INFO], [pjsip], [pjsip_get_dest_info], [pjsip.h], [$PJPROJECT_LIBS], [$PJPROJECT_CFLAGS])
 AST_EXT_LIB_CHECK([PJ_SSL_CERT_LOAD_FROM_FILES2], [pj], [pj_ssl_cert_load_from_files2], [pjlib.h], [$PJPROJECT_LIBS], [$PJPROJECT_CFLAGS])
+AST_EXT_LIB_CHECK([PJSIP_EXTERNAL_RESOLVER], [pjsip], [pjsip_endpt_set_ext_resolver], [pjsip.h], [$PJPROJECT_LIBS], [$PJPROJECT_CFLAGS])
 
 AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
 

Modified: team/group/dns_pjsip/include/asterisk/autoconfig.h.in
URL: http://svnview.digium.com/svn/asterisk/team/group/dns_pjsip/include/asterisk/autoconfig.h.in?view=diff&rev=434283&r1=434282&r2=434283
==============================================================================
--- team/group/dns_pjsip/include/asterisk/autoconfig.h.in (original)
+++ team/group/dns_pjsip/include/asterisk/autoconfig.h.in Wed Apr  8 06:10:06 2015
@@ -577,6 +577,10 @@
 
 /* Define if your system has the PJPROJECT libraries. */
 #undef HAVE_PJPROJECT
+
+/* Define to 1 if PJPROJECT has the PJSIP External Resolver Support feature.
+   */
+#undef HAVE_PJSIP_EXTERNAL_RESOLVER
 
 /* Define to 1 if PJPROJECT has the pjsip_get_dest_info support feature. */
 #undef HAVE_PJSIP_GET_DEST_INFO

Modified: team/group/dns_pjsip/res/res_pjsip/pjsip_resolver.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns_pjsip/res/res_pjsip/pjsip_resolver.c?view=diff&rev=434283&r1=434282&r2=434283
==============================================================================
--- team/group/dns_pjsip/res/res_pjsip/pjsip_resolver.c (original)
+++ team/group/dns_pjsip/res/res_pjsip/pjsip_resolver.c Wed Apr  8 06:10:06 2015
@@ -29,6 +29,8 @@
 #include "asterisk/dns_naptr.h"
 #include "asterisk/res_pjsip.h"
 #include "include/res_pjsip_private.h"
+
+#ifdef HAVE_PJSIP_EXTERNAL_RESOLVER
 
 /*! \brief Structure which contains transport+port information for an active query */
 struct sip_target {
@@ -472,6 +474,11 @@
 	}
 }
 
+/*! \brief External resolver implementation for PJSIP */
+static pjsip_ext_resolver resolver = {
+	.resolve = sip_resolve,
+};
+
 static int sip_replace_resolver(void *data)
 {
 	pj_pool_t *pool;
@@ -493,7 +500,7 @@
 	pjsip_endpt_release_pool(ast_sip_get_pjsip_endpoint(), pool);
 
 	/* Replace the PJSIP resolver with our own implementation */
-	pjsip_endpt_set_resolver_implementation(ast_sip_get_pjsip_endpoint(), sip_resolve);
+	pjsip_endpt_set_ext_resolver(ast_sip_get_pjsip_endpoint(), &resolver);
 	return 0;
 }
 
@@ -502,3 +509,13 @@
 	/* Replace the existing PJSIP resolver with our own implementation */
 	ast_sip_push_task_synchronous(NULL, sip_replace_resolver, NULL);
 }
+
+#else
+
+void ast_sip_initialize_resolver(void)
+{
+	/* External resolver support does not exist in the version of PJSIP in use */
+	ast_log(LOG_NOTICE, "The version of PJSIP in use does not support external resolvers, using PJSIP provided resolver\n");
+}
+
+#endif




More information about the asterisk-commits mailing list