diff --git a/main/stasis_system.c b/main/stasis_system.c index ee4f6bca5bc885e78e0293a2ef6e404cdcba7b82..961a2b06ac54ea8de79eaba92237a3ea55c4baa0 100644 --- a/main/stasis_system.c +++ b/main/stasis_system.c @@ -117,9 +117,9 @@ STASIS_MESSAGE_TYPE_DEFN(ast_cluster_discovery_type); void ast_system_publish_registry(const char *channeltype, const char *username, const char *domain, const char *status, const char *cause) { - RAII_VAR(struct ast_json *, registry, NULL, ast_json_unref); - RAII_VAR(struct ast_json_payload *, payload, NULL, ao2_cleanup); - RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup); + struct ast_json *registry; + struct ast_json_payload *payload; + struct stasis_message *message; if (!ast_system_registry_type()) { return; @@ -133,15 +133,20 @@ void ast_system_publish_registry(const char *channeltype, const char *username, "status", status, "cause", S_OR(cause, "")); - if (!(payload = ast_json_payload_create(registry))) { + payload = ast_json_payload_create(registry); + ast_json_unref(registry); + if (!payload) { return; } - if (!(message = stasis_message_create(ast_system_registry_type(), payload))) { + message = stasis_message_create(ast_system_registry_type(), payload); + ao2_ref(payload, -1); + if (!message) { return; } stasis_publish(ast_system_topic(), message); + ao2_ref(message, -1); } static struct ast_manager_event_blob *system_registry_to_ami(struct stasis_message *message)