From: <abe...@us...> - 2017-04-05 16:39:18
|
Revision: 8257 http://sourceforge.net/p/astlinux/code/8257 Author: abelbeck Date: 2017-04-05 16:39:15 +0000 (Wed, 05 Apr 2017) Log Message: ----------- pjsip version bump to 2.6 and Asterisk 13.15.0-rc3 Modified Paths: -------------- branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch branches/1.0/package/asterisk/asterisk.mk branches/1.0/package/pjsip/Config.in branches/1.0/package/pjsip/asterisk-config_site.h branches/1.0/package/pjsip/pjsip.mk Added Paths: ----------- branches/1.0/package/pjsip/pjsip-0000-remove-third-party.patch branches/1.0/package/pjsip/pjsip-0000-set_apps_initial_log_level.patch branches/1.0/package/pjsip/pjsip-0010-evsub-Add-pjsip_evsub_set_uas_timeout.patch branches/1.0/package/pjsip/pjsip-0011-r5554-svn-backport-Increase-SENDER_WIDTH-column-size.patch branches/1.0/package/pjsip/pjsip-0013-r5559-svn-backport-Fix-to-resolve-DNS-SRV-crashes.patch Removed Paths: ------------- branches/1.0/package/pjsip/pjsip-0001-r5397-pjsip_generic_array_max_count.patch branches/1.0/package/pjsip/pjsip-0001-r5400-pjsip_tx_data_dec_ref.patch branches/1.0/package/pjsip/pjsip-0002-Fix-1946-Avoid-deinitialization-of-uninitialized-cli.patch branches/1.0/package/pjsip/pjsip-0002-r5435-add-pjsip_inv_session-ref_cnt.patch branches/1.0/package/pjsip/pjsip-0003-r5403-pjsip_IPV6_V6ONLY.patch branches/1.0/package/pjsip/pjsip-0004-resolver.c-Prevent-SERVFAIL-from-marking-name-server.patch branches/1.0/package/pjsip/pjsip-0005-Re-1969-Fix-crash-on-using-an-already-destroyed-SSL-.patch branches/1.0/package/pjsip/pjsip-0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch branches/1.0/package/pjsip/pjsip-0006-r5473-svn-backport-Fix-pending-query.patch branches/1.0/package/pjsip/pjsip-0006-r5475-svn-backport-Remove-DNS-cache-entry.patch branches/1.0/package/pjsip/pjsip-0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch Modified: branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/asterisk/asterisk-13-configure-menuselect-cross-fix.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,6 +1,6 @@ --- asterisk-13/configure.ac.orig 2014-01-24 16:52:23.000000000 -0600 +++ asterisk-13/configure.ac 2014-01-24 16:55:14.000000000 -0600 -@@ -2668,11 +2668,13 @@ +@@ -2670,11 +2670,13 @@ AC_OUTPUT ${ac_cv_path_EGREP} 'CURSES|GTK2|OSARCH|NEWT' makeopts > makeopts.acbak2 Modified: branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch =================================================================== --- branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/asterisk/asterisk-13-extension-changed-verbosity-chan_sip.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,6 +1,6 @@ --- asterisk-13/channels/chan_sip.c.orig 2015-04-23 10:22:04.000000000 -0500 +++ asterisk-13/channels/chan_sip.c 2015-04-23 10:22:40.000000000 -0500 -@@ -17368,7 +17368,7 @@ +@@ -17449,7 +17449,7 @@ } if (!force) { Modified: branches/1.0/package/asterisk/asterisk.mk =================================================================== --- branches/1.0/package/asterisk/asterisk.mk 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/asterisk/asterisk.mk 2017-04-05 16:39:15 UTC (rev 8257) @@ -7,7 +7,7 @@ ASTERISK_VERSION := 11.25.1 else ifeq ($(BR2_PACKAGE_ASTERISK_v13),y) -ASTERISK_VERSION := 13.14.0 +ASTERISK_VERSION := 13.15.0-rc3 else ASTERISK_VERSION := 15.0.0 endif Modified: branches/1.0/package/pjsip/Config.in =================================================================== --- branches/1.0/package/pjsip/Config.in 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/Config.in 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,6 +1,5 @@ config BR2_PACKAGE_PJSIP bool "pjsip" - select BR2_PACKAGE_LIBSRTP help PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as: Modified: branches/1.0/package/pjsip/asterisk-config_site.h =================================================================== --- branches/1.0/package/pjsip/asterisk-config_site.h 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/asterisk-config_site.h 2017-04-05 16:39:15 UTC (rev 8257) @@ -12,6 +12,13 @@ */ #define PJMEDIA_HAS_SRTP 0 +/* + * Defining PJMEDIA_HAS_WEBRTC_AEC to 0 does NOT disable Asterisk's ability to use + * webrtc. It only disables the pjmedia webrtc transport which Asterisk doesn't use. + */ +#undef PJMEDIA_HAS_WEBRTC_AEC +#define PJMEDIA_HAS_WEBRTC_AEC 0 + #define PJ_HAS_IPV6 1 #define NDEBUG 1 #define PJ_MAX_HOSTNAME (256) Added: branches/1.0/package/pjsip/pjsip-0000-remove-third-party.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0000-remove-third-party.patch (rev 0) +++ branches/1.0/package/pjsip/pjsip-0000-remove-third-party.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -0,0 +1,124 @@ +diff --git a/build.mak.in b/build.mak.in +index eb28663..83024ef 100644 +--- a/build.mak.in ++++ b/build.mak.in +@@ -28,19 +27,6 @@ export APP_THIRD_PARTY_EXT := + export APP_THIRD_PARTY_LIBS := + export APP_THIRD_PARTY_LIB_FILES := + +-ifeq (@ac_external_srtp@,1) +-# External SRTP library +-APP_THIRD_PARTY_EXT += -lsrtp +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libsrtp-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lsrtp-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lsrtp +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libsrtp.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libsrtp.$(SHLIB_SUFFIX) +-endif +-endif +- + ifeq (@ac_pjmedia_resample@,libresample) + APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX) + ifeq ($(PJ_SHARED_LIBRARIES),) +@@ -57,99 +43,6 @@ APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFI + endif + endif + +-ifneq (@ac_no_gsm_codec@,1) +-ifeq (@ac_external_gsm@,1) +-# External GSM library +-APP_THIRD_PARTY_EXT += -lgsm +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lgsmcodec-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lgsmcodec +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libgsmcodec.$(SHLIB_SUFFIX) +-endif +-endif +-endif +- +-ifneq (@ac_no_speex_codec@,1) +-ifeq (@ac_external_speex@,1) +-APP_THIRD_PARTY_EXT += -lspeex -lspeexdsp +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lspeex-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lspeex +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libspeex.$(SHLIB_SUFFIX) +-endif +-endif +-endif +- +-ifneq (@ac_no_ilbc_codec@,1) +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lilbccodec-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lilbccodec +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libilbccodec.$(SHLIB_SUFFIX) +-endif +-endif +- +-ifneq (@ac_no_g7221_codec@,1) +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libg7221codec-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lg7221codec-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lg7221codec +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libg7221codec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libg7221codec.$(SHLIB_SUFFIX) +-endif +-endif +- +-ifneq ($(findstring pa,@ac_pjmedia_snd@),) +-ifeq (@ac_external_pa@,1) +-# External PA +-APP_THIRD_PARTY_EXT += -lportaudio +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lportaudio-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lportaudio +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libportaudio.$(SHLIB_SUFFIX) +-endif +-endif +-endif +- +-ifneq (@ac_no_yuv@,1) +-ifeq (@ac_external_yuv@,1) +-APP_THIRD_PARTY_EXT += -lyuv +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libyuv-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lyuv-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lyuv +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libyuv.$(SHLIB_SUFFIX) +-endif +-endif +-endif +- +-ifneq (@ac_no_webrtc@,1) +-ifeq (@ac_external_webrtc@,1) +-APP_THIRD_PARTY_EXT += -lwebrtc +-else +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-$(LIB_SUFFIX) +-ifeq ($(PJ_SHARED_LIBRARIES),) +-APP_THIRD_PARTY_LIBS += -lwebrtc-$(TARGET_NAME) +-else +-APP_THIRD_PARTY_LIBS += -lwebrtc +-APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX) +-endif +-endif +-endif +- +- + # Additional flags + @ac_build_mak_vars@ + Added: branches/1.0/package/pjsip/pjsip-0000-set_apps_initial_log_level.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0000-set_apps_initial_log_level.patch (rev 0) +++ branches/1.0/package/pjsip/pjsip-0000-set_apps_initial_log_level.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -0,0 +1,39 @@ +diff --git a/pjsip-apps/src/pjsua/main.c b/pjsip-apps/src/pjsua/main.c +index 2baaf82..11831f2 100644 +--- a/pjsip-apps/src/pjsua/main.c ++++ b/pjsip-apps/src/pjsua/main.c +@@ -126,5 +126,7 @@ int main_func(int argc, char *argv[]) + + int main(int argc, char *argv[]) + { ++ pj_log_set_level(1); ++ + return pj_run_app(&main_func, argc, argv, 0); + } +diff --git a/pjsip-apps/src/pjsystest/main_console.c b/pjsip-apps/src/pjsystest/main_console.c +index 122cdc7..dc79eab 100644 +--- a/pjsip-apps/src/pjsystest/main_console.c ++++ b/pjsip-apps/src/pjsystest/main_console.c +@@ -133,6 +133,8 @@ void gui_sleep(unsigned sec) + + int main() + { ++ pj_log_set_level(1); ++ + if (systest_init() != PJ_SUCCESS) + return 1; + +diff --git a/pjsip-apps/src/python/_pjsua.c b/pjsip-apps/src/python/_pjsua.c +index fb80e23..c9b21d8 100644 +--- a/pjsip-apps/src/python/_pjsua.c ++++ b/pjsip-apps/src/python/_pjsua.c +@@ -4437,7 +4437,8 @@ init_pjsua(void) + PyObject* m = NULL; + #define ADD_CONSTANT(mod,name) PyModule_AddIntConstant(mod,#name,name) + +- ++ pj_log_set_level(1); ++ + PyEval_InitThreads(); + + if (PyType_Ready(&PyTyp_pjsua_callback) < 0) Deleted: branches/1.0/package/pjsip/pjsip-0001-r5397-pjsip_generic_array_max_count.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0001-r5397-pjsip_generic_array_max_count.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0001-r5397-pjsip_generic_array_max_count.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,58 +0,0 @@ -This patch updates array limit checks and docs -in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability(). - -Index: pjsip/include/pjsip/sip_endpoint.h -=================================================================== ---- a/pjsip/include/pjsip/sip_endpoint.h (revision 5396) -+++ b/pjsip/include/pjsip/sip_endpoint.h (revision 5397) -@@ -583,7 +583,8 @@ - * @param hname If htype specifies PJSIP_H_OTHER, then the header name - * must be supplied in this argument. Otherwise the value - * must be set to NULL. -- * @param count The number of tags in the array. -+ * @param count The number of tags in the array. The value must not -+ * be greater than PJSIP_GENERIC_ARRAY_MAX_COUNT. - * @param tags Array of tags describing the capabilities or extensions - * to be added to the appropriate header. - * -Index: pjsip/include/pjsip-simple/evsub.h -=================================================================== ---- a/pjsip/include/pjsip-simple/evsub.h (revision 5396) -+++ b/pjsip/include/pjsip-simple/evsub.h (revision 5397) -@@ -246,7 +246,8 @@ - * registered. - * @param event_name Event package identification. - * @param expires Default subscription expiration time, in seconds. -- * @param accept_cnt Number of strings in Accept array. -+ * @param accept_cnt Number of strings in Accept array. The value must -+ * not be greater than PJSIP_GENERIC_ARRAY_MAX_COUNT. - * @param accept Array of Accept value. - * - * @return PJ_SUCCESS on success. -Index: pjsip/src/pjsip/sip_endpoint.c -=================================================================== ---- a/pjsip/src/pjsip/sip_endpoint.c (revision 5396) -+++ b/pjsip/src/pjsip/sip_endpoint.c (revision 5397) -@@ -371,6 +371,7 @@ - - /* Check arguments. */ - PJ_ASSERT_RETURN(endpt!=NULL && count>0 && tags, PJ_EINVAL); -+ PJ_ASSERT_RETURN(count <= PJSIP_GENERIC_ARRAY_MAX_COUNT, PJ_ETOOMANY); - PJ_ASSERT_RETURN(htype==PJSIP_H_ACCEPT || - htype==PJSIP_H_ALLOW || - htype==PJSIP_H_SUPPORTED, -Index: pjsip/src/pjsip-simple/evsub.c -=================================================================== ---- a/pjsip/src/pjsip-simple/evsub.c (revision 5396) -+++ b/pjsip/src/pjsip-simple/evsub.c (revision 5397) -@@ -412,7 +412,9 @@ - unsigned i; - - PJ_ASSERT_RETURN(pkg_mod && event_name, PJ_EINVAL); -- PJ_ASSERT_RETURN(accept_cnt < PJ_ARRAY_SIZE(pkg->pkg_accept->values), -+ -+ /* Make sure accept_cnt < PJ_ARRAY_SIZE(pkg->pkg_accept->values) */ -+ PJ_ASSERT_RETURN(accept_cnt <= PJSIP_GENERIC_ARRAY_MAX_COUNT, - PJ_ETOOMANY); - - /* Make sure evsub module has been initialized */ Deleted: branches/1.0/package/pjsip/pjsip-0001-r5400-pjsip_tx_data_dec_ref.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0001-r5400-pjsip_tx_data_dec_ref.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0001-r5400-pjsip_tx_data_dec_ref.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,24 +0,0 @@ -This patch fixes the issue in pjsip_tx_data_dec_ref() -when tx_data_destroy can be called more than once, -and checks if invalid value (e.g. NULL) is passed to. - -Index: pjsip/src/pjsip/sip_transport.c -=================================================================== ---- a/pjsip/src/pjsip/sip_transport.c (revision 5399) -+++ b/pjsip/src/pjsip/sip_transport.c (revision 5400) -@@ -491,8 +491,13 @@ - */ - PJ_DEF(pj_status_t) pjsip_tx_data_dec_ref( pjsip_tx_data *tdata ) - { -- pj_assert( pj_atomic_get(tdata->ref_cnt) > 0); -- if (pj_atomic_dec_and_get(tdata->ref_cnt) <= 0) { -+ pj_atomic_value_t ref_cnt; -+ -+ PJ_ASSERT_RETURN(tdata && tdata->ref_cnt, PJ_EINVAL); -+ -+ ref_cnt = pj_atomic_dec_and_get(tdata->ref_cnt); -+ pj_assert( ref_cnt >= 0); -+ if (ref_cnt == 0) { - tx_data_destroy(tdata); - return PJSIP_EBUFDESTROYED; - } else { Deleted: branches/1.0/package/pjsip/pjsip-0002-Fix-1946-Avoid-deinitialization-of-uninitialized-cli.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0002-Fix-1946-Avoid-deinitialization-of-uninitialized-cli.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0002-Fix-1946-Avoid-deinitialization-of-uninitialized-cli.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,55 +0,0 @@ -From 33fd755e819dc85a96718abc0ae26a9b46f14800 Mon Sep 17 00:00:00 2001 -From: nanang <nanang@localhost> -Date: Thu, 28 Jul 2016 08:21:45 +0000 -Subject: [PATCH 2/3] Fix #1946: Avoid deinitialization of uninitialized client - auth session. - ---- - pjsip/src/pjsip/sip_dialog.c | 18 ++++++------------ - 1 file changed, 6 insertions(+), 12 deletions(-) - -diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c -index f03885d..421ddc4 100644 ---- a/pjsip/src/pjsip/sip_dialog.c -+++ b/pjsip/src/pjsip/sip_dialog.c -@@ -92,6 +92,12 @@ static pj_status_t create_dialog( pjsip_user_agent *ua, - pj_list_init(&dlg->inv_hdr); - pj_list_init(&dlg->rem_cap_hdr); - -+ /* Init client authentication session. */ -+ status = pjsip_auth_clt_init(&dlg->auth_sess, dlg->endpt, -+ dlg->pool, 0); -+ if (status != PJ_SUCCESS) -+ goto on_error; -+ - status = pj_mutex_create_recursive(pool, dlg->obj_name, &dlg->mutex_); - if (status != PJ_SUCCESS) - goto on_error; -@@ -283,12 +289,6 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, - /* Initial route set is empty. */ - pj_list_init(&dlg->route_set); - -- /* Init client authentication session. */ -- status = pjsip_auth_clt_init(&dlg->auth_sess, dlg->endpt, -- dlg->pool, 0); -- if (status != PJ_SUCCESS) -- goto on_error; -- - /* Register this dialog to user agent. */ - status = pjsip_ua_register_dlg( ua, dlg ); - if (status != PJ_SUCCESS) -@@ -506,12 +506,6 @@ pj_status_t create_uas_dialog( pjsip_user_agent *ua, - } - dlg->route_set_frozen = PJ_TRUE; - -- /* Init client authentication session. */ -- status = pjsip_auth_clt_init(&dlg->auth_sess, dlg->endpt, -- dlg->pool, 0); -- if (status != PJ_SUCCESS) -- goto on_error; -- - /* Increment the dialog's lock since tsx may cause the dialog to be - * destroyed prematurely (such as in case of transport error). - */ --- -2.7.4 Deleted: branches/1.0/package/pjsip/pjsip-0002-r5435-add-pjsip_inv_session-ref_cnt.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0002-r5435-add-pjsip_inv_session-ref_cnt.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0002-r5435-add-pjsip_inv_session-ref_cnt.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,212 +0,0 @@ -When a transport error occured on an INVITE session -the stack calls on_tsx_state_changed with new state -PJSIP_INV_STATE_DISCONNECTED and immediately destroys -the INVITE session. -At the same time this INVITE session could being processed -on another thread. This thread could use the session's -memory pools which were already freed, so we get segfault. - -This patch adds a reference counter and new functions: -pjsip_inv_add_ref and pjsip_inv_dec_ref. -The INVITE session is destroyed only when the reference -counter has reached zero. - -To avoid race condition an application should call -pjsip_inv_add_ref/pjsip_inv_dec_ref. - -Index: pjsip/include/pjsip-ua/sip_inv.h -=================================================================== ---- a/pjsip/include/pjsip-ua/sip_inv.h (revision 5434) -+++ b/pjsip/include/pjsip-ua/sip_inv.h (revision 5435) -@@ -383,6 +383,11 @@ - * Other applications that want to use these pools must understand - * that the flip-flop pool's lifetimes are synchronized to the - * SDP offer-answer negotiation. -+ * -+ * The lifetime of this session is controlled by the reference counter in this -+ * structure, which is manipulated by calling #pjsip_inv_add_ref and -+ * #pjsip_inv_dec_ref. When the reference counter has reached zero, then -+ * this session will be destroyed. - */ - struct pjsip_inv_session - { -@@ -412,6 +417,7 @@ - struct pjsip_timer *timer; /**< Session Timers. */ - pj_bool_t following_fork; /**< Internal, following - forked media? */ -+ pj_atomic_t *ref_cnt; /**< Reference counter. */ - }; - - -@@ -631,6 +637,30 @@ - - - /** -+ * Add reference counter to the INVITE session. The reference counter controls -+ * the life time of the session, ie. when the counter reaches zero, then it -+ * will be destroyed. -+ * -+ * @param inv The INVITE session. -+ * @return PJ_SUCCESS if the INVITE session reference counter -+ * was increased. -+ */ -+PJ_DECL(pj_status_t) pjsip_inv_add_ref( pjsip_inv_session *inv ); -+ -+/** -+ * Decrement reference counter of the INVITE session. -+ * When the session is no longer used, it will be destroyed and -+ * caller is informed with PJ_EGONE return status. -+ * -+ * @param inv The INVITE session. -+ * @return PJ_SUCCESS if the INVITE session reference counter -+ * was decreased. A status PJ_EGONE will be returned to -+ * inform that session is destroyed. -+ */ -+PJ_DECL(pj_status_t) pjsip_inv_dec_ref( pjsip_inv_session *inv ); -+ -+ -+/** - * Forcefully terminate and destroy INVITE session, regardless of - * the state of the session. Note that this function should only be used - * when there is failure in the INVITE session creation. After the -Index: pjsip/src/pjsip-ua/sip_inv.c -=================================================================== ---- a/pjsip/src/pjsip-ua/sip_inv.c (revision 5434) -+++ b/pjsip/src/pjsip-ua/sip_inv.c (revision 5435) -@@ -195,6 +195,65 @@ - } - - /* -+ * Add reference to INVITE session. -+ */ -+PJ_DEF(pj_status_t) pjsip_inv_add_ref( pjsip_inv_session *inv ) -+{ -+ PJ_ASSERT_RETURN(inv && inv->ref_cnt, PJ_EINVAL); -+ -+ pj_atomic_inc(inv->ref_cnt); -+ -+ return PJ_SUCCESS; -+} -+ -+static void inv_session_destroy(pjsip_inv_session *inv) -+{ -+ if (inv->last_ack) { -+ pjsip_tx_data_dec_ref(inv->last_ack); -+ inv->last_ack = NULL; -+ } -+ if (inv->invite_req) { -+ pjsip_tx_data_dec_ref(inv->invite_req); -+ inv->invite_req = NULL; -+ } -+ if (inv->pending_bye) { -+ pjsip_tx_data_dec_ref(inv->pending_bye); -+ inv->pending_bye = NULL; -+ } -+ pjsip_100rel_end_session(inv); -+ pjsip_timer_end_session(inv); -+ pjsip_dlg_dec_session(inv->dlg, &mod_inv.mod); -+ -+ /* Release the flip-flop pools */ -+ pj_pool_release(inv->pool_prov); -+ inv->pool_prov = NULL; -+ pj_pool_release(inv->pool_active); -+ inv->pool_active = NULL; -+ -+ pj_atomic_destroy(inv->ref_cnt); -+ inv->ref_cnt = NULL; -+} -+ -+/* -+ * Decrease INVITE session reference, destroy it when the reference count -+ * reaches zero. -+ */ -+PJ_DEF(pj_status_t) pjsip_inv_dec_ref( pjsip_inv_session *inv ) -+{ -+ pj_atomic_value_t ref_cnt; -+ -+ PJ_ASSERT_RETURN(inv && inv->ref_cnt, PJ_EINVAL); -+ -+ ref_cnt = pj_atomic_dec_and_get(inv->ref_cnt); -+ pj_assert( ref_cnt >= 0); -+ if (ref_cnt == 0) { -+ inv_session_destroy(inv); -+ return PJ_EGONE; -+ } -+ return PJ_SUCCESS; -+} -+ -+/* - * Set session state. - */ - static void inv_set_state(pjsip_inv_session *inv, pjsip_inv_state state, -@@ -261,27 +320,7 @@ - if (inv->state == PJSIP_INV_STATE_DISCONNECTED && - prev_state != PJSIP_INV_STATE_DISCONNECTED) - { -- if (inv->last_ack) { -- pjsip_tx_data_dec_ref(inv->last_ack); -- inv->last_ack = NULL; -- } -- if (inv->invite_req) { -- pjsip_tx_data_dec_ref(inv->invite_req); -- inv->invite_req = NULL; -- } -- if (inv->pending_bye) { -- pjsip_tx_data_dec_ref(inv->pending_bye); -- inv->pending_bye = NULL; -- } -- pjsip_100rel_end_session(inv); -- pjsip_timer_end_session(inv); -- pjsip_dlg_dec_session(inv->dlg, &mod_inv.mod); -- -- /* Release the flip-flop pools */ -- pj_pool_release(inv->pool_prov); -- inv->pool_prov = NULL; -- pj_pool_release(inv->pool_active); -- inv->pool_active = NULL; -+ pjsip_inv_dec_ref(inv); - } - } - -@@ -838,6 +877,12 @@ - inv = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_inv_session); - pj_assert(inv != NULL); - -+ status = pj_atomic_create(dlg->pool, 0, &inv->ref_cnt); -+ if (status != PJ_SUCCESS) { -+ pjsip_dlg_dec_lock(dlg); -+ return status; -+ } -+ - inv->pool = dlg->pool; - inv->role = PJSIP_ROLE_UAC; - inv->state = PJSIP_INV_STATE_NULL; -@@ -881,6 +926,7 @@ - pjsip_100rel_attach(inv); - - /* Done */ -+ pjsip_inv_add_ref(inv); - *p_inv = inv; - - pjsip_dlg_dec_lock(dlg); -@@ -1471,6 +1517,12 @@ - inv = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_inv_session); - pj_assert(inv != NULL); - -+ status = pj_atomic_create(dlg->pool, 0, &inv->ref_cnt); -+ if (status != PJ_SUCCESS) { -+ pjsip_dlg_dec_lock(dlg); -+ return status; -+ } -+ - inv->pool = dlg->pool; - inv->role = PJSIP_ROLE_UAS; - inv->state = PJSIP_INV_STATE_NULL; -@@ -1540,6 +1592,7 @@ - } - - /* Done */ -+ pjsip_inv_add_ref(inv); - pjsip_dlg_dec_lock(dlg); - *p_inv = inv; - Deleted: branches/1.0/package/pjsip/pjsip-0003-r5403-pjsip_IPV6_V6ONLY.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0003-r5403-pjsip_IPV6_V6ONLY.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0003-r5403-pjsip_IPV6_V6ONLY.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,13 +0,0 @@ ---- a/pjlib/src/pj/sock_bsd.c -+++ b/pjlib/src/pj/sock_bsd.c -@@ -539,6 +539,10 @@ - pj_sock_setsockopt(*sock, pj_SOL_SOCKET(), pj_SO_NOSIGPIPE(), - &val, sizeof(val)); - } -+ if (af != PJ_AF_INET) { /* Linux Kernel 2.4.21; June 2003 */ -+ pj_sock_setsockopt(*sock, PJ_SOL_IPV6, IPV6_V6ONLY, -+ &val, sizeof(val)); -+ } - #if defined(PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT) && \ - PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT!=0 - if (type == pj_SOCK_DGRAM()) { Deleted: branches/1.0/package/pjsip/pjsip-0004-resolver.c-Prevent-SERVFAIL-from-marking-name-server.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0004-resolver.c-Prevent-SERVFAIL-from-marking-name-server.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0004-resolver.c-Prevent-SERVFAIL-from-marking-name-server.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,48 +0,0 @@ -From a5efddbe9151e9ad99279e59566c86f8bc27d3a9 Mon Sep 17 00:00:00 2001 -From: George Joseph <gj...@di...> -Date: Wed, 7 Sep 2016 13:10:57 -0600 -Subject: [PATCH] resolver.c: Prevent SERVFAIL from marking name server bad - -A name server that returns "Server Failure" is indicating only that -the server couldn't process that particular request. We should NOT -assume that the name server is incapable of serving other requests. - -Here's the scenario we've been encountering... - -* 2 local name servers configured in resolv.conf. -* An OPTIONS request causes a request for A and AAAA records to go out - to both nameservers. -* The A responses both come back successfully resolved. -* Because of an issue at some upstream nameserver, the AAAA responses - for that particular query come back as "SERVFAIL" from both local - name servers. -* Both local servers are marked as bad and no further queries can be - sent until the 60 second ttl expires. Only previously cached results - can be used. -* In this case, 60 seconds is just enough time for another OPTIONS - request to go out to the same host so the cycle repeats. - -We could set the bad ttl really low but that also affects REFUSED and -NOTAUTH which probably DO signal a real server issue. Besides, even -a really low bad ttl would be an issue on a pbx. ---- - pjlib-util/src/pjlib-util/resolver.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c -index d277e4f..540f88f 100644 ---- a/pjlib-util/src/pjlib-util/resolver.c -+++ b/pjlib-util/src/pjlib-util/resolver.c -@@ -1384,8 +1384,7 @@ static void report_nameserver_status(pj_dns_resolver *resolver, - q_id = (pj_uint32_t)-1; - } - -- if (!pkt || rcode == PJ_DNS_RCODE_SERVFAIL || -- rcode == PJ_DNS_RCODE_REFUSED || -+ if (!pkt || rcode == PJ_DNS_RCODE_REFUSED || - rcode == PJ_DNS_RCODE_NOTAUTH) - { - is_good = PJ_FALSE; --- -2.7.4 - Deleted: branches/1.0/package/pjsip/pjsip-0005-Re-1969-Fix-crash-on-using-an-already-destroyed-SSL-.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0005-Re-1969-Fix-crash-on-using-an-already-destroyed-SSL-.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0005-Re-1969-Fix-crash-on-using-an-already-destroyed-SSL-.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,164 +0,0 @@ -From 9e67e0d5c3fdc747530a956038b374fca4748b76 Mon Sep 17 00:00:00 2001 -From: riza <riza@localhost> -Date: Thu, 13 Oct 2016 09:02:50 +0000 -Subject: [PATCH 1/4] Re #1969: Fix crash on using an already destroyed SSL - socket. - ---- - pjlib/src/pj/ssl_sock_ossl.c | 66 ++++++++++++++++++++++++++++---------------- - 1 file changed, 42 insertions(+), 24 deletions(-) - -diff --git a/pjlib/src/pj/ssl_sock_ossl.c b/pjlib/src/pj/ssl_sock_ossl.c -index fa0db2d..ceab67a 100644 ---- a/pjlib/src/pj/ssl_sock_ossl.c -+++ b/pjlib/src/pj/ssl_sock_ossl.c -@@ -822,7 +822,10 @@ static void close_sockets(pj_ssl_sock_t *ssock) - pj_lock_acquire(ssock->write_mutex); - asock = ssock->asock; - if (asock) { -- ssock->asock = NULL; -+ // Don't set ssock->asock to NULL, as it may trigger assertion in -+ // send operation. This should be safe as active socket will simply -+ // return PJ_EINVALIDOP on any operation if it is already closed. -+ //ssock->asock = NULL; - ssock->sock = PJ_INVALID_SOCKET; - } - sock = ssock->sock; -@@ -841,9 +844,9 @@ static void close_sockets(pj_ssl_sock_t *ssock) - /* Reset SSL socket state */ - static void reset_ssl_sock_state(pj_ssl_sock_t *ssock) - { -+ pj_lock_acquire(ssock->write_mutex); - ssock->ssl_state = SSL_STATE_NULL; -- -- destroy_ssl(ssock); -+ pj_lock_release(ssock->write_mutex); - - close_sockets(ssock); - -@@ -1612,6 +1615,21 @@ static pj_status_t do_handshake(pj_ssl_sock_t *ssock) - return PJ_EPENDING; - } - -+static void ssl_on_destroy(void *arg) -+{ -+ pj_pool_t *pool = NULL; -+ pj_ssl_sock_t *ssock = (pj_ssl_sock_t*)arg; -+ -+ destroy_ssl(ssock); -+ -+ pj_lock_destroy(ssock->write_mutex); -+ -+ pool = ssock->pool; -+ ssock->pool = NULL; -+ if (pool) -+ pj_pool_release(pool); -+} -+ - - /* - ******************************************************************* -@@ -1830,7 +1848,7 @@ static pj_bool_t asock_on_accept_complete (pj_activesock_t *asock, - - /* Create new SSL socket instance */ - status = pj_ssl_sock_create(ssock_parent->pool, -- &ssock_parent->newsock_param, &ssock); -+ &ssock_parent->newsock_param, &ssock); - if (status != PJ_SUCCESS) - goto on_return; - -@@ -1906,12 +1924,10 @@ static pj_bool_t asock_on_accept_complete (pj_activesock_t *asock, - if (status != PJ_SUCCESS) - goto on_return; - -- /* Temporarily add ref the group lock until active socket creation, -- * to make sure that group lock is destroyed if the active socket -- * creation fails. -- */ - pj_grp_lock_add_ref(glock); - asock_cfg.grp_lock = ssock->param.grp_lock = glock; -+ pj_grp_lock_add_handler(ssock->param.grp_lock, ssock->pool, ssock, -+ ssl_on_destroy); - } - - pj_bzero(&asock_cb, sizeof(asock_cb)); -@@ -1927,11 +1943,6 @@ static pj_bool_t asock_on_accept_complete (pj_activesock_t *asock, - ssock, - &ssock->asock); - -- /* This will destroy the group lock if active socket creation fails */ -- if (asock_cfg.grp_lock) { -- pj_grp_lock_dec_ref(asock_cfg.grp_lock); -- } -- - if (status != PJ_SUCCESS) - goto on_return; - -@@ -2251,17 +2262,26 @@ PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool, - /* Create secure socket mutex */ - status = pj_lock_create_recursive_mutex(pool, pool->obj_name, - &ssock->write_mutex); -- if (status != PJ_SUCCESS) -+ if (status != PJ_SUCCESS) { -+ pj_pool_release(pool); - return status; -+ } - - /* Init secure socket param */ - pj_ssl_sock_param_copy(pool, &ssock->param, param); -+ -+ if (ssock->param.grp_lock) { -+ pj_grp_lock_add_ref(ssock->param.grp_lock); -+ pj_grp_lock_add_handler(ssock->param.grp_lock, pool, ssock, -+ ssl_on_destroy); -+ } -+ - ssock->param.read_buffer_size = ((ssock->param.read_buffer_size+7)>>3)<<3; - if (!ssock->param.timer_heap) { - PJ_LOG(3,(ssock->pool->obj_name, "Warning: timer heap is not " - "available. It is recommended to supply one to avoid " -- "a race condition if more than one worker threads " -- "are used.")); -+ "a race condition if more than one worker threads " -+ "are used.")); - } - - /* Finally */ -@@ -2277,8 +2297,6 @@ PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool, - */ - PJ_DEF(pj_status_t) pj_ssl_sock_close(pj_ssl_sock_t *ssock) - { -- pj_pool_t *pool; -- - PJ_ASSERT_RETURN(ssock, PJ_EINVAL); - - if (!ssock->pool) -@@ -2290,12 +2308,11 @@ PJ_DEF(pj_status_t) pj_ssl_sock_close(pj_ssl_sock_t *ssock) - } - - reset_ssl_sock_state(ssock); -- pj_lock_destroy(ssock->write_mutex); -- -- pool = ssock->pool; -- ssock->pool = NULL; -- if (pool) -- pj_pool_release(pool); -+ if (ssock->param.grp_lock) { -+ pj_grp_lock_dec_ref(ssock->param.grp_lock); -+ } else { -+ ssl_on_destroy(ssock); -+ } - - return PJ_SUCCESS; - } -@@ -2782,6 +2799,7 @@ pj_ssl_sock_start_accept2(pj_ssl_sock_t *ssock, - - /* Start accepting */ - pj_ssl_sock_param_copy(pool, &ssock->newsock_param, newsock_param); -+ ssock->newsock_param.grp_lock = NULL; - status = pj_activesock_start_accept(ssock->asock, pool); - if (status != PJ_SUCCESS) - goto on_error; --- -2.7.4 - Deleted: branches/1.0/package/pjsip/pjsip-0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,134 +0,0 @@ -From 2ab7a9f67caf73be3f2215473f72882cfaef4972 Mon Sep 17 00:00:00 2001 -From: Richard Mudgett <rmu...@di...> -Date: Fri, 28 Oct 2016 12:11:30 -0500 -Subject: [PATCH 1/3] r5471 svn backport Various fixes for DNS IPv6 - -Fixed #1974: Various fixes for DNS IPv6 ---- - pjlib-util/src/pjlib-util/resolver.c | 11 +++++------ - pjlib-util/src/pjlib-util/srv_resolver.c | 17 +++++++++++++++-- - pjsip/src/pjsip/sip_resolve.c | 14 +++++++------- - 3 files changed, 27 insertions(+), 15 deletions(-) - -diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c -index e5e1bed..d24ef9d 100644 ---- a/pjlib-util/src/pjlib-util/resolver.c -+++ b/pjlib-util/src/pjlib-util/resolver.c -@@ -835,7 +835,7 @@ PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver, - pj_time_val now; - struct res_key key; - struct cached_res *cache; -- pj_dns_async_query *q; -+ pj_dns_async_query *q, *p_q = NULL; - pj_uint32_t hval; - pj_status_t status = PJ_SUCCESS; - -@@ -849,9 +849,6 @@ PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver, - /* Check type */ - PJ_ASSERT_RETURN(type > 0 && type < 0xFFFF, PJ_EINVAL); - -- if (p_query) -- *p_query = NULL; -- - /* Build resource key for looking up hash tables */ - init_res_key(&key, type, name); - -@@ -970,10 +967,12 @@ PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver, - pj_hash_set_np(resolver->hquerybyres, &q->key, sizeof(q->key), - 0, q->hbufkey, q); - -- if (p_query) -- *p_query = q; -+ p_q = q; - - on_return: -+ if (p_query) -+ *p_query = p_q; -+ - pj_mutex_unlock(resolver->mutex); - return status; - } -diff --git a/pjlib-util/src/pjlib-util/srv_resolver.c b/pjlib-util/src/pjlib-util/srv_resolver.c -index 02672aa..ff9c979 100644 ---- a/pjlib-util/src/pjlib-util/srv_resolver.c -+++ b/pjlib-util/src/pjlib-util/srv_resolver.c -@@ -187,9 +187,12 @@ PJ_DEF(pj_status_t) pj_dns_srv_cancel_query(pj_dns_srv_async_query *query, - has_pending = PJ_TRUE; - } - if (srv->q_aaaa) { -- pj_dns_resolver_cancel_query(srv->q_aaaa, PJ_FALSE); -+ /* Check if it is a dummy query. */ -+ if (srv->q_aaaa != (pj_dns_async_query*)0x1) { -+ pj_dns_resolver_cancel_query(srv->q_aaaa, PJ_FALSE); -+ has_pending = PJ_TRUE; -+ } - srv->q_aaaa = NULL; -- has_pending = PJ_TRUE; - } - } - -@@ -485,12 +488,22 @@ static pj_status_t resolve_hostnames(pj_dns_srv_async_query *query_job) - srv->common.type = PJ_DNS_TYPE_A; - srv->common_aaaa.type = PJ_DNS_TYPE_AAAA; - srv->parent = query_job; -+ srv->q_a = NULL; -+ srv->q_aaaa = NULL; - - status = PJ_SUCCESS; - - /* Start DNA A record query */ - if ((query_job->option & PJ_DNS_SRV_RESOLVE_AAAA_ONLY) == 0) - { -+ if ((query_job->option & PJ_DNS_SRV_RESOLVE_AAAA) != 0) { -+ /* If there will be DNS AAAA query too, let's setup -+ * a dummy one here, otherwise app callback may be called -+ * immediately (before DNS AAAA query is sent) when -+ * DNS A record is available in the cache. -+ */ -+ srv->q_aaaa = (pj_dns_async_query*)0x1; -+ } - status = pj_dns_resolver_start_query(query_job->resolver, - &srv->target_name, - PJ_DNS_TYPE_A, 0, -diff --git a/pjsip/src/pjsip/sip_resolve.c b/pjsip/src/pjsip/sip_resolve.c -index ed326ba..3f3654d 100644 ---- a/pjsip/src/pjsip/sip_resolve.c -+++ b/pjsip/src/pjsip/sip_resolve.c -@@ -452,7 +452,7 @@ PJ_DEF(void) pjsip_resolve( pjsip_resolver_t *resolver, - } - - /* Resolve DNS AAAA record if address family is not fixed to IPv4 */ -- if (af != pj_AF_INET()) { -+ if (af != pj_AF_INET() && status == PJ_SUCCESS) { - status = pj_dns_resolver_start_query(resolver->res, - &query->naptr[0].name, - PJ_DNS_TYPE_AAAA, 0, -@@ -530,9 +530,9 @@ static void dns_a_callback(void *user_data, - - ++srv->count; - } -- -- } else { -- -+ } -+ -+ if (status != PJ_SUCCESS) { - char errmsg[PJ_ERR_MSG_SIZE]; - - /* Log error */ -@@ -593,9 +593,9 @@ static void dns_aaaa_callback(void *user_data, - - ++srv->count; - } -- -- } else { -- -+ } -+ -+ if (status != PJ_SUCCESS) { - char errmsg[PJ_ERR_MSG_SIZE]; - - /* Log error */ --- -1.7.9.5 - Deleted: branches/1.0/package/pjsip/pjsip-0006-r5473-svn-backport-Fix-pending-query.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0006-r5473-svn-backport-Fix-pending-query.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0006-r5473-svn-backport-Fix-pending-query.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,28 +0,0 @@ -From 509d4339747f11cfbde3a0acc447ef5d521eea93 Mon Sep 17 00:00:00 2001 -From: Richard Mudgett <rmu...@di...> -Date: Fri, 28 Oct 2016 12:12:28 -0500 -Subject: [PATCH 2/3] r5473 svn backport Fix pending query - -Re #1974: -If there is a pending query, set the return value to that query (instead of NULL) - -Thanks to Richard Mudgett for the patch. ---- - pjlib-util/src/pjlib-util/resolver.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c -index d24ef9d..fe687b7 100644 ---- a/pjlib-util/src/pjlib-util/resolver.c -+++ b/pjlib-util/src/pjlib-util/resolver.c -@@ -940,6 +940,7 @@ PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver, - /* Done. This child query will be notified once the "parent" - * query completes. - */ -+ p_q = nq; - status = PJ_SUCCESS; - goto on_return; - } --- -1.7.9.5 - Deleted: branches/1.0/package/pjsip/pjsip-0006-r5475-svn-backport-Remove-DNS-cache-entry.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0006-r5475-svn-backport-Remove-DNS-cache-entry.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0006-r5475-svn-backport-Remove-DNS-cache-entry.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,70 +0,0 @@ -From 46e1cfa18853a38b7fcdebad782710c5db676657 Mon Sep 17 00:00:00 2001 -From: Richard Mudgett <rmu...@di...> -Date: Fri, 28 Oct 2016 12:15:44 -0500 -Subject: [PATCH 3/3] r5475 svn backport Remove DNS cache entry - -Re #1974: Remove DNS cache entry from resolver's hash table when app callback has a reference. - -Thanks to Richard Mudgett for the patch. ---- - pjlib-util/src/pjlib-util/resolver.c | 29 +++++++++++++++-------------- - 1 file changed, 15 insertions(+), 14 deletions(-) - -diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c -index fe687b7..52b7655 100644 ---- a/pjlib-util/src/pjlib-util/resolver.c -+++ b/pjlib-util/src/pjlib-util/resolver.c -@@ -1444,10 +1444,12 @@ static void update_res_cache(pj_dns_resolver *resolver, - if (ttl > resolver->settings.cache_max_ttl) - ttl = resolver->settings.cache_max_ttl; - -+ /* Get a cache response entry */ -+ cache = (struct cached_res *) pj_hash_get(resolver->hrescache, key, -+ sizeof(*key), &hval); -+ - /* If TTL is zero, clear the same entry in the hash table */ - if (ttl == 0) { -- cache = (struct cached_res *) pj_hash_get(resolver->hrescache, key, -- sizeof(*key), &hval); - /* Remove the entry before releasing its pool (see ticket #1710) */ - pj_hash_set(NULL, resolver->hrescache, key, sizeof(*key), hval, NULL); - -@@ -1457,24 +1459,23 @@ static void update_res_cache(pj_dns_resolver *resolver, - return; - } - -- /* Get a cache response entry */ -- cache = (struct cached_res *) pj_hash_get(resolver->hrescache, key, -- sizeof(*key), &hval); - if (cache == NULL) { - cache = alloc_entry(resolver); -- } else if (cache->ref_cnt > 1) { -- /* When cache entry is being used by callback (to app), just decrement -- * ref_cnt so it will be freed after the callback returns and allocate -- * new entry. -- */ -- cache->ref_cnt--; -- cache = alloc_entry(resolver); - } else { - /* Remove the entry before resetting its pool (see ticket #1710) */ - pj_hash_set(NULL, resolver->hrescache, key, sizeof(*key), hval, NULL); - -- /* Reset cache to avoid bloated cache pool */ -- reset_entry(&cache); -+ if (cache->ref_cnt > 1) { -+ /* When cache entry is being used by callback (to app), -+ * just decrement ref_cnt so it will be freed after -+ * the callback returns and allocate new entry. -+ */ -+ cache->ref_cnt--; -+ cache = alloc_entry(resolver); -+ } else { -+ /* Reset cache to avoid bloated cache pool */ -+ reset_entry(&cache); -+ } - } - - /* Duplicate the packet. --- -1.7.9.5 - Deleted: branches/1.0/package/pjsip/pjsip-0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip-0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -1,33 +0,0 @@ -From 732a997010d60fe93a7453e809672386749b0afc Mon Sep 17 00:00:00 2001 -From: Richard Mudgett <rmu...@di...> -Date: Tue, 1 Nov 2016 12:55:31 -0500 -Subject: [PATCH] r5477 svn backport Fix DNS write on freed memory. - -Re #1974: Fix DNS write on freed memory. -Thanks to Richard Mudgett for the patch. ---- - pjlib-util/src/pjlib-util/resolver.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c -index 52b7655..365772e 100644 ---- a/pjlib-util/src/pjlib-util/resolver.c -+++ b/pjlib-util/src/pjlib-util/resolver.c -@@ -908,7 +908,13 @@ PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver, - /* Must return PJ_SUCCESS */ - status = PJ_SUCCESS; - -- goto on_return; -+ /* -+ * We cannot write to *p_query after calling cb because what -+ * p_query points to may have been freed by cb. -+ * Refer to ticket #1974. -+ */ -+ pj_mutex_unlock(resolver->mutex); -+ return status; - } - - /* At this point, we have a cached entry, but this entry has expired. --- -1.7.9.5 - Added: branches/1.0/package/pjsip/pjsip-0010-evsub-Add-pjsip_evsub_set_uas_timeout.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0010-evsub-Add-pjsip_evsub_set_uas_timeout.patch (rev 0) +++ branches/1.0/package/pjsip/pjsip-0010-evsub-Add-pjsip_evsub_set_uas_timeout.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -0,0 +1,84 @@ +From b7af9e6639f29feb4db6d0866c98e552b025ec96 Mon Sep 17 00:00:00 2001 +From: George Joseph <gj...@di...> +Date: Mon, 6 Feb 2017 15:39:29 -0700 +Subject: [PATCH] evsub: Add pjsip_evsub_set_uas_timeout. + +A UAS which needs to recreate incoming subscriptions from a persistent +store can call pjsip_dlg_create_uas_and_inc_lock and +pjsip_evsub_create_uas as long as they've persisted the +correct data but since the timer is triggered by an incoming subscribe, +it's never set and the subscription never expires. + +* Add pjsip_evsub_set_uas_timeout which is just a wrapper around + evsub.c:set_timeout(sub, TIMER_TYPE_UAS_TIMEOUT, seconds) + +* Also, fixed copy-paste error in pjsip_sub_state_hdr_print when + printing retry-after parameter. +--- + pjsip/include/pjsip-simple/evsub.h | 14 ++++++++++++++ + pjsip/src/pjsip-simple/evsub.c | 10 ++++++++++ + pjsip/src/pjsip-simple/evsub_msg.c | 2 +- + 3 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/pjsip/include/pjsip-simple/evsub.h b/pjsip/include/pjsip-simple/evsub.h +index 82e0a7c..45e6411 100644 +--- a/pjsip/include/pjsip-simple/evsub.h ++++ b/pjsip/include/pjsip-simple/evsub.h +@@ -511,6 +511,20 @@ PJ_DEF(pj_status_t) pjsip_evsub_add_ref(pjsip_evsub *sub); + PJ_DEF(pj_status_t) pjsip_evsub_dec_ref(pjsip_evsub *sub); + + ++/** ++ * Sets, resets or cancels the UAS subscription timeout. ++ * ++ * If there is an existing timer, it is cancelled before any ++ * other action. ++ * ++ * A timeout of 0 is ignored except that any existing timer ++ * is cancelled. ++ * ++ * @param sub The server subscription instance. ++ * @param seconds The new timeout. ++ */ ++PJ_DEF(void) pjsip_evsub_set_uas_timeout(pjsip_evsub *sub, pj_int32_t seconds); ++ + + PJ_END_DECL + +diff --git a/pjsip/src/pjsip-simple/evsub.c b/pjsip/src/pjsip-simple/evsub.c +index 3fe4b49..6918a8c 100644 +--- a/pjsip/src/pjsip-simple/evsub.c ++++ b/pjsip/src/pjsip-simple/evsub.c +@@ -530,6 +530,16 @@ static void set_timer( pjsip_evsub *sub, int timer_id, + + + /* ++ * Set event subscription UAS timout. ++ */ ++PJ_DEF(void) pjsip_evsub_set_uas_timeout(pjsip_evsub *sub, pj_int32_t seconds) ++{ ++ PJ_ASSERT_RETURN(sub != NULL, PJ_EINVAL); ++ set_timer(sub, TIMER_TYPE_UAS_TIMEOUT, seconds); ++} ++ ++ ++/* + * Destructor. + */ + static void evsub_on_destroy(void *obj) +diff --git a/pjsip/src/pjsip-simple/evsub_msg.c b/pjsip/src/pjsip-simple/evsub_msg.c +index b44a715..b37db1c 100644 +--- a/pjsip/src/pjsip-simple/evsub_msg.c ++++ b/pjsip/src/pjsip-simple/evsub_msg.c +@@ -179,7 +179,7 @@ static int pjsip_sub_state_hdr_print(pjsip_sub_state_hdr *hdr, + } + if (hdr->retry_after >= 0) { + pj_memcpy(p, ";retry-after=", 13); +- p += 9; ++ p += 13; + printed = pj_utoa(hdr->retry_after, p); + p += printed; + } +-- +2.9.3 + Added: branches/1.0/package/pjsip/pjsip-0011-r5554-svn-backport-Increase-SENDER_WIDTH-column-size.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0011-r5554-svn-backport-Increase-SENDER_WIDTH-column-size.patch (rev 0) +++ branches/1.0/package/pjsip/pjsip-0011-r5554-svn-backport-Increase-SENDER_WIDTH-column-size.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -0,0 +1,77 @@ +From df1ceb301c8a17969c467e3cf00246cfc28d1732 Mon Sep 17 00:00:00 2001 +From: Richard Mudgett <rmu...@di...> +Date: Mon, 20 Feb 2017 12:19:05 -0600 +Subject: [PATCH 1/5] r5554 svn backport Increase SENDER_WIDTH column size for + 64-bit systems. + +Re #1994 (misc): Make the log's sender and thread width a compile-time configurable setting. + +Thanks to Richard Mudgett for the suggestion. +--- + pjlib/include/pj/config.h | 27 +++++++++++++++++++++++++++ + pjlib/src/pj/log.c | 4 ++-- + 2 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/pjlib/include/pj/config.h b/pjlib/include/pj/config.h +index 079d69b..3523f50 100644 +--- a/pjlib/include/pj/config.h ++++ b/pjlib/include/pj/config.h +@@ -472,6 +472,33 @@ + #endif + + /** ++ * Log sender width. ++ * ++ * Default: 22 (for 64-bit machines), 14 otherwise ++ */ ++#ifndef PJ_LOG_SENDER_WIDTH ++# if PJ_HAS_STDINT_H ++# include <stdint.h> ++# if (UINTPTR_MAX == 0xffffffffffffffff) ++# define PJ_LOG_SENDER_WIDTH 22 ++# else ++# define PJ_LOG_SENDER_WIDTH 14 ++# endif ++# else ++# define PJ_LOG_SENDER_WIDTH 14 ++# endif ++#endif ++ ++/** ++ * Log thread name width. ++ * ++ * Default: 12 ++ */ ++#ifndef PJ_LOG_THREAD_WIDTH ++# define PJ_LOG_THREAD_WIDTH 12 ++#endif ++ ++/** + * Colorfull terminal (for logging etc). + * + * Default: 1 +diff --git a/pjlib/src/pj/log.c b/pjlib/src/pj/log.c +index 293ad46..cf7ac37 100644 +--- a/pjlib/src/pj/log.c ++++ b/pjlib/src/pj/log.c +@@ -380,7 +380,7 @@ PJ_DEF(void) pj_log( const char *sender, int level, + pre += pj_utoa_pad(ptime.msec, pre, 3, '0'); + } + if (log_decor & PJ_LOG_HAS_SENDER) { +- enum { SENDER_WIDTH = 14 }; ++ enum { SENDER_WIDTH = PJ_LOG_SENDER_WIDTH }; + pj_size_t sender_len = strlen(sender); + if (pre!=log_buffer) *pre++ = ' '; + if (sender_len <= SENDER_WIDTH) { +@@ -395,7 +395,7 @@ PJ_DEF(void) pj_log( const char *sender, int level, + } + } + if (log_decor & PJ_LOG_HAS_THREAD_ID) { +- enum { THREAD_WIDTH = 12 }; ++ enum { THREAD_WIDTH = PJ_LOG_THREAD_WIDTH }; + const char *thread_name = pj_thread_get_name(pj_thread_this()); + pj_size_t thread_len = strlen(thread_name); + *pre++ = ' '; +-- +2.7.4 + Added: branches/1.0/package/pjsip/pjsip-0013-r5559-svn-backport-Fix-to-resolve-DNS-SRV-crashes.patch =================================================================== --- branches/1.0/package/pjsip/pjsip-0013-r5559-svn-backport-Fix-to-resolve-DNS-SRV-crashes.patch (rev 0) +++ branches/1.0/package/pjsip/pjsip-0013-r5559-svn-backport-Fix-to-resolve-DNS-SRV-crashes.patch 2017-04-05 16:39:15 UTC (rev 8257) @@ -0,0 +1,112 @@ +From d9d52f005f6d0242ea84e7c59ad6b25f052c8485 Mon Sep 17 00:00:00 2001 +From: Richard Mudgett <rmu...@di...> +Date: Mon, 20 Feb 2017 12:05:32 -0600 +Subject: [PATCH 3/5] r5559 svn backport Fix to resolve DNS SRV crashes. + +Re #1994 (misc): Don't try to resolve a DNS SRV query that is already considered resolved. +Thanks to Richard Mudgett for the patch. + +srv_resolver.c: Don't try to send query if already considered resolved. + +* In resolve_hostnames() don't try to resolve a query that is already +considered resolved. + +* In resolve_hostnames() fix DNS typo in comments. + +* In build_server_entries() move a common expression assigning to cnt +earlier. + +sip_transport.c: Fix tdata object name to actually contain the pointer. + +It helps if the logs referencing a tdata object buffer actually have +a name that includes the correct pointer as part of the name. Also +since the tdata has its own pool it helps if any logs referencing the +pool have the same name as the tdata object. This change brings tdata +logging in line with how tsx objects are named. +--- + pjlib-util/src/pjlib-util/srv_resolver.c | 18 +++++++++++++----- + pjsip/src/pjsip/sip_transport.c | 3 ++- + 2 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/pjlib-util/src/pjlib-util/srv_resolver.c b/pjlib-util/src/pjlib-util/srv_resolver.c +index 8a2f7e1..84ad3f6 100644 +--- a/pjlib-util/src/pjlib-util/srv_resolver.c ++++ b/pjlib-util/src/pjlib-util/srv_resolver.c +@@ -407,8 +407,9 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, + for (i=0; i<query_job->srv_cnt; ++i) { + pj_in_addr addr; + pj_in6_addr addr6; ++ unsigned cnt = query_job->srv[i].addr_cnt; + +- if (query_job->srv[i].addr_cnt != 0) { ++ if (cnt != 0) { + /* IP address already resolved */ + continue; + } +@@ -417,7 +418,6 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, + pj_inet_pton(pj_AF_INET(), &query_job->srv[i].target_name, + &addr) == PJ_SUCCESS) + { +- unsigned cnt = query_job->srv[i].addr_cnt; + pj_sockaddr_init(pj_AF_INET(), &query_job->srv[i].addr[cnt], + NULL, query_job->srv[i].port); + query_job->srv[i].addr[cnt].ipv4.sin_addr = addr; +@@ -427,7 +427,6 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, + pj_inet_pton(pj_AF_INET6(), &query_job->srv[i].target_name, + &addr6) == PJ_SUCCESS) + { +- unsigned cnt = query_job->srv[i].addr_cnt; + pj_sockaddr_init(pj_AF_INET6(), &query_job->srv[i].addr[cnt], + NULL, query_job->srv[i].port); + query_job->srv[i].addr[cnt].ipv6.sin6_addr = addr6; +@@ -480,6 +479,15 @@ static pj_status_t resolve_hostnames(pj_dns_srv_async_query *query_job) + for (i=0; i<query_job->srv_cnt; ++i) { + struct srv_target *srv = &query_job->srv[i]; + ++ if (srv->addr_cnt != 0) { ++ /* ++ * This query is already counted as resolved because of the ++ * additional records in the SRV response or the target name ++ * is an IP address exception in build_server_entries(). ++ */ ++ continue; ++ } ++ + PJ_LOG(5, (query_job->objname, + "Starting async DNS A query_job for %.*s", + (int)srv->target_name.slen, +@@ -493,7 +501,7 @@ static pj_status_t resolve_hostnames(pj_dns_srv_async_query *query_job) + + status = PJ_SUCCESS; + +- /* Start DNA A record query */ ++ /* Start DNS A record query */ + if ((query_job->option & PJ_DNS_SRV_RESOLVE_AAAA_ONLY) == 0) + { + if ((query_job->option & PJ_DNS_SRV_RESOLVE_AAAA) != 0) { +@@ -511,7 +519,7 @@ static pj_status_t resolve_hostnames(pj_dns_srv_async_query *query_job) + &srv->common, &srv->q_a); + } + +- /* Start DNA AAAA record query */ ++ /* Start DNS AAAA record query */ + if (status == PJ_SUCCESS && + (query_job->option & PJ_DNS_SRV_RESOLVE_AAAA) != 0) + { +diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c +index d672a6d..6dd14d1 100644 +--- a/pjsip/src/pjsip/sip_transport.c ++++ b/pjsip/src/pjsip/sip_transport.c +@@ -422,7 +422,8 @@ PJ_DEF(pj_status_t) pjsip_tx_data_create( pjsip_tpmgr *mgr, + tdata = PJ_POOL_ZALLOC_T(pool, pjsip_tx_data); + tdata->pool = pool; + tdata->mgr = mgr; +- pj_memcpy(tdata->obj_name, pool->obj_name, PJ_MAX_OBJ_NAME); ++ pj_ansi_snprintf(tdata->obj_name, sizeof(tdata->obj_name), "tdta%p", tdata); ++ pj_memcpy(pool->obj_name, tdata->obj_name, sizeof(pool->obj_name)); + + status = pj_atomic_create(tdata->pool, 0, &tdata->ref_cnt); + if (status != PJ_SUCCESS) { +-- +2.7.4 + Modified: branches/1.0/package/pjsip/pjsip.mk =================================================================== --- branches/1.0/package/pjsip/pjsip.mk 2017-04-02 13:30:34 UTC (rev 8256) +++ branches/1.0/package/pjsip/pjsip.mk 2017-04-05 16:39:15 UTC (rev 8257) @@ -4,13 +4,11 @@ # ################################################################################ -PJSIP_VERSION = 2.5.5 +PJSIP_VERSION = 2.6 PJSIP_SOURCE = pjproject-$(PJSIP_VERSION).tar.bz2 PJSIP_SITE = http://www.pjsip.org/release/$(PJSIP_VERSION) PJSIP_INSTALL_STAGING = YES -PJSIP_DEPENDENCIES = libsrtp - define PJSIP_CUSTOM_CONFIG cp package/pjsip/asterisk-config_site.h $(@D)/pjlib/include/pj/config_site.h endef @@ -31,7 +29,6 @@ --disable-g722-codec \ --disable-g7221-codec \ --disable-opencore-amr \ - --disable-webrtc \ --disable-silk \ --disable-opus \ --disable-video \ @@ -46,7 +43,8 @@ --disable-openh264 \ --disable-ipp \ --without-external-pa \ - --with-external-srtp + --without-external-srtp \ + --without-external-webrtc ifeq ($(BR2_PACKAGE_OPENSSL),y) PJSIP_CONF_OPT += --with-ssl=$(STAGING_DIR)/usr This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |