summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2018-01-31 17:27:58 -0600
committerRichard Mudgett <rmudgett@digium.com>2018-02-01 12:28:32 -0600
commitbcfe172f8dcb7d1463ef0cede10323b66a0808ef (patch)
treec42857b9644d21f565da5e0bab774a9aa305df2e /main
parentf041bc7863833c2d6b90b585694132171bc27aa2 (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.c21
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;
}