- Fix many memory leaks

- Complete with the correct status

svn path=/branches/aicom-network-fixes/; revision=35656
This commit is contained in:
Cameron Gutman 2008-08-26 02:57:12 +00:00
parent d4296ce6a5
commit 92073dfb72

View file

@ -89,8 +89,10 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
if( Status == STATUS_PENDING ) {
InsertHeadList( &Connection->ListenRequest, &Bucket->Entry );
break;
} else
} else {
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
}
}
}
@ -141,6 +143,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Complete( Bucket->Request.RequestContext,
STATUS_SUCCESS, Received );
PoolFreeBuffer( Bucket );
} else if( Status == STATUS_PENDING ) {
InsertHeadList
( &Connection->ReceiveRequest, &Bucket->Entry );
@ -150,6 +153,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
("Completing Receive request: %x %x\n",
Bucket->Request, Status));
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
}
}
}
@ -198,6 +202,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Complete( Bucket->Request.RequestContext,
STATUS_SUCCESS, Sent );
PoolFreeBuffer( Bucket );
} else if( Status == STATUS_PENDING ) {
InsertHeadList
( &Connection->SendRequest, &Bucket->Entry );
@ -207,6 +212,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
("Completing Send request: %x %x\n",
Bucket->Request, Status));
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
}
}
}
@ -225,13 +231,15 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
ListsToErase[2] = &Connection->ConnectRequest;
IrpStatus [2] = STATUS_UNSUCCESSFUL;
ListsToErase[3] = 0;
IrpStatus [3] = 0;
for( i = 0; ListsToErase[i]; i++ ) {
while( !IsListEmpty( ListsToErase[i] ) ) {
Entry = RemoveHeadList( ListsToErase[i] );
Bucket = CONTAINING_RECORD( Entry, TDI_BUCKET, Entry );
Complete = Bucket->Request.RequestNotifyObject;
Complete( Bucket->Request.RequestContext, STATUS_SUCCESS, 0 );
Complete( Bucket->Request.RequestContext, IrpStatus[i], 0 );
PoolFreeBuffer( Bucket );
}
}
}