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 -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits