pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37308?usp=email )
Change subject: asterisk: IMS: Fix PRACK 200 OK Tx with wrong branch ......................................................................
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(-)
Approvals: pespin: Looks good to me, approved daniel: Looks good to me, but someone else must approve Jenkins Builder: Verified
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); }