diff options
author | Richard Mudgett <rmudgett@digium.com> | 2018-01-31 17:27:58 -0600 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2018-02-01 12:28:32 -0600 |
commit | bcfe172f8dcb7d1463ef0cede10323b66a0808ef (patch) | |
tree | c42857b9644d21f565da5e0bab774a9aa305df2e /main | |
parent | f041bc7863833c2d6b90b585694132171bc27aa2 (diff) |
manager_channels.c: Reordered ast_manager_build_channel_state_string_prefix()
* Made not allocate memory if the channel snapshot is an internal channel.
* Free memory earlier when no longer needed.
Change-Id: Ia06e0c065f1bd095781aa3f4a626d58fa4d28b38
Diffstat (limited to 'main')
-rw-r--r-- | main/manager_channels.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c index 81dafd74b..37269a917 100644 --- a/main/manager_channels.c +++ b/main/manager_channels.c @@ -488,16 +488,17 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( const struct ast_channel_snapshot *snapshot, const char *prefix) { - struct ast_str *out = ast_str_create(1024); - int res = 0; - char *caller_name, *connected_name; + struct ast_str *out; + char *caller_name; + char *connected_name; + int res; - if (!out) { + if (snapshot->tech_properties & AST_CHAN_TP_INTERNAL) { return NULL; } - if (snapshot->tech_properties & AST_CHAN_TP_INTERNAL) { - ast_free(out); + out = ast_str_create(1024); + if (!out) { return NULL; } @@ -534,10 +535,11 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( prefix, snapshot->uniqueid, prefix, snapshot->linkedid); + ast_free(caller_name); + ast_free(connected_name); + if (!res) { ast_free(out); - ast_free(caller_name); - ast_free(connected_name); return NULL; } @@ -553,9 +555,6 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( } } - ast_free(caller_name); - ast_free(connected_name); - return out; } |