Solving the same issue, but a bit different in trunk...
authorOlle Johansson <oej@edvina.net>
Tue, 27 Jan 2009 15:00:19 +0000 (15:00 +0000)
committerOlle Johansson <oej@edvina.net>
Tue, 27 Jan 2009 15:00:19 +0000 (15:00 +0000)
Merged revisions 171527 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r171527 | oej | 2009-01-27 15:33:20 +0100 (Tis, 27 Jan 2009) | 13 lines

Use the same branch tag in CANCEL as in INVITE

Originally putnopvut implemented some changes in revision 142079 that according to the bug report seemed to have worked then, but somehow fails now.
I guess code, as humans, get old and forget stuff. Anyway, this bug caused CANCEL not to work with picky systems.

Thanks Fredrik for pointing out where the bug in the SIP messaging was.

(closes issue #14346)
Reported by: oej
Patches:
      bug14346.diff uploaded by oej (license 306)
Tested by: oej

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@171528 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 6e2f449..97dba79 100644 (file)
@@ -9817,7 +9817,8 @@ static int transmit_invite(struct sip_pvt *p, int sipmethod, int sdp, int init)
        if (init > 1)
                initreqprep(&req, p, sipmethod);
        else
-               reqprep(&req, p, sipmethod, 0, 1);
+               /* If init=1, we should not generate a new branch. If it's 0, we need a new branch. */
+               reqprep(&req, p, sipmethod, 0, init ? 0 : 1);
                
        if (p->options && p->options->auth)
                add_header(&req, p->options->authheader, p->options->auth);