Refactor code and fix a reference leak
authorKinsey Moore <kmoore@digium.com>
Fri, 31 May 2013 19:00:51 +0000 (19:00 +0000)
committerKinsey Moore <kmoore@digium.com>
Fri, 31 May 2013 19:00:51 +0000 (19:00 +0000)
Refactor some channel blob publishing code to use
ast_channel_publish_blob now that it is available and fix a JSON
reference leak that was occurring during varset publishing.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@390317 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_userevent.c
main/pbx.c
main/stasis_channels.c

index fe037e2..e0dafbb 100644 (file)
@@ -76,7 +76,6 @@ static int userevent_exec(struct ast_channel *chan, const char *data)
                AST_APP_ARG(extra)[100];
        );
        RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
-       RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
 
        if (ast_strlen_zero(data)) {
                ast_log(LOG_WARNING, "UserEvent requires an argument (eventname,optional event body)\n");
@@ -115,14 +114,7 @@ static int userevent_exec(struct ast_channel *chan, const char *data)
                }
        }
 
-       msg = ast_channel_blob_create(
-               chan, ast_channel_user_event_type(), blob);
-       if (!msg) {
-               return -1;
-       }
-
-       stasis_publish(ast_channel_topic(chan), msg);
-
+       ast_channel_publish_blob(chan, ast_channel_user_event_type(), blob);
        return 0;
 }
 
index 97cd1d1..98871e0 100644 (file)
@@ -5776,7 +5776,6 @@ void ast_pbx_h_exten_run(struct ast_channel *chan, const char *context)
 static void publish_hangup_handler_message(const char *action, struct ast_channel *chan, const char *handler)
 {
        RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
-       RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup);
 
        blob = ast_json_pack("{s: s, s: s}",
                        "type", action,
@@ -5785,12 +5784,7 @@ static void publish_hangup_handler_message(const char *action, struct ast_channe
                return;
        }
 
-       message = ast_channel_blob_create(chan, ast_channel_hangup_handler_type(), blob);
-       if (!message) {
-               return;
-       }
-
-       stasis_publish(ast_channel_topic(chan), message);
+       ast_channel_publish_blob(chan, ast_channel_hangup_handler_type(), blob);
 }
 
 int ast_pbx_hangup_handler_run(struct ast_channel *chan)
index 14f2650..52b6ef4 100644 (file)
@@ -519,7 +519,6 @@ void ast_channel_publish_snapshot(struct ast_channel *chan)
 
 void ast_channel_publish_varset(struct ast_channel *chan, const char *name, const char *value)
 {
-       RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
        RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
 
        ast_assert(name != NULL);
@@ -533,14 +532,7 @@ void ast_channel_publish_varset(struct ast_channel *chan, const char *name, cons
                return;
        }
 
-       msg = ast_channel_blob_create(chan, ast_channel_varset_type(),
-               ast_json_ref(blob));
-
-       if (!msg) {
-               return;
-       }
-
-       publish_message_for_channel_topics(msg, chan);
+       ast_channel_publish_blob(chan, ast_channel_varset_type(), blob);
 }
 
 void ast_publish_channel_state(struct ast_channel *chan)