diff options
author | Joshua Colp <jcolp@digium.com> | 2013-05-18 19:47:24 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2013-05-18 19:47:24 +0000 |
commit | 4e38a4eb6459ef79ebee61c87f144e0d5d0122eb (patch) | |
tree | e7faa017d2c0d21f6ca3f9007b27694763688204 /main/manager_channels.c | |
parent | b97c71bb1190cb41eba9081d14724bcb39d422ba (diff) |
Move origination to use the dialing API and send Stasis messages on dial begin and end.
(closes issue ASTERISK-21549)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2512/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389053 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager_channels.c')
-rw-r--r-- | main/manager_channels.c | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c index e1f918868..0cab36562 100644 --- a/main/manager_channels.c +++ b/main/manager_channels.c @@ -774,33 +774,30 @@ static void channel_dial_cb(void *data, struct stasis_subscription *sub, return; } - if (caller) { - caller_event_string = ast_manager_build_channel_state_string(caller); - if (!caller_event_string) { - return; - } - dialstatus = ast_json_string_get(ast_json_object_get(ast_multi_channel_blob_get_json(obj), "dialstatus")); - dialstring = ast_json_string_get(ast_json_object_get(ast_multi_channel_blob_get_json(obj), "dialstring")); - if (ast_strlen_zero(dialstatus)) { - manager_event(EVENT_FLAG_CALL, "DialBegin", - "%s" - "%s" - "DialString: %s\r\n", - ast_str_buffer(caller_event_string), - ast_str_buffer(peer_event_string), - S_OR(dialstring, "unknown")); - } else { - manager_event(EVENT_FLAG_CALL, "DialEnd", - "%s" - "%s" - "DialStatus: %s\r\n", - ast_str_buffer(caller_event_string), - ast_str_buffer(peer_event_string), - S_OR(dialstatus, "unknown")); - } + if (caller && !(caller_event_string = ast_manager_build_channel_state_string(caller))) { + return; + } + + dialstatus = ast_json_string_get(ast_json_object_get(ast_multi_channel_blob_get_json(obj), "dialstatus")); + dialstring = ast_json_string_get(ast_json_object_get(ast_multi_channel_blob_get_json(obj), "dialstring")); + if (ast_strlen_zero(dialstatus)) { + manager_event(EVENT_FLAG_CALL, "DialBegin", + "%s" + "%s" + "DialString: %s\r\n", + caller_event_string ? ast_str_buffer(caller_event_string) : "", + ast_str_buffer(peer_event_string), + S_OR(dialstring, "unknown")); } else { - /* TODO: If we don't have a caller, this should be treated as an Originate */ + manager_event(EVENT_FLAG_CALL, "DialEnd", + "%s" + "%s" + "DialStatus: %s\r\n", + caller_event_string ? ast_str_buffer(caller_event_string) : "", + ast_str_buffer(peer_event_string), + S_OR(dialstatus, "unknown")); } + } static void manager_channels_shutdown(void) |