summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/pjproject-fix.patch
blob: 193994333357f1131e548a3252c093de0af33aee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--- a/pjsip/src/pjsip-ua/sip_inv.c	(revision 6086)
+++ b/pjsip/src/pjsip-ua/sip_inv.c	(revision 6087)
@@ -314,10 +314,16 @@
     inv->cb_called |= (1 << state);
 
-    /* Call on_state_changed() callback. */
+    /* Call on_state_changed() callback.
+     * While in the callback, can the state shift to DISCONNECTED? Perhaps
+     * yes, so better avoid premature destroy of the invite session by
+     * temporarily increase its ref counter.
+     */
+    pjsip_inv_add_ref(inv);
     if (mod_inv.cb.on_state_changed && inv->notify && !dont_notify)
 	(*mod_inv.cb.on_state_changed)(inv, e);
+    pjsip_inv_dec_ref(inv);
 
     /* Only decrement when previous state is not already DISCONNECTED */
-    if (inv->state == PJSIP_INV_STATE_DISCONNECTED &&
+    if (state == PJSIP_INV_STATE_DISCONNECTED &&
 	prev_state != PJSIP_INV_STATE_DISCONNECTED) 
     {