diff --git a/reactos/lib/kernel32/file/npipe.c b/reactos/lib/kernel32/file/npipe.c index 32a8e7d8cb9..687888b1baa 100644 --- a/reactos/lib/kernel32/file/npipe.c +++ b/reactos/lib/kernel32/file/npipe.c @@ -330,6 +330,9 @@ ConnectNamedPipe(HANDLE hNamedPipe, 0, NULL, 0); + if ((lpOverlapped != NULL) && (Status == STATUS_PENDING)) + return TRUE; + if ((lpOverlapped == NULL) && (Status == STATUS_PENDING)) { Status = NtWaitForSingleObject(hNamedPipe, @@ -338,17 +341,19 @@ ConnectNamedPipe(HANDLE hNamedPipe, if (!NT_SUCCESS(Status)) { SetLastErrorByStatus(Status); - return(FALSE); + return FALSE; } Status = Iosb.Status; } + if ((!NT_SUCCESS(Status) && Status != STATUS_PIPE_CONNECTED) || (Status == STATUS_PENDING)) { SetLastErrorByStatus(Status); - return(FALSE); + return FALSE; } - return(TRUE); + + return TRUE; }