Thread->LpcReplyMessageId = 0;
/* Check if there's a reply message */
- Message = Thread->LpcReplyMessage;
+ Message = LpcpGetMessageFromThread(Thread);
if (Message)
{
/* FIXME: TODO */
- KEBUGCHECK(0);
+ ASSERT(FALSE);
}
/* Release the lock */
PETHREAD Thread = NULL;
BOOLEAN LockHeld = Flags & 1, ReleaseLock = Flags & 2;
PAGED_CODE();
- DPRINT1("Message: %p. Flags: %lx\n", Message, Flags);
+ LPCTRACE(LPC_CLOSE_DEBUG, "Message: %p. Flags: %lx\n", Message, Flags);
/* Acquire the lock if not already */
if (!LockHeld) KeAcquireGuardedMutex(&LpcpLock);
{
/* Disconnect it */
Port->ConnectedPort->ConnectedPort = NULL;
- if (Port->ConnectedPort->ConnectionPort)
+ ConnectionPort = Port->ConnectedPort->ConnectionPort;
+ if (ConnectionPort)
{
- /* Save and clear connection port */
- ConnectionPort = Port->ConnectedPort->ConnectionPort;
+ /* Clear connection port */
Port->ConnectedPort->ConnectionPort = NULL;
}
}
if (!KeReadStateSemaphore(&Thread->LpcReplySemaphore))
{
/* Get the message */
- Message = Thread->LpcReplyMessage;
+ Message = LpcpGetMessageFromThread(Thread);
if (Message)
{
/* Check if it's a connection request */
/* Loop queued messages */
while ((Port->MsgQueue.ReceiveHead.Flink) &&
- !(IsListEmpty (&Port->MsgQueue.ReceiveHead)))
+ !(IsListEmpty(&Port->MsgQueue.ReceiveHead)))
{
/* Get the message */
Message = CONTAINING_RECORD(Port->MsgQueue.ReceiveHead.Flink,
/* Setup the client died message */
ClientDiedMsg.h.u1.s1.TotalLength = sizeof(ClientDiedMsg);
ClientDiedMsg.h.u1.s1.DataLength = sizeof(ClientDiedMsg.CreateTime);
- ClientDiedMsg.h.u2.ZeroInit = LPC_PORT_CLOSED;
+ ClientDiedMsg.h.u2.ZeroInit = 0;
+ ClientDiedMsg.h.u2.s2.Type = LPC_PORT_CLOSED;
ClientDiedMsg.CreateTime = PsGetCurrentProcess()->CreateTime;
/* Send it */
for (;;)
{
- /* FIXME: HACK OF D00m */
- break;
-
/* Send the message */
if (LpcRequestPort(Port,
&ClientDiedMsg.h) != STATUS_NO_MEMORY) break;