pespin submitted this change.
asterisk: IMS: Fix PRACK 200 OK Tx with wrong branch
PRACK (and also UPDATE) are new transactions, and hence should have a
new branch. Update the branch we transmit in the response too.
Change-Id: Ia4a23f20ae69ee5facdcff7ae276ab823e860d06
---
M asterisk/IMS_ConnectionHandler.ttcn
1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn
index 8c4186e..a46d62f 100644
--- a/asterisk/IMS_ConnectionHandler.ttcn
+++ b/asterisk/IMS_ConnectionHandler.ttcn
@@ -1378,7 +1378,7 @@
[] SIP.receive(exp_req) -> value g_rx_sip_req {
var template (value) PDU_SIP_Response tx_resp;
- var Via via;
+ var Via invite_via;
var template (omit) charstring tx_sdp;
var integer invite_seq_nr;
var boolean peer_support_precondition := match(g_rx_sip_req.msgHeader.supported.optionsTags,
@@ -1386,7 +1386,7 @@
/* Obtain params: */
f_ConnHdlr_parse_initial_SIP_INVITE(g_rx_sip_req);
- via := g_rx_sip_req.msgHeader.via;
+ invite_via := g_rx_sip_req.msgHeader.via;
invite_seq_nr := g_pars.subscr.cp.sip_seq_nr;
f_ims_validate_register_P_Access_Network_info(g_rx_sip_req, exp_present := true);
@@ -1404,7 +1404,7 @@
tx_resp := ts_SIP_Response_Trying(g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- via,
+ invite_via,
g_pars.subscr.cp.sip_seq_nr,
"INVITE",
allow := omit,
@@ -1444,7 +1444,7 @@
tx_resp := ts_SIP_Response_SessionProgress(g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- via,
+ invite_via,
g_pars.subscr.cp.sip_seq_nr,
rseq := ts_RSeq(1),
body := tx_sdp);
@@ -1455,7 +1455,7 @@
g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- f_tr_Via_response(via),
+ f_tr_Via_response(invite_via),
g_pars.subscr.cp.sip_seq_nr + 1,
rack := tr_RAck(1, g_pars.subscr.cp.sip_seq_nr, "INVITE"),
body := omit);
@@ -1468,7 +1468,7 @@
"PRACK", 200,
g_pars.subscr.cp.sip_seq_nr + 1,
"OK",
- via,
+ g_rx_sip_req.msgHeader.via /* PRACK's new branch */,
body := omit);
SIP.send(tx_resp);
@@ -1477,7 +1477,7 @@
g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- f_tr_Via_response(via),
+ f_tr_Via_response(invite_via),
g_pars.subscr.cp.sip_seq_nr + 2,
require := tr_Require(superset("precondition")),
body := ?);
@@ -1509,7 +1509,7 @@
"UPDATE", 200,
g_pars.subscr.cp.sip_seq_nr + 2,
"OK",
- via,
+ g_rx_sip_req.msgHeader.via /* UPDATE's new branch */,
body := tx_sdp);
SIP.send(tx_resp);
@@ -1535,7 +1535,7 @@
tx_resp := ts_SIP_Response_Ringing(g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- via,
+ invite_via,
invite_seq_nr);
SIP.send(tx_resp);
@@ -1548,7 +1548,7 @@
"INVITE", 200,
invite_seq_nr,
"OK",
- via,
+ invite_via,
body := tx_sdp);
SIP.send(tx_resp);
@@ -1557,7 +1557,7 @@
g_pars.subscr.cp.sip_call_id,
g_pars.subscr.cp.from_addr,
g_pars.subscr.cp.to_addr,
- f_tr_Via_response(via),
+ f_tr_Via_response(invite_via),
invite_seq_nr, *);
as_SIP_expect_req(exp_req);
}
To view, visit change 37308. To unsubscribe, or for help writing mail filters, visit settings.