library: CBSP_Adapter: Improve robustness of rebind and reconnect

Change-Id: Ibafbc8496eeadd0ea1b97056ef3b8a92bc43e9f1
diff --git a/library/CBSP_Adapter.ttcn b/library/CBSP_Adapter.ttcn
index fe399aa..de89d58 100644
--- a/library/CBSP_Adapter.ttcn
+++ b/library/CBSP_Adapter.ttcn
@@ -41,6 +41,10 @@
 runs on CBSP_Adapter_CT {
 	var IPL4asp_Types.Result res;
 	map(self:CBSP[idx], system:CBSP);
+	if (g_cbsp_conn_id[idx] != -1) {
+		CBSP_CodecPort_CtrlFunct.f_IPL4_close(CBSP[idx], g_cbsp_conn_id[idx], {tcp := {}});
+		g_cbsp_conn_id[idx] := -1;
+	}
 	res := CBSP_CodecPort_CtrlFunct.f_IPL4_connect(CBSP[idx], remote_host, remote_port,
 							local_host, local_port, 0, { tcp :={} });
 	if (not ispresent(res.connId)) {
@@ -58,7 +62,16 @@
 runs on CBSP_Adapter_CT {
 	var IPL4asp_Types.Result res;
 	map(self:CBSP[idx], system:CBSP);
+	if (g_cbsp_conn_id[idx] != -1) {
+		CBSP_CodecPort_CtrlFunct.f_IPL4_close(CBSP[idx], g_cbsp_conn_id[idx], {tcp := {}});
+		g_cbsp_conn_id[idx] := -1;
+	}
 	res := CBSP_CodecPort_CtrlFunct.f_IPL4_listen(CBSP[idx], local_host, local_port, { tcp:={} });
+	if (not ispresent(res.connId)) {
+		setverdict(fail, "Could not bind to CBSP port, check your configuration ",
+			   "{local ", local_host, ":", local_port, "}");
+		mtc.stop;
+	}
 	g_cbsp_conn_id[idx] := res.connId;
 
 	f_set_tcp_segmentation(idx);