diff --git a/res/res_pjsip_exten_state.c b/res/res_pjsip_exten_state.c
index 95a40829e62e512ed4cd803055c36ff9e0380f1e..3e756134c238c01d20fb6c9ffa5ab436ef120336 100644
--- a/res/res_pjsip_exten_state.c
+++ b/res/res_pjsip_exten_state.c
@@ -729,8 +729,11 @@ static int exten_state_publisher_state_cb(const char *context, const char *exten
 		}
 
 		ao2_ref(publisher, +1);
-		AST_VECTOR_APPEND(&pub_data->pubs, publisher);
-		ast_debug(5, "'%s' will publish exten state\n", publisher->name);
+		if (AST_VECTOR_APPEND(&pub_data->pubs, publisher)) {
+			ao2_ref(publisher, -1);
+		} else {
+			ast_debug(5, "'%s' will publish exten state\n", publisher->name);
+		}
 	}
 	ao2_iterator_destroy(&publisher_iter);