TDI_RECEIVE_NORMAL,
FCB->Recv.Window + FCB->Recv.Content,
FCB->Recv.Size - FCB->Recv.Content,
- &FCB->ReceiveIrp.Iosb,
ReceiveComplete,
FCB );
}
PIRP NextIrp;
PIO_STACK_LOCATION NextIrpSp;
PAFD_RECV_INFO RecvReq;
- UINT TotalBytesCopied = 0, RetBytesCopied = 0;
+ UINT TotalBytesCopied = 0;
NTSTATUS Status = STATUS_SUCCESS, RetStatus = STATUS_PENDING;
AFD_DbgPrint(MID_TRACE,("%p %p\n", FCB, Irp));
}
else
{
- /* Unexpected disconnect by the remote host or initial read after a graceful disconnnect */
+ /* Unexpected disconnect by the remote host or initial read after a graceful disconnect */
Status = FCB->LastReceiveStatus;
}
NextIrp->IoStatus.Status = Status;
NextIrp->IoStatus.Information = TotalBytesCopied;
if( NextIrp == Irp ) {
RetStatus = Status;
- RetBytesCopied = TotalBytesCopied;
}
if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation( NextIrp ) );
(void)IoSetCancelRoutine(NextIrp, NULL);
AFD_DbgPrint(MID_TRACE,("RetStatus for irp %p is %x\n", Irp, RetStatus));
- /* Sometimes we're called with a NULL Irp */
- if( Irp ) {
- Irp->IoStatus.Status = RetStatus;
- Irp->IoStatus.Information = RetBytesCopied;
- }
-
return RetStatus;
}
if (!(RecvReq->TdiFlags & TDI_RECEIVE_PEEK))
{
FCB->Recv.Content -= DatagramRecv->Len;
- ExFreePool( DatagramRecv->Address );
- ExFreePool( DatagramRecv );
+ ExFreePoolWithTag(DatagramRecv->Address, TAG_AFD_TRANSPORT_ADDRESS);
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
}
AFD_DbgPrint(MID_TRACE,("Done\n"));
while( !IsListEmpty( &FCB->DatagramList ) ) {
DatagramRecvEntry = RemoveHeadList(&FCB->DatagramList);
DatagramRecv = CONTAINING_RECORD(DatagramRecvEntry, AFD_STORED_DATAGRAM, ListEntry);
- ExFreePool( DatagramRecv->Address );
- ExFreePool( DatagramRecv );
+ ExFreePoolWithTag(DatagramRecv->Address, TAG_AFD_TRANSPORT_ADDRESS);
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
}
SocketStateUnlock( FCB );
return STATUS_FILE_CLOSED;
}
- DatagramRecv = ExAllocatePool( NonPagedPool, DGSize );
+ DatagramRecv = ExAllocatePoolWithTag(NonPagedPool,
+ DGSize,
+ TAG_AFD_STORED_DATAGRAM);
if( DatagramRecv ) {
DatagramRecv->Len = Irp->IoStatus.Information;
} else Status = STATUS_NO_MEMORY;
if( !NT_SUCCESS( Status ) ) {
- if( DatagramRecv ) ExFreePool( DatagramRecv );
+
+ if (DatagramRecv)
+ {
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
+ }
+
SocketStateUnlock( FCB );
return Status;
} else {
FCB->Recv.Window,
FCB->Recv.Size,
FCB->AddressFrom,
- &FCB->ReceiveIrp.Iosb,
PacketSocketRecvComplete,
FCB );
}