mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
Make sure that the branch sent in CANCEL requests
matches the branch of the INVITE it is cancelling. (closes issue #13381) Reported by: atca_pres Patches: 13381v2.patch uploaded by putnopvut (license 60) Tested by: atca_pres (closes issue #13198) Reported by: rickead2000 Tested by: rickead2000 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@142218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -973,6 +973,7 @@ static struct sip_pvt {
|
||||
int authtries; /*!< Times we've tried to authenticate */
|
||||
int expiry; /*!< How long we take to expire */
|
||||
long branch; /*!< The branch identifier of this session */
|
||||
long invite_branch; /*!< The branch used when we sent the initial INVITE */
|
||||
char tag[11]; /*!< Our tag for this session */
|
||||
int sessionid; /*!< SDP Session ID */
|
||||
int sessionversion; /*!< SDP Session Version */
|
||||
@@ -5980,7 +5981,10 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, in
|
||||
seqno = p->ocseq;
|
||||
}
|
||||
|
||||
if (newbranch) {
|
||||
if (sipmethod == SIP_CANCEL) {
|
||||
p->branch = p->invite_branch;
|
||||
build_via(p);
|
||||
} else if (newbranch) {
|
||||
p->branch ^= ast_random();
|
||||
build_via(p);
|
||||
}
|
||||
@@ -7128,6 +7132,7 @@ static int transmit_invite(struct sip_pvt *p, int sipmethod, int sdp, int init)
|
||||
if (init) { /* Seems like init always is 2 */
|
||||
/* Bump branch even on initial requests */
|
||||
p->branch ^= ast_random();
|
||||
p->invite_branch = p->branch;
|
||||
build_via(p);
|
||||
if (init > 1)
|
||||
initreqprep(&req, p, sipmethod);
|
||||
|
Reference in New Issue
Block a user