diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index b50b3a8e46b0755238e87e342d3172a1b190f87c..8647316d2347f48abe190c814ab2d66e3459f76d 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -1424,9 +1424,10 @@ static void moh_class_destructor(void *obj)
 	while ((member = AST_LIST_REMOVE_HEAD(&class->members, list))) {
 		free(member);
 	}
-	
+
 	if (class->thread) {
 		pthread_cancel(class->thread);
+		pthread_join(class->thread, NULL);
 		class->thread = AST_PTHREADT_NULL;
 	}