Files
asterisk/main
Alexei Gradinari 1589452fdc pjsip: Fix deadlock with suspend taskprocessor on masquerade
If both channels which should be masqueraded
are in the same serializer:
1st channel will be locked waiting condition 'complete'
2nd channel will be locked waiting condition 'suspended'

On heavy load system a chance that both channels will be in
the same serializer 'pjsip/distibutor' is very high.

To reproduce compile res_pjsip/pjsip_distributor.c with
DISTRIBUTOR_POOL_SIZE=1

Steps to reproduce:
1. Party A calls Party B (bridged call 'AB')
2. Party B places Party A on hold
3. Party B calls Voicemail app (non-bridged call 'BV')
4. Party B attended transfers Party A to voicemail using REFER.
5. When asterisk masquerades calls 'AB' and 'BV',
   a deadlock is happened.

This patch adds a suspension indicator to the taskprocessor.
When a session suspends/unsuspends the serializer
it sets the indicator to the appropriate state.
The session checks the suspension indicator before
suspend the serializer.

ASTERISK-26145 #close

Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b
2016-08-10 16:01:23 -04:00
..
2016-08-03 16:39:46 -04:00
2015-01-30 16:47:50 +00:00
2015-03-25 18:37:04 +00:00
2016-08-03 16:39:46 -04:00
2016-03-24 09:29:07 -05:00
2016-06-22 12:21:11 -05:00
2013-07-04 13:06:15 +00:00
2013-06-29 00:18:57 +00:00
2016-07-14 15:54:21 -05:00
2013-09-10 18:05:47 +00:00
2014-05-09 22:49:26 +00:00
2016-04-08 12:50:58 -06:00
2015-06-03 14:03:18 -05:00
2015-01-26 14:49:32 +00:00
2016-06-22 12:21:11 -05:00