pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37335?usp=email )
Change subject: asterisk: IMS: Fix seq_nr during MT calls ......................................................................
asterisk: IMS: Fix seq_nr during MT calls
Change-Id: Ieeb9fb803ab3b1d02b5bfd8198702780914ec318 --- M asterisk/IMS_ConnectionHandler.ttcn 1 file changed, 17 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/35/37335/1
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 4b50c31..c7d87b2 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -1128,6 +1128,7 @@ var default d_trying, d_ringing; var charstring branch_value; var Contact calling_contact, called_contact; + var integer sip_seq_nr;
/* RFC 3261 8.1.1.3 From */ g_pars.subscr.cp.from_addr := valueof(ts_From(g_pars.subscr.cp.calling.addr, g_pars.subscr.cp.calling.params)); @@ -1168,12 +1169,13 @@ supported := ts_Supported(supported_list); }
+ sip_seq_nr := g_pars.subscr.cp.sip_seq_nr; req := ts_SIP_INVITE(g_pars.subscr.cp.sip_call_id, g_pars.subscr.cp.from_addr, g_pars.subscr.cp.to_addr, via, calling_contact, - g_pars.subscr.cp.sip_seq_nr, + sip_seq_nr, accept := ts_Accept({ ts_AcceptBody("application/sdp"), ts_AcceptBody("application/3gpp-ims+xml") }), min_SE := min_SE, session_expires := session_expires, @@ -1187,7 +1189,7 @@ from_addr_exp, to_addr_exp, f_tr_Via_response(via), - g_pars.subscr.cp.sip_seq_nr, "INVITE"); + sip_seq_nr, "INVITE"); d_trying := activate(as_SIP_ignore_resp(exp));
if (g_pars.subscr.cp.mt.tx_coord_cmd_session_progress) { @@ -1203,7 +1205,7 @@ from_addr_exp, to_addr_exp, f_tr_Via_response(via), - g_pars.subscr.cp.sip_seq_nr, "INVITE", + sip_seq_nr, "INVITE", require := tr_Require(superset("100rel", "precondition")), rseq := tr_RSeq(?), body := ?); @@ -1310,13 +1312,14 @@
g_pars.subscr.cp.sip_seq_nr := g_rx_sip_resp.msgHeader.cSeq.seqNumber + 1; } + g_pars.subscr.cp.sip_seq_nr := g_pars.subscr.cp.sip_seq_nr + 1;
/* Conditionally match and accept 180 Ringing */ exp := tr_SIP_Response_Ringing(g_pars.subscr.cp.sip_call_id, from_addr_exp, to_addr_exp, f_tr_Via_response(via), - g_pars.subscr.cp.sip_seq_nr, "INVITE"); + sip_seq_nr, "INVITE"); d_ringing := activate(as_SIP_ignore_resp(exp));
called_contact := g_rx_sip_resp.msgHeader.contact; @@ -1329,7 +1332,7 @@ f_tr_Via_response(via), called_contact, "INVITE", 200, - g_pars.subscr.cp.sip_seq_nr, "OK", + sip_seq_nr, "OK", body := *); as_SIP_expect_resp(exp, fail_others := false);
@@ -1343,7 +1346,6 @@ g_pars.subscr.cp.to_addr := g_rx_sip_resp.msgHeader.toField;
/* Transmit ACK */ - g_pars.subscr.cp.sip_seq_nr := g_pars.subscr.cp.sip_seq_nr + 1; req := ts_SIP_ACK(called_contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, g_pars.subscr.cp.sip_call_id, g_pars.subscr.cp.from_addr,