diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-11-23 18:51:28 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-11-23 18:51:28 +0100 |
commit | 5cc4aa2f06c005ca9f5a81d30934ce4ca3a54662 (patch) | |
tree | 1af00e48a86d2187f5f0803f5e57af8253a1bbb4 | |
parent | ab05d6cf97b43a1c02913a29b86043269391887d (diff) |
BSSMAP_Emulation: Fix handling of userData
We cannot pass an unbound octetstring record member into a template
argument of a function :/
-rw-r--r-- | library/BSSMAP_Emulation.ttcn | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/library/BSSMAP_Emulation.ttcn b/library/BSSMAP_Emulation.ttcn index 9e4d5c3e..5cf53423 100644 --- a/library/BSSMAP_Emulation.ttcn +++ b/library/BSSMAP_Emulation.ttcn @@ -145,12 +145,8 @@ runs on BSSMAP_Emulation_CT { } /* handle (optional) userData portion of various primitives and dispatch it to the client */ -private function f_handle_userData(BSSAP_ConnHdlr client, template octetstring userdata) +private function f_handle_userData(BSSAP_ConnHdlr client, octetstring userdata) runs on BSSMAP_Emulation_CT { - if (not isvalue(userdata)) { - return; - } - /* decode + send decoded BSSAP to client */ var PDU_BSSAP bssap := dec_PDU_BSSAP(valueof(userdata)); CLIENT.send(bssap) to client; @@ -212,13 +208,17 @@ function main(BssmapOps ops) runs on BSSMAP_Emulation_CT { /* SCCP -> Client: connection-oriented data in existing connection */ [] SCCP.receive(ASP_SCCP_N_DATA_ind:?) -> value data_ind { vc_conn := f_comp_by_conn_id(data_ind.connectionId); - f_handle_userData(vc_conn, conn_ind.userData); + if (ispresent(data_ind.userData)) { + f_handle_userData(vc_conn, data_ind.userData); + } } /* SCCP -> Client: disconnect of an existing connection */ [] SCCP.receive(ASP_SCCP_N_DISCONNECT_ind:?) -> value disc_ind { vc_conn := f_comp_by_conn_id(disc_ind.connectionId); - f_handle_userData(vc_conn, disc_ind.userData); + if (ispresent(disc_ind.userData)) { + f_handle_userData(vc_conn, disc_ind.userData); + } /* notify client about termination */ var BSSAP_Conn_Prim prim := MSC_CONN_PRIM_DISC_IND; CLIENT.send(prim) to vc_conn; @@ -229,7 +229,9 @@ function main(BssmapOps ops) runs on BSSMAP_Emulation_CT { /* SCCP -> Client: connection confirm for outbound connection */ [] SCCP.receive(ASP_SCCP_N_CONNECT_cfm:?) -> value conn_cfm { /* handle user payload */ - f_handle_userData(vc_conn, conn_cfm.userData); + if (ispresent(conn_cfm.userData)) { + f_handle_userData(vc_conn, conn_cfm.userData); + } } /* Disconnect request client -> SCCP */ |