mirror of
https://github.com/reactos/reactos.git
synced 2024-08-04 10:30:59 +00:00
[IP]
- Merge r53134 and r53135 from the GSoC TCP/IP branch svn path=/trunk/; revision=53143
This commit is contained in:
parent
302ceb19e1
commit
2c6c184457
|
@ -12,6 +12,8 @@
|
|||
|
||||
#include "rosip.h"
|
||||
|
||||
extern NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
|
||||
|
||||
NTSTATUS TCPCheckPeerForAccept(PVOID Context,
|
||||
PTDI_REQUEST_KERNEL Request)
|
||||
{
|
||||
|
@ -118,7 +120,7 @@ BOOLEAN TCPAbortListenForSocket
|
|||
{
|
||||
DereferenceObject(Bucket->AssociatedEndpoint);
|
||||
RemoveEntryList( &Bucket->Entry );
|
||||
ExFreePoolWithTag( Bucket, TDI_BUCKET_TAG );
|
||||
ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
|
||||
Found = TRUE;
|
||||
break;
|
||||
}
|
||||
|
@ -143,9 +145,7 @@ NTSTATUS TCPAccept ( PTDI_REQUEST Request,
|
|||
|
||||
LockObject(Listener, &OldIrql);
|
||||
|
||||
Bucket = (PTDI_BUCKET)ExAllocatePoolWithTag(NonPagedPool,
|
||||
sizeof(*Bucket),
|
||||
TDI_BUCKET_TAG );
|
||||
Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
|
||||
|
||||
if (Bucket)
|
||||
{
|
||||
|
|
|
@ -30,6 +30,8 @@ static const char * const tcp_state_str[] = {
|
|||
"TIME_WAIT"
|
||||
};
|
||||
|
||||
extern NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
|
||||
|
||||
static
|
||||
VOID
|
||||
BucketCompletionWorker(PVOID Context)
|
||||
|
@ -43,7 +45,7 @@ BucketCompletionWorker(PVOID Context)
|
|||
|
||||
DereferenceObject(Bucket->AssociatedEndpoint);
|
||||
|
||||
ExFreePoolWithTag(Bucket, TDI_BUCKET_TAG);
|
||||
ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
|
||||
}
|
||||
|
||||
VOID
|
||||
|
|
|
@ -23,6 +23,8 @@ PORT_SET TCPPorts;
|
|||
|
||||
#include "rosip.h"
|
||||
|
||||
NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
|
||||
|
||||
VOID NTAPI
|
||||
DisconnectTimeoutDpc(PKDPC Dpc,
|
||||
PVOID DeferredContext,
|
||||
|
@ -85,8 +87,8 @@ VOID ConnectionFree(PVOID Object)
|
|||
PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint( PVOID ClientContext )
|
||||
{
|
||||
PCONNECTION_ENDPOINT Connection = (PCONNECTION_ENDPOINT)
|
||||
ExAllocatePoolWithTag(NonPagedPool, sizeof(CONNECTION_ENDPOINT),
|
||||
CONN_ENDPT_TAG);
|
||||
ExAllocatePoolWithTag(NonPagedPool, sizeof(CONNECTION_ENDPOINT), CONN_ENDPT_TAG);
|
||||
|
||||
if (!Connection)
|
||||
return Connection;
|
||||
|
||||
|
@ -196,6 +198,14 @@ NTSTATUS TCPStartup(VOID)
|
|||
{
|
||||
return Status;
|
||||
}
|
||||
|
||||
ExInitializeNPagedLookasideList(&TdiBucketLookasideList,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
sizeof(TDI_BUCKET),
|
||||
TDI_BUCKET_TAG,
|
||||
0);
|
||||
|
||||
/* Initialize our IP library */
|
||||
LibIPInitialize();
|
||||
|
@ -218,6 +228,8 @@ NTSTATUS TCPShutdown(VOID)
|
|||
{
|
||||
if (!TCPInitialized)
|
||||
return STATUS_SUCCESS;
|
||||
|
||||
ExDeleteNPagedLookasideList(&TdiBucketLookasideList);
|
||||
|
||||
LibIPShutdown();
|
||||
|
||||
|
@ -348,7 +360,7 @@ NTSTATUS TCPConnect
|
|||
{
|
||||
connaddr.addr = RemoteAddress.Address.IPv4Address;
|
||||
|
||||
Bucket = ExAllocatePoolWithTag( NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG );
|
||||
Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
|
||||
if (!Bucket)
|
||||
{
|
||||
UnlockObject(Connection, OldIrql);
|
||||
|
@ -418,13 +430,13 @@ NTSTATUS TCPDisconnect
|
|||
}
|
||||
|
||||
/* We couldn't complete the request now because we need to wait for outstanding I/O */
|
||||
Bucket = ExAllocatePoolWithTag(NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG);
|
||||
Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
|
||||
if (!Bucket)
|
||||
{
|
||||
UnlockObject(Connection, OldIrql);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
|
||||
Bucket->Request.RequestNotifyObject = (PVOID)Complete;
|
||||
Bucket->Request.RequestContext = Context;
|
||||
|
||||
|
@ -485,7 +497,7 @@ NTSTATUS TCPReceiveData
|
|||
|
||||
if (Status == STATUS_PENDING)
|
||||
{
|
||||
Bucket = ExAllocatePoolWithTag(NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG);
|
||||
Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
|
||||
if (!Bucket)
|
||||
{
|
||||
TI_DbgPrint(DEBUG_TCP,("[IP, TCPReceiveData] Failed to allocate bucket\n"));
|
||||
|
@ -544,7 +556,7 @@ NTSTATUS TCPSendData
|
|||
if (Status == STATUS_PENDING)
|
||||
{
|
||||
/* Freed in TCPSocketState */
|
||||
Bucket = ExAllocatePoolWithTag( NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG );
|
||||
Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
|
||||
if (!Bucket)
|
||||
{
|
||||
UnlockObject(Connection, OldIrql);
|
||||
|
@ -659,7 +671,7 @@ BOOLEAN TCPRemoveIRP( PCONNECTION_ENDPOINT Endpoint, PIRP Irp )
|
|||
if( Bucket->Request.RequestContext == Irp )
|
||||
{
|
||||
RemoveEntryList( &Bucket->Entry );
|
||||
ExFreePoolWithTag( Bucket, TDI_BUCKET_TAG );
|
||||
ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
|
||||
Found = TRUE;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue