Gently reduce masquerade insanity
authorDavid M. Lee <dlee@digium.com>
Mon, 14 Jan 2013 15:58:01 +0000 (15:58 +0000)
committerDavid M. Lee <dlee@digium.com>
Mon, 14 Jan 2013 15:58:01 +0000 (15:58 +0000)
commitd3bb2506a17ee210f893dd57b9dbc69f235de87e
tree6578ee28f450a1b833f90649dd910dcec09fd8ba
parenta91a2891540d72ec6653796ad7a332539e794932
Gently reduce masquerade insanity

Masquerades are an insane implementation detail within Asterisk. It generates
a number of useless and confusing events, and manipulates channels in a way
that semantically doesn't make sense. I've given a fairly thorough review of
masquerade code and its usage on the wiki at
https://wiki.asterisk.org/wiki/x/IwBRAQ.

While ultimately it makes the most sense to abandon masquerades altogether,
it will take some time to completely irradicate. Even then, there may always
be code that's not worth rewriting to get rid of the masquerade.

This patch does two things to make masquerades slightly less insane:
 * When swapping the names of the original and clone channel, only emit a
   single rename event of original -> original<ZOMBIE>. The original code
   issued three rename events to accomplish the same end.
 * In addition to swapping the names of the channels, also swap their
   uniqueid's. This allows the 'Uniqueid' field to be used as a stable
   identifier for a channel from and external interface, such as AMI.

Review: https://reviewboard.asterisk.org/r/2266/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@379023 65c4cc65-6c06-0410-ace0-fbb531ad65f3
UPGRADE.txt
include/asterisk/manager.h
main/channel.c