diff options
-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 */ |