summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2016-01-05 14:34:22 +0000
committerRiza Sulistyo <riza@teluu.com>2016-01-05 14:34:22 +0000
commit8b7500b4b8cf93c54ea4a1c70eaa6d04a86e51ea (patch)
tree25ee5682e22d7a0321ab693bf09d4efe9e35f751
parentad13bc1a071c4cae52a0ce897551161e6f0471fa (diff)
Re #1903: Fix crash when cleaning STUN response cache.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5233 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjnath/src/pjnath/stun_session.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/pjnath/src/pjnath/stun_session.c b/pjnath/src/pjnath/stun_session.c
index e7dfa582..d7eb2dbb 100644
--- a/pjnath/src/pjnath/stun_session.c
+++ b/pjnath/src/pjnath/stun_session.c
@@ -209,15 +209,25 @@ static void on_cache_timeout(pj_timer_heap_t *timer_heap,
struct pj_timer_entry *entry)
{
pj_stun_tx_data *tdata;
+ pj_stun_session *sess;
PJ_UNUSED_ARG(timer_heap);
entry->id = PJ_FALSE;
tdata = (pj_stun_tx_data*) entry->user_data;
+ sess = tdata->sess;
+
+ pj_grp_lock_acquire(sess->grp_lock);
+ if (sess->is_destroying) {
+ pj_grp_lock_release(sess->grp_lock);
+ return;
+ }
PJ_LOG(5,(SNAME(tdata->sess), "Response cache deleted"));
pj_list_erase(tdata);
+ pj_grp_lock_release(sess->grp_lock);
+
destroy_tdata(tdata, PJ_FALSE);
}