From 82979e3f4c5b4b327e8ddf43f5206ce26cbc6b08 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 11 Sep 2015 09:40:11 +0000 Subject: Re #1885: Fixed race condition in evsub scenario 1 (Subscription timeout vs subscription refresh). git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5177 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip-simple/evsub.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'pjsip') diff --git a/pjsip/src/pjsip-simple/evsub.c b/pjsip/src/pjsip-simple/evsub.c index 650901d8..0588d98e 100644 --- a/pjsip/src/pjsip-simple/evsub.c +++ b/pjsip/src/pjsip-simple/evsub.c @@ -628,6 +628,14 @@ static void on_timer( pj_timer_heap_t *timer_heap, pjsip_dlg_inc_lock(sub->dlg); + /* If this timer entry has just been rescheduled or cancelled + * while waiting for dialog mutex, just return (see #1885 scenario 1). + */ + if (pj_timer_entry_running(entry) || entry->id == TIMER_TYPE_NONE) { + pjsip_dlg_dec_lock(sub->dlg); + return; + } + timer_id = entry->id; entry->id = TIMER_TYPE_NONE; -- cgit v1.2.3