pespin submitted this change.
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(-)
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);
To view, visit change 37301. To unsubscribe, or for help writing mail filters, visit settings.