pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37480?usp=email )
Change subject: asterisk: IMS: MT call: Move Tx INVITE to helper function ......................................................................
asterisk: IMS: MT call: Move Tx INVITE to helper function
This helper function will be used by another function expecting an INVITE reject in a follow-up patch.
Change-Id: If9657e88304fd7b3558737fdc807bae59cddc8a2 --- M asterisk/IMS_ConnectionHandler.ttcn 1 file changed, 45 insertions(+), 15 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved Jenkins Builder: Verified
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 6a1328d..d4c9da2 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -1120,32 +1120,21 @@ return via; }
-/* IMS Core starts a call towards the peer: 3GPP TS 24.229 5.1.3.1 */ -function f_IMS_mt_call_setup() runs on IMS_ConnHdlr +private function f_IMS_mt_call_tx_invite(Via via) runs on IMS_ConnHdlr { var template (value) PDU_SIP_Request req; - var template (present) PDU_SIP_Response exp; var template (present) From from_addr_exp; var template (present) To to_addr_exp; - var Via via; - var template (omit) Require require := omit; var template (omit) Min_SE min_SE := omit; var template (omit) Session_expires session_expires := omit; var template (omit) Supported supported := omit; var OptionTag_List supported_list := {}; var charstring tx_sdp; - var default d_trying, d_ringing; - var Contact calling_contact, called_contact; - var integer sip_seq_nr; + var Contact calling_contact;
/* 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)); - g_pars.subscr.cp.from_addr.fromParams := f_sip_param_set(g_pars.subscr.cp.from_addr.fromParams, "tag", f_sip_rand_tag()); - g_pars.subscr.cp.to_addr := valueof(ts_To(g_pars.subscr.cp.called.addr, g_pars.subscr.cp.called.params)); from_addr_exp := tr_From(tr_Addr_Union_from_val(g_pars.subscr.cp.from_addr.addressField), *); to_addr_exp := tr_To(tr_Addr_Union_from_val(g_pars.subscr.cp.to_addr.addressField), *); - via := f_IMS_gen_new_Via(); - calling_contact := valueof(ts_Contact({ ts_ContactAddress(g_pars.subscr.cp.calling.addr, omit) })); @@ -1172,13 +1161,12 @@ 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, - sip_seq_nr, + g_pars.subscr.cp.sip_seq_nr, accept := ts_Accept({ ts_AcceptBody("application/sdp"), ts_AcceptBody("application/3gpp-ims+xml") }), min_SE := min_SE, session_expires := session_expires, @@ -1186,6 +1174,36 @@ body := tx_sdp);
SIP.send(req); +} + +/* IMS Core starts a call towards the peer: 3GPP TS 24.229 5.1.3.1 */ +function f_IMS_mt_call_setup() runs on IMS_ConnHdlr +{ + var template (value) PDU_SIP_Request req; + var template (present) PDU_SIP_Response exp; + var template (present) From from_addr_exp; + var template (present) To to_addr_exp; + var Via via; + var template (omit) Require require := omit; + var charstring tx_sdp; + var default d_trying, d_ringing; + 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)); + g_pars.subscr.cp.from_addr.fromParams := f_sip_param_set(g_pars.subscr.cp.from_addr.fromParams, "tag", f_sip_rand_tag()); + g_pars.subscr.cp.to_addr := valueof(ts_To(g_pars.subscr.cp.called.addr, g_pars.subscr.cp.called.params)); + from_addr_exp := tr_From(tr_Addr_Union_from_val(g_pars.subscr.cp.from_addr.addressField), *); + to_addr_exp := tr_To(tr_Addr_Union_from_val(g_pars.subscr.cp.to_addr.addressField), *); + calling_contact := valueof(ts_Contact({ + ts_ContactAddress(g_pars.subscr.cp.calling.addr, omit) + })); + via := f_IMS_gen_new_Via(); + + f_IMS_mt_call_tx_invite(via); + + sip_seq_nr := g_pars.subscr.cp.sip_seq_nr;
/* Conditionally match and accept 100 Trying. */ exp := tr_SIP_Response_Trying(g_pars.subscr.cp.sip_call_id,