diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c
index b7178add9ecd88b090edf350041f63653fc36b74..0ceaae216a166257fbb6b7c547169f68c4f683e6 100644
--- a/tests/server/sockfilt.c
+++ b/tests/server/sockfilt.c
@@ -568,14 +568,18 @@ static DWORD WINAPI select_ws_stdin_wait_thread(LPVOID lpParameter)
     case FILE_TYPE_PIPE:
       while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
             == WAIT_OBJECT_0 + 1) {
-        if(!PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
+        if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
+          if(length == 0)
+            SleepEx(100, FALSE);
+          else
+            break;
+        }
+        else {
           if(GetLastError() == ERROR_BROKEN_PIPE)
             SleepEx(100, FALSE);
           else
             break;
         }
-        else
-          break;
       }
       break;