diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 331278ec23bcdd0ef7c6a6562b78144d3169e66f..0f0f63962f679007f0c413590b96c9f9c54fc9f2 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 9d18a303bd09ddf5e371f53a75648865362fccec..22f9501dda38f9e8c259f12134550a894475fd60 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]); }