[svn-commits] file: trunk r369703 - in /trunk/res/pjproject/pjnath: include/pjnath/ src/pjn...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Jul 6 09:32:34 CDT 2012


Author: file
Date: Fri Jul  6 09:32:30 2012
New Revision: 369703

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=369703
Log:
Import revision 4196 from pjproject trunk. Fix a crash issue when starting ICE connectivity checks and immediately destroying the ICE session. This was exposed by the SIP CCSS test.

Full fix for this issue will be worked on as a medium to long term roadmap item.

pjroject issue viewable at https://trac.pjsip.org/repos/ticket/1548

Modified:
    trunk/res/pjproject/pjnath/include/pjnath/ice_session.h
    trunk/res/pjproject/pjnath/src/pjnath/ice_session.c

Modified: trunk/res/pjproject/pjnath/include/pjnath/ice_session.h
URL: http://svnview.digium.com/svn/asterisk/trunk/res/pjproject/pjnath/include/pjnath/ice_session.h?view=diff&rev=369703&r1=369702&r2=369703
==============================================================================
--- trunk/res/pjproject/pjnath/include/pjnath/ice_session.h (original)
+++ trunk/res/pjproject/pjnath/include/pjnath/ice_session.h Fri Jul  6 09:32:30 2012
@@ -619,6 +619,7 @@
     pj_uint8_t		*prefs;			    /**< Type preference.   */
     pj_bool_t		 is_nominating;		    /**< Nominating stage   */
     pj_bool_t		 is_complete;		    /**< Complete?	    */
+    pj_bool_t		 is_destroying;		    /**< Destroy is called  */
     pj_status_t		 ice_status;		    /**< Error status.	    */
     pj_timer_entry	 timer;			    /**< ICE timer.	    */
     pj_ice_sess_cb	 cb;			    /**< Callback.	    */

Modified: trunk/res/pjproject/pjnath/src/pjnath/ice_session.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/pjproject/pjnath/src/pjnath/ice_session.c?view=diff&rev=369703&r1=369702&r2=369703
==============================================================================
--- trunk/res/pjproject/pjnath/src/pjnath/ice_session.c (original)
+++ trunk/res/pjproject/pjnath/src/pjnath/ice_session.c Fri Jul  6 09:32:30 2012
@@ -455,6 +455,8 @@
 	LOG4((ice->obj_name, "Destroying ICE session"));
     }
 
+    ice->is_destroying = PJ_TRUE;
+
     /* Let other callbacks finish */
     if (ice->mutex) {
 	pj_mutex_lock(ice->mutex);
@@ -1840,7 +1842,15 @@
     ice = td->ice;
     clist = td->clist;
 
+    if (ice->is_destroying)
+	return PJ_SUCCESS;
+
     pj_mutex_lock(ice->mutex);
+
+    if (ice->is_destroying) {
+	pj_mutex_unlock(ice->mutex);
+	return PJ_SUCCESS;
+    }
 
     /* Set timer ID to FALSE first */
     te->id = PJ_FALSE;




More information about the svn-commits mailing list