]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
manager_channels.c: Reordered ast_manager_build_channel_state_string_prefix()
authorRichard Mudgett <rmudgett@digium.com>
Wed, 31 Jan 2018 23:27:58 +0000 (17:27 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 1 Feb 2018 18:28:23 +0000 (12:28 -0600)
* Made not allocate memory if the channel snapshot is an internal channel.

* Free memory earlier when no longer needed.

Change-Id: Ia06e0c065f1bd095781aa3f4a626d58fa4d28b38

main/manager_channels.c

index 81dafd74be7e0710faa4b7b58ba53bf1cb5911e1..37269a9172bfad0e0e7b324376d27ccb6417ca1a 100644 (file)
@@ -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;
 }