summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-simple/evsub.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsip-simple/evsub.c')
-rw-r--r--pjsip/src/pjsip-simple/evsub.c8
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;