From a2c84355ef888757bd137320ef367b7eda31a6b0 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Wed, 3 Aug 2011 03:57:30 +0000 Subject: [PATCH] [CSRSS]: Fix broken logic. svn path=/trunk/; revision=53042 --- reactos/ntoskrnl/lpc/complete.c | 11 ++++++++++- reactos/subsystems/win32/csrss/csrsrv/api/wapi.c | 15 ++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/lpc/complete.c b/reactos/ntoskrnl/lpc/complete.c index 67de3871976..1ef57631b62 100644 --- a/reactos/ntoskrnl/lpc/complete.c +++ b/reactos/ntoskrnl/lpc/complete.c @@ -148,7 +148,11 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, RtlCopyMemory(ConnectMessage + 1, ReplyMessage + 1, ConnectionInfoLength); /* At this point, if the caller refused the connection, go to cleanup */ - if (!AcceptConnection) goto Cleanup; + if (!AcceptConnection) + { + DPRINT1("LPC connection was refused\n"); + goto Cleanup; + } /* Otherwise, create the actual port */ Status = ObCreateObject(PreviousMode, @@ -222,6 +226,11 @@ NtAcceptConnectPort(OUT PHANDLE PortHandle, { /* Otherwise, quit */ ObDereferenceObject(ServerPort); + DPRINT1("Client section mapping failed: %lx\n", Status); + DPRINT1("View base, offset, size: %lx %lx %lx\n", + ServerPort->ClientSectionBase, + ConnectMessage->ClientView.ViewSize, + SectionOffset); goto Cleanup; } } diff --git a/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c b/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c index 14a33ab031c..98deb2b1675 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c +++ b/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c @@ -437,11 +437,20 @@ CsrpHandleConnectionRequest (PPORT_MESSAGE Request, DPRINT1("Unable to allocate or find data for process 0x%x\n", Request->ClientId.UniqueProcess); } + } + + if (ProcessData) + { + /* Attach the Shared Section */ + Status = CsrSrvAttachSharedSection(ProcessData, ConnectInfo); + if (NT_SUCCESS(Status)) + { + DPRINT1("Connection ok\n"); + AllowConnection = TRUE; + } else { - /* Attach the Shared Section */ - Status = CsrSrvAttachSharedSection(ProcessData, ConnectInfo); - if (NT_SUCCESS(Status)) AllowConnection = TRUE; + DPRINT1("Shared section map failed: %lx\n", Status); } }