summaryrefslogtreecommitdiff
path: root/apps/app_meetme.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2014-05-22 16:19:13 +0000
committerRichard Mudgett <rmudgett@digium.com>2014-05-22 16:19:13 +0000
commit4b4fe69f9f9d8675b5c3d6dee2613fa679f161ae (patch)
treefaa96ddbe8b23c56cf575688737533fad8d0358e /apps/app_meetme.c
parentcf21644d6a4b757999be136ab1b90ba5cf6ac3bc (diff)
app_meetme: Don't interrupt MOH for waitmarked users.
Occasionally, when the last marked user leaves the conference, waitmarked users don't get MOH if MOH is supposed to be played while a waitmarked user is waiting for another marked user. * Made not interrupt MOH when the user is a waitmarked user. The waitmarked user doesn't need to hear any leave announcements from the conference as the user would have already heard different leave announcements if they were enabled. Apparently DAHDI occasionally sends unending non-silent streams to these users or a normal user still in the conference has continuous high background noise. These non-silent streams cause MOH to be suspended while the never ending "announcement" is played. Issue caused by ASTERISK-13680. AST-1349 #close Reported by: Tyler Stewart Review: https://reviewboard.asterisk.org/r/3543/ ........ Merged revisions 414401 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414402 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414404 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414417 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_meetme.c')
-rw-r--r--apps/app_meetme.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index afecc8ea1..b6f5fffb9 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -4313,7 +4313,10 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
ast_mutex_lock(&conf->listenlock);
if (!conf->transframe[idx]) {
if (conf->origframe) {
- if (musiconhold && !ast_dsp_silence(dsp, conf->origframe, &confsilence) && confsilence < MEETME_DELAYDETECTTALK) {
+ if (musiconhold
+ && !ast_test_flag64(confflags, CONFFLAG_WAITMARKED)
+ && !ast_dsp_silence(dsp, conf->origframe, &confsilence)
+ && confsilence < MEETME_DELAYDETECTTALK) {
ast_moh_stop(chan);
mohtempstopped = 1;
}
@@ -4357,7 +4360,10 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
ast_mutex_unlock(&conf->listenlock);
} else {
bailoutandtrynormal:
- if (musiconhold && !ast_dsp_silence(dsp, &fr, &confsilence) && confsilence < MEETME_DELAYDETECTTALK) {
+ if (musiconhold
+ && !ast_test_flag64(confflags, CONFFLAG_WAITMARKED)
+ && !ast_dsp_silence(dsp, &fr, &confsilence)
+ && confsilence < MEETME_DELAYDETECTTALK) {
ast_moh_stop(chan);
mohtempstopped = 1;
}