diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 919dd358ba0ece45921470a7eeb4c5a83bea1c38..d6f4a05af0b151da9608f8d8f909d02129793143 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -15430,7 +15430,9 @@ static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct
 static void ast_quiet_chan(struct ast_channel *chan) 
 {
 	if (chan && chan->_state == AST_STATE_UP) {
-		if (chan->generatordata)
+		if (ast_test_flag(chan, AST_FLAG_MOH))
+			ast_moh_stop(chan);
+		else if (chan->generatordata)
 			ast_deactivate_generator(chan);
 	}
 }