- Check if TdiBuildNullConnectionInfo completed successfully

- Add a comment
 - Fail if we can't allocate Qelt

svn path=/branches/aicom-network-fixes/; revision=35786
This commit is contained in:
Cameron Gutman 2008-08-30 02:53:20 +00:00
parent b8a0800ce6
commit 1cc8981800

View file

@ -98,7 +98,7 @@ static NTSTATUS NTAPI ListenComplete
( PDEVICE_OBJECT DeviceObject, ( PDEVICE_OBJECT DeviceObject,
PIRP Irp, PIRP Irp,
PVOID Context ) { PVOID Context ) {
NTSTATUS Status = STATUS_FILE_CLOSED; NTSTATUS Status = STATUS_SUCCESS;
PAFD_FCB FCB = (PAFD_FCB)Context; PAFD_FCB FCB = (PAFD_FCB)Context;
PAFD_TDI_OBJECT_QELT Qelt; PAFD_TDI_OBJECT_QELT Qelt;
@ -107,7 +107,7 @@ static NTSTATUS NTAPI ListenComplete
return STATUS_CANCELLED; return STATUS_CANCELLED;
} }
if( !SocketAcquireStateLock( FCB ) ) return Status; if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
FCB->ListenIrp.InFlightRequest = NULL; FCB->ListenIrp.InFlightRequest = NULL;
@ -122,8 +122,10 @@ static NTSTATUS NTAPI ListenComplete
Qelt = ExAllocatePool( NonPagedPool, sizeof(*Qelt) ); Qelt = ExAllocatePool( NonPagedPool, sizeof(*Qelt) );
if( !Qelt ) { if( !Qelt ) {
/* Is this correct? */
TdiCloseDevice( FCB->Connection.Handle, TdiCloseDevice( FCB->Connection.Handle,
FCB->Connection.Object ); FCB->Connection.Object );
Status = STATUS_NO_MEMORY;
} else { } else {
UINT AddressType = UINT AddressType =
FCB->LocalAddress->Address[0].AddressType; FCB->LocalAddress->Address[0].AddressType;
@ -136,11 +138,12 @@ static NTSTATUS NTAPI ListenComplete
ConnectionReturnInfo->RemoteAddress)); ConnectionReturnInfo->RemoteAddress));
TdiBuildNullConnectionInfo( &Qelt->ConnInfo, AddressType ); TdiBuildNullConnectionInfo( &Qelt->ConnInfo, AddressType );
TaCopyTransportAddressInPlace if( Qelt->ConnInfo ) {
( Qelt->ConnInfo->RemoteAddress, TaCopyTransportAddressInPlace
FCB->ListenIrp.ConnectionReturnInfo->RemoteAddress ); ( Qelt->ConnInfo->RemoteAddress,
FCB->ListenIrp.ConnectionReturnInfo->RemoteAddress );
InsertTailList( &FCB->PendingConnections, &Qelt->ListEntry ); InsertTailList( &FCB->PendingConnections, &Qelt->ListEntry );
} else Status = STATUS_NO_MEMORY;
} }
/* Satisfy a pre-accept request if one is available */ /* Satisfy a pre-accept request if one is available */
@ -168,7 +171,7 @@ static NTSTATUS NTAPI ListenComplete
SocketStateUnlock( FCB ); SocketStateUnlock( FCB );
return STATUS_SUCCESS; return Status;
} }
NTSTATUS AfdListenSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, NTSTATUS AfdListenSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,