diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-07-22 19:31:34 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-07-22 19:31:34 +0000 |
commit | 1e59e0f8b928dffa972c7f3ab9788ce7f5313289 (patch) | |
tree | b6666ec638d3bfce9507b7f59838ab6dc0c5a6cb | |
parent | d753f39b933a87a139e3a0f25be6fbc5effeda1f (diff) |
DNID does not get cleard on a new call when using immediate=yes with ISDN signaling.
When you are using chan_dahdi ISDN signaling with immediate=yes and a call
comes in without a DNID then you get the DNID of a previous call.
Chan_dahdi does not touch the DNID field on a new call if it does not have
a DNID.
Made always copy the DNID from the new call.
The patches backport the relevant changes from trunk -r210387.
(closes issue #17568)
Reported by: wuwu
Patches:
issue17568_v1.4.patch uploaded by rmudgett (license 664)
issue17568_v1.6.2.patch uploaded by rmudgett (license 664)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@278701 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_dahdi.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index b5960143f..1e4713c6d 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -9485,6 +9485,10 @@ static void *pri_dchannel(void *vpri) } apply_plan_to_number(pri->pvts[chanpos]->rdnis, sizeof(pri->pvts[chanpos]->rdnis), pri, e->ring.redirectingnum, e->ring.callingplanrdnis); + + /* Set DNID on all incoming calls -- even immediate */ + ast_copy_string(pri->pvts[chanpos]->dnid, e->ring.callednum, sizeof(pri->pvts[chanpos]->dnid)); + /* If immediate=yes go to s|1 */ if (pri->pvts[chanpos]->immediate) { if (option_verbose > 2) @@ -9495,7 +9499,6 @@ static void *pri_dchannel(void *vpri) /* Get called number */ else if (!ast_strlen_zero(e->ring.callednum)) { ast_copy_string(pri->pvts[chanpos]->exten, e->ring.callednum, sizeof(pri->pvts[chanpos]->exten)); - ast_copy_string(pri->pvts[chanpos]->dnid, e->ring.callednum, sizeof(pri->pvts[chanpos]->dnid)); } else if (pri->overlapdial) pri->pvts[chanpos]->exten[0] = '\0'; else { @@ -9503,9 +9506,6 @@ static void *pri_dchannel(void *vpri) pri->pvts[chanpos]->exten[0] = 's'; pri->pvts[chanpos]->exten[1] = '\0'; } - /* Set DNID on all incoming calls -- even immediate */ - if (!ast_strlen_zero(e->ring.callednum)) - ast_copy_string(pri->pvts[chanpos]->dnid, e->ring.callednum, sizeof(pri->pvts[chanpos]->dnid)); /* No number yet, but received "sending complete"? */ if (e->ring.complete && (ast_strlen_zero(e->ring.callednum))) { if (option_verbose > 2) |