pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email )

Change subject: asterisk: Implement SIP UA unregister
......................................................................

asterisk: Implement SIP UA unregister

Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7
---
M asterisk/Asterisk_Tests.ttcn
M asterisk/SIP_ConnectionHandler.ttcn
2 files changed, 66 insertions(+), 6 deletions(-)

Approvals:
  pespin: Looks good to me, approved
  neels: Looks good to me, but someone else must approve
  Jenkins Builder: Verified




diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn
index bb1ed90..7126118 100644
--- a/asterisk/Asterisk_Tests.ttcn
+++ b/asterisk/Asterisk_Tests.ttcn
@@ -183,7 +183,9 @@
 private function f_TC_internal_registration(charstring id) runs on SIPConnHdlr 
{

        f_SIP_register();
-       // f_SIP_deregister();
+       /* Trigger unregistration: */
+       f_sleep(1.0);
+       f_SIP_unregister();
        setverdict(pass);
 }
 testcase TC_internal_registration() runs on test_CT {
@@ -209,6 +211,8 @@
        COORD.receive(COORD_CMD_HANGUP);
        f_SIP_do_call_hangup();

+       f_SIP_unregister();
+
        setverdict(pass);
 }
 private function f_TC_internal_call_mt(charstring id) runs on SIPConnHdlr {
@@ -234,6 +238,8 @@
        }
        as_SIP_exp_call_hangup(g_pars.cp.sip_seq_nr + 1);

+       f_SIP_unregister();
+
        setverdict(pass);
 }
 testcase TC_internal_call_momt() runs on test_CT {
diff --git a/asterisk/SIP_ConnectionHandler.ttcn 
b/asterisk/SIP_ConnectionHandler.ttcn
index 05f872f..892f5a3 100644
--- a/asterisk/SIP_ConnectionHandler.ttcn
+++ b/asterisk/SIP_ConnectionHandler.ttcn
@@ -61,6 +61,7 @@
        SipUrl local_sip_url_ext,
        SipAddr local_sip_record,
        Contact local_contact,
+       Authorization authorization optional,
        CallPars cp optional
 }
 type record of SIPConnHdlrPars SIPConnHdlrParsList;
@@ -147,6 +148,7 @@
                                                                     
ts_UserInfo(user))),
                                                omit)
                                })),
+       authorization := omit,
        cp := cp
 }

@@ -299,10 +301,11 @@
        as_SIP_expect_resp(exp);

        /* Digest Auth: RFC 2617 */
-       authorization := 
f_sip_digest_gen_Authorization_MD5(g_rx_sip_resp.msgHeader.wwwAuthenticate,
-                                                           g_pars.user, 
g_pars.password,
-                                                           "REGISTER",
-                                                           
f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri))
+       g_pars.authorization :=
+               
f_sip_digest_gen_Authorization_MD5(g_rx_sip_resp.msgHeader.wwwAuthenticate,
+                                                  g_pars.user, g_pars.password,
+                                                  "REGISTER",
+                                                  
f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri))

        /* New transaction: */
        g_pars.registrar_sip_seq_nr := g_pars.registrar_sip_seq_nr + 1;
@@ -320,7 +323,49 @@
                                g_pars.registrar_sip_seq_nr,
                                g_pars.local_contact,
                                ts_Expires("7200"),
-                               authorization := authorization));
+                               authorization := g_pars.authorization));
+
+       /* Wait for OK answer */
+       exp := tr_SIP_Response(
+                       g_pars.registrar_sip_call_id,
+                       from_addr,
+                       to_addr_exp,
+                       f_tr_Via_response(via),
+                       *,
+                       "REGISTER", 200,
+                       g_pars.registrar_sip_seq_nr, "OK");
+       as_SIP_expect_resp(exp);
+
+       /* Prepare for next use: */
+       g_pars.registrar_sip_seq_nr := g_pars.registrar_sip_seq_nr + 1;
+       return g_rx_sip_resp;
+}
+
+function f_SIP_unregister() runs on SIPConnHdlr return PDU_SIP_Response
+{
+       var template (present) PDU_SIP_Response exp;
+       var Via via := g_pars.local_via;
+       var From from_addr := valueof(ts_From(g_pars.registrar_sip_record.addr, 
g_pars.registrar_sip_record.params));
+       var To to_addr := valueof(ts_To(g_pars.registrar_sip_record.addr, 
g_pars.registrar_sip_record.params));
+       var template (present) To to_addr_exp := 
tr_To(tr_Addr_Union_from_val(to_addr.addressField), *);
+       var charstring branch_value;
+
+       branch_value := 
f_sip_gen_branch(f_sip_SipAddr_to_str(g_pars.registrar_sip_record),
+                                        
f_sip_SipAddr_to_str(g_pars.registrar_sip_record),
+                                        g_pars.registrar_sip_call_id,
+                                        g_pars.registrar_sip_seq_nr);
+
+       via.viaBody[0].viaParams := f_sip_param_set(via.viaBody[0].viaParams, 
"branch", branch_value);
+       from_addr.fromParams := f_sip_param_set(from_addr.fromParams, "tag", 
f_sip_rand_tag());
+       SIP.send(ts_SIP_REGISTER(g_pars.registrar_sip_req_uri,
+                                g_pars.registrar_sip_call_id,
+                                from_addr,
+                                to_addr,
+                                via,
+                                g_pars.registrar_sip_seq_nr,
+                                g_pars.local_contact,
+                                ts_Expires("0"),
+                                authorization := g_pars.authorization));

        /* Wait for OK answer */
        exp := tr_SIP_Response(

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7
Gerrit-Change-Number: 37193
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: neels <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to