diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 3a22ec19d41a6d48dac3e3d2be7e5589a3ff2122..7daf4db15e02a1720a07da1b4551dee4ff2e6585 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -234,8 +234,9 @@ static int reload(void);
 #define mohclass_unref(class,string) _mohclass_unref(class, string, __FILE__,__LINE__,__PRETTY_FUNCTION__)
 static struct mohclass *_mohclass_unref(struct mohclass *class, const char *tag, const char *file, int line, const char *funcname)
 {
-	struct mohclass *dup;
-	if ((dup = ao2_find(mohclasses, class, OBJ_POINTER))) {
+	struct mohclass *dup = ao2_callback(mohclasses, OBJ_POINTER, ao2_match_by_addr, class);
+
+	if (dup) {
 		if (__ao2_ref_debug(dup, -1, (char *) tag, (char *) file, line, funcname) == 2) {
 			FILE *ref = fopen("/tmp/refs", "a");
 			if (ref) {
@@ -248,7 +249,7 @@ static struct mohclass *_mohclass_unref(struct mohclass *class, const char *tag,
 			ao2_ref(class, -1);
 		}
 	} else {
-		ao2_t_ref(class, -1, (char *) tag);
+		__ao2_ref_debug(class, -1, (char *) tag, (char *) file, line, funcname);
 	}
 	return NULL;
 }