diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 41002154709b57f385c6657d8f7a9cb984088f98..45280bf746f12f3b6e6602e487aeb8d61ff6090a 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -1589,6 +1589,11 @@ static void moh_class_destructor(void *obj)
 		class->filearray = NULL;
 	}
 
+	if (class->timer) {
+		ast_timer_close(class->timer);
+		class->timer = NULL;
+	}
+
 	/* Finally, collect the exit status of the monitor thread */
 	if (tid > 0) {
 		pthread_join(tid, NULL);