From: Kinsey Moore Date: Fri, 31 May 2013 19:00:51 +0000 (+0000) Subject: Refactor code and fix a reference leak X-Git-Tag: 13.0.0-beta1~1739 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1458a20e47fc1cab9a22a961bff0745f7368b447;p=thirdparty%2Fasterisk.git Refactor code and fix a reference leak 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 --- diff --git a/apps/app_userevent.c b/apps/app_userevent.c index fe037e2f98..e0dafbb9f5 100644 --- a/apps/app_userevent.c +++ b/apps/app_userevent.c @@ -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; } diff --git a/main/pbx.c b/main/pbx.c index 97cd1d1055..98871e0a09 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -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) diff --git a/main/stasis_channels.c b/main/stasis_channels.c index 14f265018a..52b6ef4ce5 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -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)