diff -Naur vortex-1.0.15.b3522.g3524/src/vortex_connection.c vortex-1.0.15.b3522.g3524.huti/src/vortex_connection.c
--- vortex-1.0.15.b3522.g3524/src/vortex_connection.c	2008-06-30 17:42:31.000000000 +0200
+++ vortex-1.0.15.b3522.g3524.huti/src/vortex_connection.c	2008-10-20 11:29:36.000000000 +0200
@@ -1196,6 +1196,10 @@
 				 int                 * wait_period)
 {
 	int        err = -2;
+#if defined(AXL_OS_UNIX)
+	int           sock_err=0;	
+	unsigned int  sock_err_len;
+#endif
 	axlPointer wait_set;
 	int        start_time;
 
@@ -1238,6 +1242,17 @@
 		err = vortex_io_waiting_invoke_wait (wait_set, conn->session, wait_for);
 		vortex_log (LOG_DOMAIN, VORTEX_LEVEL_DEBUG, "__vortex_connection_wait_on (id=%d, sock=%d) operation finished, err=%d, errno=%d (%s) (ellapsed: %d)",
 			    conn->id, conn->session, err, errno, vortex_errno_get_error (errno), time (NULL) - start_time);
+#if defined(AXL_OS_UNIX)
+		sock_err_len=sizeof(sock_err);
+		if(getsockopt(conn->session, SOL_SOCKET, SO_ERROR, (char*)&sock_err, &sock_err_len)<0){
+			vortex_log (LOG_DOMAIN, VORTEX_LEVEL_WARNING, "failed to get error level on waiting socket");
+			err = -5;
+		}
+		else if(sock_err){
+			vortex_log (LOG_DOMAIN, VORTEX_LEVEL_WARNING, "error level set on waiting socket");
+			err = -6;
+		}
+#endif
 		
 		if(err == -1 /* EINTR */ || err == -2 /* SSL */)
 			continue;

