summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2015-07-16 12:16:25 -0500
committerJonathan Rose <jrose@digium.com>2015-07-28 15:11:48 -0500
commit8458b8d441c2f4143ff135163ff3da4f88fe14c8 (patch)
treec6c187690ea0d07be705a65acda15ceba283c228 /bridges
parent5086bdacfb921ba3edbe49a1177163f5be846549 (diff)
holding_bridge: ensure moh participants get frames
Currently, if a blank musiconhold.conf is used, musiconhold will fail to start for a channel going into a holding bridge with an anticipation of getting music on hold. That being the case, no frames will be written to the channel and that can pose a problem for blind transfers in PJSIP which may rely on frames being written to get past the REFER framehook. This patch makes holding bridges start a silence generator if starting music on hold fails and makes it so that if no music on hold functions are installed that the ast_moh_start function will report a failure so that consumers of that function will be able to respond appropriately. ASTERISK-25271 #close Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99
Diffstat (limited to 'bridges')
-rw-r--r--bridges/bridge_holding.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bridges/bridge_holding.c b/bridges/bridge_holding.c
index 2fd79d09a..0ef5601c1 100644
--- a/bridges/bridge_holding.c
+++ b/bridges/bridge_holding.c
@@ -205,7 +205,11 @@ static void participant_entertainment_start(struct ast_bridge_channel *bridge_ch
switch(hc->idle_mode) {
case IDLE_MODE_MOH:
moh_class = ast_bridge_channel_get_role_option(bridge_channel, "holding_participant", "moh_class");
- ast_moh_start(bridge_channel->chan, moh_class, NULL);
+ if (ast_moh_start(bridge_channel->chan, moh_class, NULL)) {
+ ast_log(LOG_WARNING, "Failed to start moh, starting silence generator instead\n");
+ hc->idle_mode = IDLE_MODE_SILENCE;
+ hc->silence_generator = ast_channel_start_silence_generator(bridge_channel->chan);
+ }
break;
case IDLE_MODE_RINGING:
ast_indicate(bridge_channel->chan, AST_CONTROL_RINGING);