src/network/socket/qlocalserver_win.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/src/network/socket/qlocalserver_win.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/src/network/socket/qlocalserver_win.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -85,8 +85,10 @@
     if (!ConnectNamedPipe(listener.handle, &listener.overlapped)) {
         switch (GetLastError()) {
         case ERROR_IO_PENDING:
+            listener.connected = false;
             break;
         case ERROR_PIPE_CONNECTED:
+            listener.connected = true;
             SetEvent(eventHandle);
             break;
         default:
@@ -155,7 +157,9 @@
     // a client connection first, so there is no way around polling all of them.
     for (int i = 0; i < listeners.size(); ) {
         HANDLE handle = listeners[i].handle;
-        if (GetOverlappedResult(handle, &listeners[i].overlapped, &dummy, FALSE)) {
+        if (listeners[i].connected
+            || GetOverlappedResult(handle, &listeners[i].overlapped, &dummy, FALSE))
+        {
             listeners.removeAt(i);
 
             addListener();