diff --git a/main/ccss.c b/main/ccss.c
index 5067751966edea49a53cdc662eee93354b2f5bd9..2a939abfdf0a0b2aec7d3c912bf8028868678a58 100644
--- a/main/ccss.c
+++ b/main/ccss.c
@@ -1028,9 +1028,9 @@ void ast_set_cc_callback_sub(struct ast_cc_config_params *config, const char * c
 
 static int cc_publish(struct stasis_message_type *message_type, int core_id, struct ast_json *extras)
 {
-	RAII_VAR(struct ast_json *, blob, 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 *blob;
+	struct ast_json_payload *payload;
+	struct stasis_message *message;
 
 	if (!message_type) {
 		return -1;
@@ -1046,121 +1046,138 @@ static int cc_publish(struct stasis_message_type *message_type, int core_id, str
 		ast_json_object_update(blob, extras);
 	}
 
-	if (!(payload = ast_json_payload_create(blob))) {
+	payload = ast_json_payload_create(blob);
+	ast_json_unref(blob);
+
+	if (!payload) {
 		return -1;
 	}
 
-	if (!(message = stasis_message_create(message_type, payload))) {
+	message = stasis_message_create(message_type, payload);
+	ao2_ref(payload, -1);
+
+	if (!message) {
 		return -1;
 	}
 
 	stasis_publish(ast_system_topic(), message);
+	ao2_ref(message, -1);
 
 	return 0;
 }
 
 static void cc_publish_available(int core_id, const char *callee, const char *service)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s, s: s}",
 		"callee", callee,
 		"service", service);
 
 	cc_publish(ast_cc_available_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_offertimerstart(int core_id, const char *caller, unsigned int expires)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s, s: i}",
 		"caller", caller,
 		"expires", expires);
 
 	cc_publish(ast_cc_offertimerstart_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_requested(int core_id, const char *caller, const char *callee)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s, s: s}",
 		"caller", caller,
 		"callee", callee);
 
 	cc_publish(ast_cc_requested_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_requestacknowledged(int core_id, const char *caller)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"caller", caller);
 
 	cc_publish(ast_cc_requestacknowledged_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_callerstopmonitoring(int core_id, const char *caller)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"caller", caller);
 
 	cc_publish(ast_cc_callerstopmonitoring_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_callerstartmonitoring(int core_id, const char *caller)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"caller", caller);
 
 	cc_publish(ast_cc_callerstartmonitoring_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_callerrecalling(int core_id, const char *caller)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"caller", caller);
 
 	cc_publish(ast_cc_callerrecalling_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_recallcomplete(int core_id, const char *caller)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"caller", caller);
 
 	cc_publish(ast_cc_recallcomplete_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_failure(int core_id, const char *caller, const char *reason)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s, s: s}",
 		"caller", caller,
 		"reason", reason);
 
 	cc_publish(ast_cc_failure_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 static void cc_publish_monitorfailed(int core_id, const char *callee)
 {
-	RAII_VAR(struct ast_json *, extras, NULL, ast_json_unref);
+	struct ast_json *extras;
 
 	extras = ast_json_pack("{s: s}",
 		"callee", callee);
 
 	cc_publish(ast_cc_monitorfailed_type(), core_id, extras);
+	ast_json_unref(extras);
 }
 
 struct cc_monitor_backend {