pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37301?usp=email )
Change subject: asterisk: Fix incorrect seq_nr expectancies when precondition is used ......................................................................
asterisk: Fix incorrect seq_nr expectancies when precondition is used
Change-Id: Icc91c863912934d48252ad0882d5603c161cd8b6 --- M asterisk/IMS_ConnectionHandler.ttcn 1 file changed, 19 insertions(+), 7 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified daniel: Looks good to me, but someone else must approve
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 8eb220d..8c4186e 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -1380,12 +1380,14 @@ var template (value) PDU_SIP_Response tx_resp; var Via 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, superset("100rel", "precondition"));
/* Obtain params: */ f_ConnHdlr_parse_initial_SIP_INVITE(g_rx_sip_req); 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); f_ims_validate_invite_P_Preferred_Service(g_rx_sip_req, exp_present := true); @@ -1464,7 +1466,7 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, "PRACK", 200, - g_pars.subscr.cp.sip_seq_nr, + g_pars.subscr.cp.sip_seq_nr + 1, "OK", via, body := omit); @@ -1476,7 +1478,7 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, f_tr_Via_response(via), - g_pars.subscr.cp.sip_seq_nr + 1, + g_pars.subscr.cp.sip_seq_nr + 2, require := tr_Require(superset("precondition")), body := ?); as_SIP_expect_req(exp_req); @@ -1505,13 +1507,14 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, "UPDATE", 200, - g_pars.subscr.cp.sip_seq_nr, + g_pars.subscr.cp.sip_seq_nr + 2, "OK", via, body := tx_sdp); SIP.send(tx_resp);
- g_pars.subscr.cp.sip_seq_nr := g_pars.subscr.cp.sip_seq_nr + 1; + /* Update to latest used seq_nr: */ + g_pars.subscr.cp.sip_seq_nr := g_pars.subscr.cp.sip_seq_nr + 2; /* 200 OK (INVITE) has no SDP if we use precondition: */ tx_sdp := omit; } else { @@ -1533,7 +1536,7 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, via, - g_pars.subscr.cp.sip_seq_nr); + invite_seq_nr); SIP.send(tx_resp);
@@ -1543,7 +1546,7 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, "INVITE", 200, - g_pars.subscr.cp.sip_seq_nr, + invite_seq_nr, "OK", via, body := tx_sdp); @@ -1555,7 +1558,7 @@ g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, f_tr_Via_response(via), - g_pars.subscr.cp.sip_seq_nr, *); + invite_seq_nr, *); as_SIP_expect_req(exp_req); } [fail_others] as_SIP_fail_resp(sip_expect_str);