aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoralecdavis <alecdavis@f38db490-d61c-443f-a65b-d21fe96a405b>2010-02-27 23:38:43 +0000
committeralecdavis <alecdavis@f38db490-d61c-443f-a65b-d21fe96a405b>2010-02-27 23:38:43 +0000
commit631719964fa0544cd038634565cf82ddd401446a (patch)
treeb5b332b09490cc0464f7a21e4a9aeb3c45e8860f /channels
parent7c8c8aff370550ad34ff4e2ce0c0f34ca6c959c8 (diff)
overlap receiving: automatically send CALL PROCEEDING when dialplan starts
Following Q.931 5.2.4 When the user has determined that sufficient call information has been received the user shall stop T302 and send CALL PROCEEDING to the network. Previously timeouts were possible if the dialplan took a long time to issue any response back to the network. Verified that our local TELCO also does the same. (issue #16789) Reported by: alecdavis Patches: overlap_receiving_trunk.diff.txt uploaded by alecdavis (license 585) Tested by: alecdavis (closes issue #16789) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@249364 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_dahdi.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 4b6052107..cecbfa46b 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -6626,7 +6626,20 @@ static void *ss_thread(void *data)
if (ast_exists_extension(chan, chan->context, exten, 1, p->cid_num)) {
/* Start the real PBX */
ast_copy_string(chan->exten, exten, sizeof(chan->exten));
- if (p->dsp) ast_dsp_digitreset(p->dsp);
+ if (p->dsp) {
+ ast_dsp_digitreset(p->dsp);
+ }
+ if (p->pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING) {
+ if (p->pri->pri) {
+ if (!pri_grab(p, p->pri)) {
+ pri_proceeding(p->pri->pri, p->call, PVT_TO_CHANNEL(p), 0);
+ p->proceeding = 1;
+ pri_rel(p->pri);
+ } else {
+ ast_log(LOG_WARNING, "Unable to grab PRI on span %d\n", p->span);
+ }
+ }
+ }
dahdi_enable_ec(p);
ast_setstate(chan, AST_STATE_RING);
res = ast_pbx_run(chan);