pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37289?usp=email )
Change subject: asterisk: IMS: Set expires=N on REGISTER response ......................................................................
asterisk: IMS: Set expires=N on REGISTER response
Related: SYS#6983 Change-Id: I0682fbc97128ed8aa193cb14ea571a8db9ee3279 --- M asterisk/IMS_ConnectionHandler.ttcn 1 file changed, 24 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/89/37289/1
diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 69e8abf..ba2a2fd 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -94,6 +94,7 @@ SipAddr registrar_sip_record, CallidString registrar_sip_call_id, integer registrar_sip_seq_nr, + integer registrar_expires, SipUrl local_sip_url_ext, SipAddr local_sip_record, Contact registered_contact optional, @@ -214,6 +215,7 @@ f_sip_str_quote(display_name)), registrar_sip_call_id := hex2str(f_rnd_hexstring(15)) & "@" & domain, registrar_sip_seq_nr := f_sip_rand_seq_nr(), + registrar_expires := c_def_expires, local_sip_url_ext := ts_SipUrl(ts_HostPort(domain, local_sip_port), ts_UserInfo(imsi)), local_sip_record := ts_SipAddr(ts_HostPort(domain), @@ -922,6 +924,7 @@ [] SIP.receive(exp_req) -> value g_rx_sip_req { var template (value) PDU_SIP_Response tx_resp; var Via via; + var Contact contact; var CallidString sip_call_id; var template (value) From from_addr; var template (value) To to_addr; @@ -970,9 +973,16 @@ scheme := "tel"))), ts_P_Assoc_uri_spec(g_rx_sip_req.msgHeader.toField.addressField.nameAddr) })); - f_ims_validate_register_contact(g_rx_sip_req.msgHeader.contact); - f_ims_parse_register_contact(g_rx_sip_req.msgHeader.contact); - g_pars.subscr.registered_contact := g_rx_sip_req.msgHeader.contact; + + contact := g_rx_sip_req.msgHeader.contact; + f_ims_validate_register_contact(contact); + f_ims_parse_register_contact(contact); + g_pars.subscr.registered_contact := contact; + /* Set expires= to configured value: RFC3261 10.3 8) */ + for (var integer i := 0; i < lengthof(contact.contactBody.contactAddresses); i := i + 1) { + contact.contactBody.contactAddresses[i].contactParams := + valueof({ ts_Param("expires", int2str(g_pars.subscr.registrar_expires)) }); + }
/* Tx 200 OK */ to_addr.toParams := f_sip_param_set(to_addr.toParams, "tag", f_sip_rand_tag()); @@ -983,6 +993,7 @@ sip_seq_nr, "OK", via, + contact := contact, p_associated_uri := g_pars.subscr.p_associated_uri, require := require, server := g_pars.server_name,