diff --git a/reactos/drivers/fs/np/create.c b/reactos/drivers/fs/np/create.c index e13fefe6430..c0ac915829d 100644 --- a/reactos/drivers/fs/np/create.c +++ b/reactos/drivers/fs/np/create.c @@ -1,4 +1,4 @@ -/* $Id: create.c,v 1.28 2004/12/30 16:15:10 ekohl Exp $ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -157,6 +157,7 @@ NpfsCreate(PDEVICE_OBJECT DeviceObject, return STATUS_NO_MEMORY; } + ClientFcb->Thread = (struct ETHREAD *)Irp->Tail.Overlay.Thread; ClientFcb->Pipe = Pipe; ClientFcb->PipeEnd = FILE_PIPE_CLIENT_END; ClientFcb->OtherSide = NULL; @@ -197,7 +198,8 @@ NpfsCreate(PDEVICE_OBJECT DeviceObject, /* Add the client FCB to the pipe FCB list. */ InsertTailList(&Pipe->ClientFcbListHead, &ClientFcb->FcbListEntry); - if (ServerFcb) + /* Connect pipes if they were created by the same thread */ + if (ServerFcb && ServerFcb->Thread == ClientFcb->Thread) { ClientFcb->OtherSide = ServerFcb; ServerFcb->OtherSide = ClientFcb; @@ -254,6 +256,7 @@ NpfsCreateNamedPipe(PDEVICE_OBJECT DeviceObject, return STATUS_NO_MEMORY; } + Fcb->Thread = (struct ETHREAD *)Irp->Tail.Overlay.Thread; KeLockMutex(&DeviceExt->PipeListLock); /* diff --git a/reactos/drivers/fs/np/fsctrl.c b/reactos/drivers/fs/np/fsctrl.c index 54f597c21f9..f0d9d5c4433 100644 --- a/reactos/drivers/fs/np/fsctrl.c +++ b/reactos/drivers/fs/np/fsctrl.c @@ -1,4 +1,4 @@ -/* $Id: fsctrl.c,v 1.18 2004/12/30 12:34:27 ekohl Exp $ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -59,7 +59,6 @@ NpfsConnectPipe(PNPFS_FCB Fcb) break; } - #if 0 if (ClientFcb->PipeState == FILE_PIPE_LISTENING_STATE) { diff --git a/reactos/drivers/fs/np/npfs.h b/reactos/drivers/fs/np/npfs.h index 92d59c4b1d9..db552a55ec2 100644 --- a/reactos/drivers/fs/np/npfs.h +++ b/reactos/drivers/fs/np/npfs.h @@ -1,4 +1,4 @@ -/* $Id: npfs.h,v 1.17 2004/05/10 19:58:10 navaraf Exp $ */ +/* $Id$ */ #ifndef __SERVICES_FS_NP_NPFS_H #define __SERVICES_FS_NP_NPFS_H @@ -9,7 +9,7 @@ */ #define FIN_WORKAROUND_READCLOSE -typedef struct +typedef struct _NPFS_DEVICE_EXTENSION { LIST_ENTRY PipeListHead; KMUTEX PipeListLock; @@ -18,7 +18,7 @@ typedef struct ULONG MaxQuota; } NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION; -typedef struct +typedef struct _NPFS_PIPE { UNICODE_STRING PipeName; LIST_ENTRY PipeListEntry; @@ -41,6 +41,7 @@ typedef struct _NPFS_FCB { LIST_ENTRY FcbListEntry; struct _NPFS_FCB* OtherSide; + struct ETHREAD *Thread; PNPFS_PIPE Pipe; KEVENT ConnectEvent; KEVENT Event;