[asterisk-bugs] [Asterisk 0013381]: Wrong branch on CANCEL after SIP INFO in early dialog

Asterisk Bug Tracker noreply at bugs.digium.com
Tue Sep 2 13:51:29 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=13381 
====================================================================== 
Reported By:                atca_pres
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   13381
Category:                   Channels/chan_sip/General
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     ready for testing
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  1.4  
SVN Revision (number only!): 140115 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-08-27 07:13 CDT
Last Modified:              2008-09-02 13:51 CDT
====================================================================== 
Summary:                    Wrong branch on CANCEL after SIP INFO in early
dialog
Description: 
Scenario :
A Calls Asterisk IVR
IVR answers
A enters B's ext
A pushes a DTMF while B is ringing
A hangs up

in SIP :
A INVITES Asterisk
Asterisk 200OK (IVR)
Asterisk INVITES B
B sends 180 Ringing
A sends SIP INFO 
Asterisk sends SIP INFO to B
A BYEs Asterisk
Asterisk sends CANCEL with wrong branch

The UA cannot match the INVITE to the CANCEL because the CANCEL does not
have the same branch (via header) that the INVITE had. 
B only ack the CANCEL without sending the required 487 to cancel the
INVITE. B Stays ringing forever. (Granted, answering a 481 to the CANCEL
might be the thing to do, but it's only a SHOULD in the RFC)

Attached is the SIP debug + core and verbose 5 (asterisk -Tvvvvvdddddngc |
tee /tmp/verbosedebug.txt) and an ethereal capture for easier reading.
====================================================================== 

---------------------------------------------------------------------- 
 (0091980) atca_pres (reporter) - 2008-09-02 13:51
 http://bugs.digium.com/view.php?id=13381#c91980 
---------------------------------------------------------------------- 
Hi putnopvut,

I tested the attached patch, but the branch in the CANCEL is the same as
the branch in the last SIP INFO.

My guess was that this line is executed for SIP INFO as well :
p->invite_branch = p->branch;

So I added a if (req.method == SIP_INVITE) just before it, no success,
same behavior.

My other hypothesis is that this modify the branch as well :
if (sipmethod == SIP_CANCEL)
                c = p->initreq.rlPart2; /* Use original URI */

I'm sorry if this isn't clear.

Thank you 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-09-02 13:51 atca_pres      Note Added: 0091980                          
======================================================================




More information about the asterisk-bugs mailing list