diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index c24d011068..64965a38df 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -2505,6 +2505,11 @@ static void my_pri_open_media(void *p) if (res < 0) { ast_log(LOG_WARNING, "Unable to set gains on channel %d\n", pvt->channel); } + + if (pvt->dsp_features && pvt->dsp) { + ast_dsp_set_features(pvt->dsp, pvt->dsp_features); + pvt->dsp_features = 0; + } } #endif /* defined(HAVE_PRI) */ diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 9d18a303bd..22f9501dda 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -4907,6 +4907,17 @@ static void *pri_dchannel(void *vpri) pri_queue_control(pri, chanpos, AST_CONTROL_RINGING); pri->pvts[chanpos]->alerting = 1; + if ( +#ifdef PRI_PROGRESS_MASK + e->ringing.progressmask & PRI_PROG_INBAND_AVAILABLE +#else + e->ringing.progress == 8 +#endif + ) { + sig_pri_open_media(pri->pvts[chanpos]); + } + + #ifdef SUPPORT_USERUSER if (!ast_strlen_zero(e->ringing.useruserinfo)) { struct ast_channel *owner; @@ -4965,6 +4976,7 @@ static void *pri_dchannel(void *vpri) pri_queue_control(pri, chanpos, AST_CONTROL_PROGRESS); pri->pvts[chanpos]->progress = 1; sig_pri_set_dialing(pri->pvts[chanpos], 0); + sig_pri_open_media(pri->pvts[chanpos]); } sig_pri_unlock_private(pri->pvts[chanpos]); } @@ -4998,6 +5010,7 @@ static void *pri_dchannel(void *vpri) pri_queue_control(pri, chanpos, AST_CONTROL_PROGRESS); pri->pvts[chanpos]->progress = 1; sig_pri_set_dialing(pri->pvts[chanpos], 0); + sig_pri_open_media(pri->pvts[chanpos]); } sig_pri_unlock_private(pri->pvts[chanpos]); }