[asterisk-commits] oej: trunk r48327 - in /trunk: ./
channels/chan_sip.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Dec 6 09:54:28 MST 2006
Author: oej
Date: Wed Dec 6 10:54:27 2006
New Revision: 48327
URL: http://svn.digium.com/view/asterisk?view=rev&rev=48327
Log:
Handle multiple 487's correctly
Modified:
trunk/ (props changed)
trunk/channels/chan_sip.c
Propchange: trunk/
('branch-1.2-blocked' removed)
Propchange: trunk/
('branch-1.2-merged' removed)
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?view=diff&rev=48327&r1=48326&r2=48327
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Wed Dec 6 10:54:27 2006
@@ -11943,7 +11943,16 @@
ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
break;
-
+ case 487: /* Cancelled transaction */
+ /* We have sent CANCEL on an outbound INVITE
+ This transaction is already scheduled to be killed by sip_hangup().
+ */
+ transmit_request(p, SIP_ACK, seqno, 0, 0);
+ if (p->owner && !ast_test_flag(req, SIP_PKT_IGNORE))
+ ast_queue_hangup(p->owner);
+ else if (!ast_test_flag(req, SIP_PKT_IGNORE))
+ update_call_counter(p, DEC_CALL_LIMIT);
+ break;
case 491: /* Pending */
/* we really should have to wait a while, then retransmit */
/* We should support the retry-after at some point */
@@ -11955,6 +11964,7 @@
break;
case 501: /* Not implemented */
+ transmit_request(p, SIP_ACK, seqno, 0, 0);
if (p->owner)
ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
break;
@@ -12377,6 +12387,10 @@
/* Guessing that this is not an important request */
}
break;
+ case 487:
+ if (sipmethod == SIP_INVITE)
+ handle_response_invite(p, resp, rest, req, seqno);
+ break;
case 491: /* Pending */
if (sipmethod == SIP_INVITE)
handle_response_invite(p, resp, rest, req, seqno);
@@ -12421,12 +12435,6 @@
case 603: /* Decline */
if (p->owner)
ast_queue_control(p->owner, AST_CONTROL_BUSY);
- break;
- case 487: /* Response on INVITE that has been CANCELled */
- /* channel now destroyed - dec the inUse counter */
- if (owner)
- ast_queue_hangup(p->owner);
- update_call_counter(p, DEC_CALL_LIMIT);
break;
case 482: /*
\note SIP is incapable of performing a hairpin call, which
More information about the asterisk-commits
mailing list