From 7db0e604867d9ca9cbeb16b2a40ebedb43087450 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Tue, 30 Sep 2003 14:11:17 +0000
Subject: [PATCH] Minor IAX enhancments to support MusicOnHold

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1588 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_iax2.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 76957798d5..4de1bbfbb1 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -32,6 +32,7 @@
 #include <asterisk/callerid.h>
 #include <asterisk/app.h>
 #include <asterisk/astdb.h>
+#include <asterisk/musiconhold.h>
 #include <arpa/inet.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -3989,12 +3990,22 @@ retryowner:
 				/* Do nothing */
 				break;
 			case IAX_COMMAND_QUELCH:
-				if (iaxs[fr.callno]->state & IAX_STATE_STARTED)
+				if (iaxs[fr.callno]->state & IAX_STATE_STARTED) {
 					iaxs[fr.callno]->quelch = 1;
+					if (ies.musiconhold) {
+						if (iaxs[fr.callno]->owner &&
+							iaxs[fr.callno]->owner->bridge)
+								ast_moh_start(iaxs[fr.callno]->owner->bridge, NULL);
+					}
+				}
 				break;
 			case IAX_COMMAND_UNQUELCH:
-				if (iaxs[fr.callno]->state & IAX_STATE_STARTED)
+				if (iaxs[fr.callno]->state & IAX_STATE_STARTED) {
 					iaxs[fr.callno]->quelch = 0;
+					if (iaxs[fr.callno]->owner &&
+						iaxs[fr.callno]->owner->bridge)
+							ast_moh_stop(iaxs[fr.callno]->owner->bridge);
+				}
 				break;
 			case IAX_COMMAND_TXACC:
 				if (iaxs[fr.callno]->transferring == TRANSFER_BEGIN) {
-- 
GitLab