diff options
author | Matthew Jordan <mjordan@digium.com> | 2011-09-09 16:28:23 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2011-09-09 16:28:23 +0000 |
commit | 8b5ba33fe0e69e8d31f27139daa03e2d05d0b6d2 (patch) | |
tree | 1469d7817b6e06619d6664985947a2f8112b6df6 /channels/sig_pri.c | |
parent | 8017b65bb97c4226ca7a3c7c944a9811484e0305 (diff) |
Merged revisions 335078 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/10
................
r335078 | mjordan | 2011-09-09 11:27:01 -0500 (Fri, 09 Sep 2011) | 29 lines
Merged revisions 335064 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r335064 | mjordan | 2011-09-09 11:09:09 -0500 (Fri, 09 Sep 2011) | 23 lines
Updated SIP 484 handling; added Incomplete control frame
When a SIP phone uses the dial application and receives a 484 Address
Incomplete response, if overlapped dialing is enabled for SIP, then
the 484 Address Incomplete is forwarded back to the SIP phone and the
HANGUPCAUSE channel variable is set to 28. Previously, the Incomplete
application dialplan logic was automatically triggered; now, explicit
dialplan usage of the application is required.
Additionally, this patch adds a new AST_CONTOL_FRAME type called
AST_CONTROL_INCOMPLETE. If a channel driver receives this control frame,
it is an indication that the dialplan expects more digits back from the
device. If the device supports overlap dialing it should attempt to
notify the device that the dialplan is waiting for more digits; otherwise,
it can handle the frame in a manner appropriate to the channel driver.
(closes issue ASTERISK-17288)
Reported by: Mikael Carlsson
Tested by: Matthew Jordan
Review: https://reviewboard.asterisk.org/r/1416/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@335079 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sig_pri.c')
-rw-r--r-- | channels/sig_pri.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 312737132..7db123e29 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -7825,6 +7825,15 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi /* don't continue in ast_indicate */ res = 0; break; + case AST_CONTROL_INCOMPLETE: + /* If we are connected or if we support overlap dialing, wait for additional digits */ + if (p->call_level == SIG_PRI_CALL_LEVEL_CONNECT || (p->pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING)) { + res = 0; + break; + } + /* Otherwise, treat as congestion */ + chan->hangupcause = AST_CAUSE_INVALID_NUMBER_FORMAT; + /* Falls through */ case AST_CONTROL_CONGESTION: if (p->priindication_oob || p->no_b_channel) { /* There are many cause codes that generate an AST_CONTROL_CONGESTION. */ |