diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/patches/pjproject-fix.patch | 21 | ||||
-rw-r--r-- | gnu/packages/telephony.scm | 2 |
2 files changed, 23 insertions, 0 deletions
diff --git a/gnu/packages/patches/pjproject-fix.patch b/gnu/packages/patches/pjproject-fix.patch new file mode 100644 index 0000000000..1939943333 --- /dev/null +++ b/gnu/packages/patches/pjproject-fix.patch @@ -0,0 +1,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) + { diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 62bd8fd548..7ee9bdd9ab 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -655,6 +655,8 @@ calls and messages") (url "https://github.com/pjsip/pjproject.git") (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4"))) (modules '((guix build utils))) + (patches + (search-patches "pjproject-fix.patch")) (snippet '(begin (let ((third-party-directories |