summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bridges/bridge_holding.c6
-rw-r--r--main/channel.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/bridges/bridge_holding.c b/bridges/bridge_holding.c
index 501ef9fa5..7bf7a3922 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);
diff --git a/main/channel.c b/main/channel.c
index 935ac2835..268f4cd51 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -7403,7 +7403,7 @@ int ast_moh_start(struct ast_channel *chan, const char *mclass, const char *inte
ast_verb(3, "Music class %s requested but no musiconhold loaded.\n", mclass ? mclass : (interpclass ? interpclass : "default"));
- return 0;
+ return -1;
}
void ast_moh_stop(struct ast_channel *chan)