ConnectNamedPipe(): STATUS_PIPE_CONNECTED reports a successful connect.

svn path=/trunk/; revision=3204
This commit is contained in:
Eric Kohl 2002-07-10 15:09:57 +00:00
parent 4684f7fe0e
commit 2ecad3b855

View file

@ -1,4 +1,4 @@
/* $Id: npipe.c,v 1.10 2002/06/25 18:49:38 ekohl Exp $ /* $Id: npipe.c,v 1.11 2002/07/10 15:09:57 ekohl Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries * PROJECT: ReactOS system libraries
@ -287,51 +287,52 @@ BOOL STDCALL
ConnectNamedPipe(HANDLE hNamedPipe, ConnectNamedPipe(HANDLE hNamedPipe,
LPOVERLAPPED lpOverlapped) LPOVERLAPPED lpOverlapped)
{ {
IO_STATUS_BLOCK Iosb; PIO_STATUS_BLOCK IoStatusBlock;
HANDLE hEvent; IO_STATUS_BLOCK Iosb;
PIO_STATUS_BLOCK IoStatusBlock; HANDLE hEvent;
NTSTATUS Status; NTSTATUS Status;
if (lpOverlapped != NULL) if (lpOverlapped != NULL)
{ {
lpOverlapped->Internal = STATUS_PENDING; lpOverlapped->Internal = STATUS_PENDING;
hEvent = lpOverlapped->hEvent; hEvent = lpOverlapped->hEvent;
IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped; IoStatusBlock = (PIO_STATUS_BLOCK)lpOverlapped;
} }
else else
{ {
IoStatusBlock = &Iosb; IoStatusBlock = &Iosb;
hEvent = NULL; hEvent = NULL;
} }
Status = NtFsControlFile(hNamedPipe, Status = NtFsControlFile(hNamedPipe,
hEvent, hEvent,
NULL, NULL,
NULL, NULL,
IoStatusBlock, IoStatusBlock,
FSCTL_PIPE_LISTEN, FSCTL_PIPE_LISTEN,
NULL, NULL,
0, 0,
NULL, NULL,
0); 0);
if ((lpOverlapped == NULL) && (Status == STATUS_PENDING)) if ((lpOverlapped == NULL) && (Status == STATUS_PENDING))
{ {
Status = NtWaitForSingleObject(hNamedPipe, Status = NtWaitForSingleObject(hNamedPipe,
FALSE, FALSE,
NULL); NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
SetLastErrorByStatus(Status); SetLastErrorByStatus(Status);
return(FALSE); return(FALSE);
} }
Status = Iosb.Status; Status = Iosb.Status;
} }
if (!NT_SUCCESS(Status) || (Status == STATUS_PENDING)) if ((!NT_SUCCESS(Status) && Status != STATUS_PIPE_CONNECTED) ||
{ (Status == STATUS_PENDING))
SetLastErrorByStatus (Status); {
return(FALSE); SetLastErrorByStatus(Status);
} return(FALSE);
return(TRUE); }
return(TRUE);
} }