diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp
index be64dd1..41a3968 100644
--- a/library/IPA_Emulation.ttcnpp
+++ b/library/IPA_Emulation.ttcnpp
@@ -201,6 +201,10 @@
 	var IPL4asp_Types.Result res;
 	res := IPA_CodecPort_CtrlFunct.f_IPL4_connect(IPA_PORT, remote_host, remote_port,
 						local_host, local_port, 0, { tcp:={} });
+	if (not ispresent(res.connId)) {
+		setverdict(fail, "Could not connect IPA socket, check your configuration");
+		self.stop;
+	}
 	g_ipa_conn_id := res.connId;
 	g_ccm_pars := ccm_pars;
 	g_is_bsc_mgw := true;
@@ -212,6 +216,10 @@
 	var IPL4asp_Types.Result res;
 	res := IPA_CodecPort_CtrlFunct.f_IPL4_listen(IPA_PORT, 
 						local_host, local_port, { tcp:={} });
+	if (not ispresent(res.connId)) {
+		setverdict(fail, "Could not listen IPA socket, check your configuration");
+		self.stop;
+	}
 	g_ipa_conn_id := res.connId;
 	g_ccm_pars := ccm_pars;
 	g_is_bsc_mgw := false;
diff --git a/library/MGCP_Emulation.ttcn b/library/MGCP_Emulation.ttcn
index aaef39e..e2f79b3 100644
--- a/library/MGCP_Emulation.ttcn
+++ b/library/MGCP_Emulation.ttcn
@@ -237,7 +237,10 @@
 	} else {
 		res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, p.callagent_ip, p.callagent_udp_port, p.mgw_ip, p.mgw_udp_port, -1, { udp:={} });
 	}
-
+	if (not ispresent(res.connId)) {
+		setverdict(fail, "Could not connect MGCP socket, check your configuration");
+		self.stop;
+	}
 	g_mgcp_conn_id := res.connId;
 
 	while (true) {
@@ -268,6 +271,10 @@
 				/* we aren't yet connected to the remote side port, let's fix this */
 				p.callagent_udp_port := mrf.remPort;
 				res := MGCP_CodecPort_CtrlFunct.f_IPL4_connect(MGCP, p.callagent_ip, p.callagent_udp_port, p.mgw_ip, p.mgw_udp_port, g_mgcp_conn_id, { udp:={} });
+				if (not ispresent(res.connId)) {
+					setverdict(fail, "Could not connect MGCP socket, check your configuration");
+					self.stop;
+				}
 			}
 			if (ischosen(mrf.msg.command)) {
 				cmd := mrf.msg.command;
diff --git a/library/NS_Emulation.ttcn b/library/NS_Emulation.ttcn
index 27acae2..d43d15c 100644
--- a/library/NS_Emulation.ttcn
+++ b/library/NS_Emulation.ttcn
@@ -81,6 +81,10 @@
 		var Result res;
 		/* Connect the UDP socket */
 		res := f_IPL4_connect(NSCP, mp_remote_ip, mp_remote_udp_port, mp_local_ip, mp_local_udp_port, 0, { udp := {}});
+		if (not ispresent(res.connId)) {
+			setverdict(fail, "Could not connect NS UDP socket, check your configuration");
+			self.stop;
+		}
 		g_conn_id := res.connId;
 		f_change_state(NSE_S_DEAD_BLOCKED);
 		/* Send the first NS-ALIVE to test the connection */
diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn
index a3a0509..20e4299 100644
--- a/library/RTP_Emulation.ttcn
+++ b/library/RTP_Emulation.ttcn
@@ -264,10 +264,18 @@
 			}
 			res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTP, g_local_host,
 								g_local_port, {udp:={}});
+			if (not ispresent(res.connId)) {
+				setverdict(fail, "Could not listen on RTP socket, check your configuration");
+				self.stop;
+			}
 			g_rtp_conn_id := res.connId;
 			tr_rtp.connId := g_rtp_conn_id;
 			res := RTP_CodecPort_CtrlFunct.f_IPL4_listen(RTCP, g_local_host,
 								g_local_port+1, {udp:={}});
+			if (not ispresent(res.connId)) {
+				setverdict(fail, "Could not listen on RTCP socket, check your configuration");
+				self.stop;
+			}
 			g_rtcp_conn_id := res.connId;
 			tr_rtcp.connId := g_rtcp_conn_id;
 			CTRL.reply(RTPEM_bind:{g_local_host, g_local_port});
@@ -282,10 +290,18 @@
 								g_remote_port,
 								g_local_host, g_local_port,
 								g_rtp_conn_id, {udp:={}});
+			if (not ispresent(res.connId)) {
+				setverdict(fail, "Could not connect to RTP socket, check your configuration");
+				self.stop;
+			}
 			res := RTP_CodecPort_CtrlFunct.f_IPL4_connect(RTCP, g_remote_host,
 								g_remote_port+1,
 								g_local_host, g_local_port+1,
 								g_rtcp_conn_id, {udp:={}});
+			if (not ispresent(res.connId)) {
+				setverdict(fail, "Could not connect to RTCP socket, check your configuration");
+				self.stop;
+			}
 			CTRL.reply(RTPEM_connect:{g_remote_host, g_remote_port});
 		}
 		[] CTRL.getcall(RTPEM_mode:{RTPEM_MODE_NONE}) {
diff --git a/library/SMPP_Emulation.ttcn b/library/SMPP_Emulation.ttcn
index 83e7801..c14340c 100644
--- a/library/SMPP_Emulation.ttcn
+++ b/library/SMPP_Emulation.ttcn
@@ -134,6 +134,10 @@
 	var IPL4asp_Types.Result res;
 	res := SMPP_CodecPort_CtrlFunct.f_IPL4_connect(SMPP_PORT, remote_host, remote_port,
 							local_host, local_port, 0, { tcp :={} });
+	if (not ispresent(res.connId)) {
+		setverdict(fail, "Could not connect to SMPP port, check your configuration");
+		self.stop;
+	}
 	g_smpp_conn_id := res.connId;
 }
 
