From ec037e4d9dd69664a0c1022945cb1ab1bf2400b0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 17 Aug 2008 21:48:09 +0000 Subject: [PATCH] - Call SocketStateUnlock before returning - Don't complete the IRP again in the completion routine svn path=/branches/aicom-network-fixes/; revision=35418 --- drivers/network/afd/afd/connect.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/network/afd/afd/connect.c b/drivers/network/afd/afd/connect.c index 77d9f0aa94a..ff55ef8ea2b 100644 --- a/drivers/network/afd/afd/connect.c +++ b/drivers/network/afd/afd/connect.c @@ -77,7 +77,7 @@ static NTSTATUS NTAPI StreamSocketConnectComplete /* I was wrong about this before as we can have pending writes to a not * yet connected socket */ - if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp ); + if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED; AFD_DbgPrint(MID_TRACE,("Irp->IoStatus.Status = %x\n", Irp->IoStatus.Status)); @@ -108,7 +108,10 @@ static NTSTATUS NTAPI StreamSocketConnectComplete if( NT_SUCCESS(Status) ) { Status = MakeSocketIntoConnection( FCB ); - if( !NT_SUCCESS(Status) ) return Status; + if( !NT_SUCCESS(Status) ) { + SocketStateUnlock( FCB ); + return Status; + } if( !IsListEmpty( &FCB->PendingIrpList[FUNCTION_SEND] ) ) { NextIrpEntry = RemoveHeadList(&FCB->PendingIrpList[FUNCTION_SEND]);