Change channel state on local channels for busy,answer,ring.
authorJeff Peeler <jpeeler@digium.com>
Wed, 10 Feb 2010 16:47:37 +0000 (16:47 +0000)
committerJeff Peeler <jpeeler@digium.com>
Wed, 10 Feb 2010 16:47:37 +0000 (16:47 +0000)
commit556260ad93d5bf8a247e4953ac348833278c003a
tree9166d0ca4ae61ecaf7791b73960f47a6a41aead3
parentc8abb42e6a07b2b2efbf5d5597c90c78b8513dca
Change channel state on local channels for busy,answer,ring.

Previously local channels channel state never changed. This became problematic
when the state of the other side of the local channel was lost, for example
during a masquerade. Changing the state of the local channel allows for the
scenario to be detected when the channel state is set to ringing, but the peer
isn't ringing. The specific problem scenario is described in 164201. Although
this was noted on one of the issues, here is the tested dialplan verified to
work:

exten => 9700,1,Dial(Local/*9700@default&Local/0009700@default)

exten => *9700,1,Set(GLOBAL(TESTCHAN)=${CHANNEL:0:${MATH(${LEN(${CHANNEL})}-1):0:2}}1)
exten => *9700,n,wait(3) ;3 works, 1 did not
exten => *9700,n,Dial(SIP/5001)

exten => 0009700,1,Wait(1) ;1 works, 3 did not
exten => 0009700,n,ChannelRedirect(${TESTCHAN},parkedcalls,701,1)

(closes issue #14992)
Reported by: davidw

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