summaryrefslogtreecommitdiff
path: root/res/res_agi.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2013-07-08 19:19:55 +0000
committerJoshua Colp <jcolp@digium.com>2013-07-08 19:19:55 +0000
commit7c044acbd90640321db8b78ed5a3b0ab8bc7844b (patch)
tree18b0f1aeee1782b3ef22ba3d5c62c773fc9c346d /res/res_agi.c
parentb698d80d4b90c6ae51285175a39d1b2b777afd00 (diff)
Refactor operations to access the stasis cache instead of objects directly when retrieving information.
(closes issue ASTERISK-21883) Review: https://reviewboard.asterisk.org/r/2645/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_agi.c')
-rw-r--r--res/res_agi.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/res/res_agi.c b/res/res_agi.c
index eff753e5c..1e22ff98f 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -2753,16 +2753,18 @@ static int handle_setcallerid(struct ast_channel *chan, AGI *agi, int argc, cons
static int handle_channelstatus(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
{
- struct ast_channel *c;
if (argc == 2) {
/* no argument: supply info on the current channel */
ast_agi_send(agi->fd, chan, "200 result=%d\n", ast_channel_state(chan));
return RESULT_SUCCESS;
} else if (argc == 3) {
+ RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
+
/* one argument: look for info on the specified channel */
- if ((c = ast_channel_get_by_name(argv[2]))) {
- ast_agi_send(agi->fd, chan, "200 result=%d\n", ast_channel_state(c));
- c = ast_channel_unref(c);
+ if ((msg = stasis_cache_get(ast_channel_topic_all_cached_by_name(), ast_channel_snapshot_type(), argv[2]))) {
+ struct ast_channel_snapshot *snapshot = stasis_message_data(msg);
+
+ ast_agi_send(agi->fd, chan, "200 result=%d\n", snapshot->state);
return RESULT_SUCCESS;
}
/* if we get this far no channel name matched the argument given */