]> git.ipfire.org Git - thirdparty/asterisk.git/commit
Fix local channel chains optimizing themselves out of a call.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 4 May 2012 16:28:06 +0000 (16:28 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 4 May 2012 16:28:06 +0000 (16:28 +0000)
commit8f3c39aaff7393d522f4737085baf05aeda5fb4e
treecb064537d3ff669f15ebb71a1d1abaf7385e6f9a
parente751e565fc7e2fe4d74094391489a42b3250c83a
Fix local channel chains optimizing themselves out of a call.

* Made chan_local.c:check_bridge() check the return value of
ast_channel_masquerade().  In long chains of local channels, the
masquerade occasionally fails to get setup because there is another
masquerade already setup on an adjacent local channel in the chain.

* Made the outgoing local channel (the ;2 channel) flush one voice or
video frame per optimization attempt.

* Made sure that the outgoing local channel also does not have any frames
in its queue before the masquerade.

* Made do the masquerade immediately to minimize the chance that the
outgoing channel queue does not get any new frames added and thus
unconditionally flushed.

* Made block indication -1 (Stop tones) event when the local channel is
going to optimize itself out.  When the call is answered, a chain of local
channels pass down a -1 indication for each bridge.  This blizzard of -1
events really slows down the optimization process.

(closes issue ASTERISK-16711)
Reported by: Alec Davis
Tested by: rmudgett, Alec Davis
Review: https://reviewboard.asterisk.org/r/1894/
........

Merged revisions 365313 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@365320 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_local.c