diff options
-rw-r--r-- | channels/sig_pri.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c index da60e7edf..bf73ced37 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -4752,6 +4752,12 @@ static enum sig_pri_moh_state sig_pri_moh_fsm_notify(struct ast_channel *chan, s next_state = pvt->moh_state; switch (event) { + case SIG_PRI_MOH_EVENT_HOLD: + if (strcasecmp(pvt->mohinterpret, "passthrough")) { + /* Restart MOH in case it was stopped by other means. */ + ast_moh_start(chan, pvt->moh_suggested, pvt->mohinterpret); + } + break; case SIG_PRI_MOH_EVENT_UNHOLD: pri_notify(pvt->pri->pri, pvt->call, pvt->prioffset, PRI_NOTIFY_REMOTE_RETRIEVAL); /* Fall through */ @@ -4786,6 +4792,10 @@ static enum sig_pri_moh_state sig_pri_moh_fsm_moh(struct ast_channel *chan, stru next_state = pvt->moh_state; switch (event) { + case SIG_PRI_MOH_EVENT_HOLD: + /* Restart MOH in case it was stopped by other means. */ + ast_moh_start(chan, pvt->moh_suggested, pvt->mohinterpret); + break; case SIG_PRI_MOH_EVENT_RESET: case SIG_PRI_MOH_EVENT_UNHOLD: ast_moh_stop(chan); |