diff --git a/server/sock.c b/server/sock.c
index 86248e7ad4def0a88a510947eae8f7759f6463b0..1efdbfd206c341afc5045823696ee08d7db7908f 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -461,6 +461,14 @@ DECL_HANDLER(set_socket_event)
     sock_reselect( sock );
     if (sock->mask)
         sock->state |= WS_FD_NONBLOCKING;
+
+    /* if a network event is pending, signal the event object 
+       it is possible that FD_CONNECT or FD_ACCEPT network events has happened
+       before a WSAEventSelect() was done on it. 
+       (when dealing with Asynchronous socket)  */
+    if (sock->pmask & sock->mask)
+        set_event(sock->event);
+    
     if (oevent)
     {
     	if ((oevent != sock->event) && (omask & WS_FD_SERVEVENT))