diff options
Diffstat (limited to 'pjnath/src/pjnath/ice_session.c')
-rw-r--r-- | pjnath/src/pjnath/ice_session.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c index bf94e545..40e10d55 100644 --- a/pjnath/src/pjnath/ice_session.c +++ b/pjnath/src/pjnath/ice_session.c @@ -455,6 +455,8 @@ static void destroy_ice(pj_ice_sess *ice, 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,8 +1842,16 @@ static pj_status_t start_periodic_check(pj_timer_heap_t *th, 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; |