Merged revisions 164201 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Mon, 15 Dec 2008 14:40:24 +0000 (14:40 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 15 Dec 2008 14:40:24 +0000 (14:40 +0000)
commitc9eb01c8997be17d8384306f484c224a9383230e
tree7f7c9a6e046161a77148a4e89844dab44da2eff5
parentbca058070e5138368900edc94141a6f01a84e580
Merged revisions 164201 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r164201 | russell | 2008-12-15 08:31:37 -0600 (Mon, 15 Dec 2008) | 31 lines

Handle a case where a call can be bridged to a channel that is still ringing.

The issue that was reported was about a case where a RINGING channel got
redirected to an extension to pick up a call from parking.  Once the parked
call got taken out of parking, it heard silence until the other side answered.
Ideally, the caller that was parked would get a ringing indication.  This patch
fixes this case so that the caller receives ringback once it comes out of
parking until the other side answers.

The fixes are:

 - Make sure we remember that a channel was an outgoing channel when doing
   a masquerade.  This prevents an erroneous ast_answer() call on the channel,
   which causes a bogus 200 OK to be sent in the case of SIP.

 - Add some additional comments to explain related parts of code.

 - Update the handling of the ast_channel visible_indication field.  Storing
   values that are not stateful is pointless.  Control frames that are events
   or commands should be ignored.

 - When a bridge first starts, check to see if the peer channel needs to be
   given ringing indication because the calling side is still ringing.

 - Rework ast_indicate_data() a bit for the sake of readability.

(closes issue #13747)
Reported by: davidw
Tested by: russell
Review: http://reviewboard.digium.com/r/90/

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@164203 65c4cc65-6c06-0410-ace0-fbb531ad65f3
main/channel.c
main/features.c