Move NewCallerid, HangupRequest and SoftHangupRequest to Stasis

HangupRequest and SoftHangupRequest are now ast_channel_blob Stasis
messages, with the cause code as an optional field in the blob.

NewCallerid now simply watches for changes in the callerid information
in channel snapshots, and creates the AMI event appropriately.

Since the original NewCallerid event honored the channelvars setting
in manager.conf, the channel variables configured there had to become
a part of the channel snapshot. These are now a part of every snapshot
based event, making the configuration description "every time a
channel-oriented event is emitted" less of a lie.

There a a few other changes wrapped up in here as well.

 * When ast_channel_topic() is given NULL for a channel, it returns
   the ast_channel_topic_all() topic instead of NULL. This can clean
   up a lot of NULL checking we're doing currently.
 * The fields Cause and Cause-txt were removed from the base channel
   information and put only on the Hangup events, since those fields
   are meaningless outside of a Hangup event.
 * Removed the pipe-delimiter processing of the channelvars field,
   since that's been deprecated forever.

(closes issue ASTERISK-21096)
Review: https://reviewboard.asterisk.org/r/2405/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@383726 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
David M. Lee
2013-03-25 16:19:55 +00:00
parent d484f366f5
commit 4a6237b231
6 changed files with 518 additions and 264 deletions

View File

@@ -1385,7 +1385,7 @@ int ast_channel_internal_is_finalized(struct ast_channel *chan)
struct stasis_topic *ast_channel_topic(struct ast_channel *chan)
{
return chan->topic;
return chan ? chan->topic : ast_channel_topic_all();
}
void ast_channel_internal_setup_topics(struct ast_channel *chan)