Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 293886) +++ channels/chan_dahdi.c (working copy) @@ -5132,6 +5132,10 @@ ast_log(LOG_WARNING, "Spill already exists?!?\n"); ast_free(p->cidspill); } + + /* SAS: Subscriber Alert Signal, 440Hz for 300ms */ + /* CAS: CPE Alert Signal, 2130Hz * 2750Hz sine waves */ + if (!(p->cidspill = ast_malloc(2400 /* SAS */ + 680 /* CAS */ + READ_SIZE * 4))) return -1; save_conference(p); @@ -8786,6 +8790,7 @@ } /* Expire CID/CW */ if (p->cidcwexpire == 1) { + p->callwaitcas = 0; ast_verb(3, "CPE does not support Call Waiting Caller*ID.\n"); restore_conference(p); } @@ -8828,8 +8833,13 @@ f = ast_dsp_process(ast, p->dsp, &p->subs[idx].f); - /* Check if DSP code thinks we should be muting this frame and mute the conference if so */ - mute = ast_dsp_was_muted(p->dsp); + if (p->callwaitcas) { + /* If were in the middle of a SAS+CAS signalling Mute the conference */ + mute = 1; + } else { + /* Check if DSP code thinks we should be muting this frame and mute the conference if so */ + mute = ast_dsp_was_muted(p->dsp); + } if (p->muting != mute) { p->muting = mute; dahdi_confmute(p, mute);