diff options
author | Matthew Jordan <mjordan@digium.com> | 2014-08-18 00:57:01 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2014-08-18 00:57:01 +0000 |
commit | ba5d5da60b80b1d639e06d02d7692692281d6063 (patch) | |
tree | 4ac71b2c5a6899dbf352eca2942c194b61c0347a /main/stasis_channels.c | |
parent | 6525f374dbc2198070accbca1a4594d18cc71f9c (diff) |
Improve call forwarding reporting, especially with regards to ARI.
This patch addresses a few issues:
1) The order of Dial events have been changed when performing a call forward.
The order has now been altered to
1) Dial begins dialing channel A.
2) When A forwards the call to B, we issue the dial end event to channel
A, indicating the dial is being canceled due to a forward to B.
3) When the call to channel B occurs, we then issue a new dial begin to
channel B.
2) Call forwards are now reported on the calling channel, not the peer channel.
3) AMI DialEnd events have been altered to display the extension the call is
being forwarded to when relevant.
4) You can now get the values of channel variables for channels that are not
currently in the Stasis application. This brings the retrieval of channel
variables more in line with the rest of channel read operations since they
may be performed on channels not in Stasis.
ASTERISK-24134 #close
Reported by Matt Jordan
ASTERISK-24138 #close
Reported by Matt Jordan
Patches:
forward-shenanigans.diff uploaded by Matt Jordan (License #6283)
Review: https://reviewboard.asterisk.org/r/3899
........
Merged revisions 420794 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421310 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/stasis_channels.c')
-rw-r--r-- | main/stasis_channels.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/main/stasis_channels.c b/main/stasis_channels.c index d7fbc98ab..d40b5701c 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -288,11 +288,6 @@ static void channel_blob_dtor(void *obj) ast_json_unref(event->blob); } -/*! \brief Dummy callback for receiving events */ -static void dummy_event_cb(void *data, struct stasis_subscription *sub, struct stasis_message *message) -{ -} - void ast_channel_publish_dial_forward(struct ast_channel *caller, struct ast_channel *peer, struct ast_channel *forwarded, const char *dialstring, const char *dialstatus, const char *forward) @@ -362,14 +357,7 @@ void ast_channel_publish_dial_forward(struct ast_channel *caller, struct ast_cha return; } - if (forwarded) { - struct stasis_subscription *subscription = stasis_subscribe(ast_channel_topic(peer), dummy_event_cb, NULL); - - stasis_publish(ast_channel_topic(peer), msg); - stasis_unsubscribe_and_join(subscription); - } else { - publish_message_for_channel_topics(msg, caller); - } + publish_message_for_channel_topics(msg, caller); } void ast_channel_publish_dial(struct ast_channel *caller, struct ast_channel *peer, |