summaryrefslogtreecommitdiff
path: root/main/manager_channels.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2013-05-18 19:47:24 +0000
committerJoshua Colp <jcolp@digium.com>2013-05-18 19:47:24 +0000
commit4e38a4eb6459ef79ebee61c87f144e0d5d0122eb (patch)
treee7faa017d2c0d21f6ca3f9007b27694763688204 /main/manager_channels.c
parentb97c71bb1190cb41eba9081d14724bcb39d422ba (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.c47
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)