diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2015-09-11 09:40:11 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2015-09-11 09:40:11 +0000 |
commit | 82979e3f4c5b4b327e8ddf43f5206ce26cbc6b08 (patch) | |
tree | 8c53e4401322becd819412b12adbf4308205b210 /pjsip | |
parent | 7ebeb75488bb29faab2197c260689b5aca48d758 (diff) |
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
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip-simple/evsub.c | 8 |
1 files changed, 8 insertions, 0 deletions
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; |