diff --git a/pbx.c b/pbx.c
index 0f62e58147177d1a26ceb7e3e75248182af5e4f1..b5571aca16f2bb085f189f186246ec41330ecab9 100755
--- a/pbx.c
+++ b/pbx.c
@@ -1919,11 +1919,12 @@ int ast_extension_state_add(const char *context, const char *exten,
 			if (cblist->callback == callback) {
 				cblist->data = data;
 				ast_mutex_unlock(&hintlock);
+				return 0;
 			}
 			cblist = cblist->next;
 		}
 	
-		/* Now inserts the callback */
+		/* Now insert the callback */
 		cblist = malloc(sizeof(struct ast_state_cb));
 		if (!cblist) {
 			ast_mutex_unlock(&hintlock);