pespin submitted this change.

View Change


Approvals: pespin: Looks good to me, approved neels: Looks good to me, but someone else must approve Jenkins Builder: Verified
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(-)

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 change 37193. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7
Gerrit-Change-Number: 37193
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged