diff options
Diffstat (limited to 'main/manager_channels.c')
-rw-r--r-- | main/manager_channels.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c index 3aaab92d0..552adc763 100644 --- a/main/manager_channels.c +++ b/main/manager_channels.c @@ -408,6 +408,7 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( { struct ast_str *out = ast_str_create(1024); int res = 0; + char *caller_name, *connected_name; if (!out) { return NULL; @@ -418,6 +419,9 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( return NULL; } + caller_name = ast_escape_c_alloc(snapshot->caller_name); + connected_name = ast_escape_c_alloc(snapshot->connected_name); + res = ast_str_set(&out, 0, "%sChannel: %s\r\n" "%sChannelState: %u\r\n" @@ -436,9 +440,9 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( prefix, snapshot->state, prefix, ast_state2str(snapshot->state), prefix, S_OR(snapshot->caller_number, "<unknown>"), - prefix, S_OR(snapshot->caller_name, "<unknown>"), + prefix, S_OR(caller_name, "<unknown>"), prefix, S_OR(snapshot->connected_number, "<unknown>"), - prefix, S_OR(snapshot->connected_name, "<unknown>"), + prefix, S_OR(connected_name, "<unknown>"), prefix, snapshot->language, prefix, snapshot->accountcode, prefix, snapshot->context, @@ -448,18 +452,26 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( if (!res) { ast_free(out); + ast_free(caller_name); + ast_free(connected_name); return NULL; } if (snapshot->manager_vars) { struct ast_var_t *var; + char *val; AST_LIST_TRAVERSE(snapshot->manager_vars, var, entries) { + val = ast_escape_c_alloc(var->value); ast_str_append(&out, 0, "%sChanVariable: %s=%s\r\n", prefix, - var->name, var->value); + var->name, S_OR(val, "")); + ast_free(val); } } + ast_free(caller_name); + ast_free(connected_name); + return out; } @@ -556,6 +568,9 @@ static struct ast_manager_event_blob *channel_new_callerid( struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) { + struct ast_manager_event_blob *res; + char *callerid; + /* No NewCallerid event on cache clear or first event */ if (!old_snapshot || !new_snapshot) { return NULL; @@ -565,11 +580,19 @@ static struct ast_manager_event_blob *channel_new_callerid( return NULL; } - return ast_manager_event_blob_create( + if (!(callerid = ast_escape_c_alloc( + ast_describe_caller_presentation(new_snapshot->caller_pres)))) { + return NULL; + } + + res = ast_manager_event_blob_create( EVENT_FLAG_CALL, "NewCallerid", "CID-CallingPres: %d (%s)\r\n", new_snapshot->caller_pres, - ast_describe_caller_presentation(new_snapshot->caller_pres)); + callerid); + + ast_free(callerid); + return res; } static struct ast_manager_event_blob *channel_new_connected_line( |