Author: cmihail
Date: Wed Jun  1 13:27:35 2011
New Revision: 52042

URL: http://svn.reactos.org/svn/reactos?rev=52042&view=rev
Log:
[TCPIP]
[FORMATTING]
This is just a code formatting phase. I reordered some of the code and put some 
debugging DbgPrint-s in order to help understand the control and data flow. 
Working on trying to stop the system from crashing when server socket gets 
closed.

Modified:
    branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/bind.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/connect.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/listen.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/main.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/tdi.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/dispatch.c
    branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/fileobjs.c
    branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/accept.c
    branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/tcp.c
    branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp.c
    branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/rostcp.c

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/bind.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/bind.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/bind.c [iso-8859-1] 
(original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/bind.c [iso-8859-1] 
Wed Jun  1 13:27:35 2011
@@ -13,17 +13,20 @@
 #include "tdiconn.h"
 #include "debug.h"
 
-NTSTATUS WarmSocketForBind( PAFD_FCB FCB ) {
+NTSTATUS WarmSocketForBind( PAFD_FCB FCB )
+{
     NTSTATUS Status;
 
     AFD_DbgPrint(MID_TRACE,("Called (AF %d)\n",
                             FCB->LocalAddress->Address[0].AddressType));
 
-    if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer ) {
+    if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer )
+    {
         AFD_DbgPrint(MID_TRACE,("Null Device\n"));
         return STATUS_NO_SUCH_DEVICE;
     }
-    if( !FCB->LocalAddress ) {
+    if( !FCB->LocalAddress )
+    {
         AFD_DbgPrint(MID_TRACE,("No local address\n"));
         return STATUS_INVALID_PARAMETER;
     }
@@ -54,7 +57,8 @@
 
 NTSTATUS NTAPI
 AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,
-             PIO_STACK_LOCATION IrpSp) {
+             PIO_STACK_LOCATION IrpSp)
+{
     NTSTATUS Status = STATUS_SUCCESS;
     PFILE_OBJECT FileObject = IrpSp->FileObject;
     PAFD_FCB FCB = FileObject->FsContext;
@@ -62,41 +66,44 @@
 
     AFD_DbgPrint(MID_TRACE,("Called\n"));
 
-    if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
-    if( !(BindReq = LockRequest( Irp, IrpSp )) )
-       return UnlockAndMaybeComplete( FCB, STATUS_NO_MEMORY,
-                                      Irp, 0 );
+    if ( !SocketAcquireStateLock( FCB ) )
+        return LostSocket( Irp );
+    if ( !(BindReq = LockRequest( Irp, IrpSp )) )
+           return UnlockAndMaybeComplete( FCB, STATUS_NO_MEMORY, Irp, 0 );
 
-    if( FCB->LocalAddress ) ExFreePool( FCB->LocalAddress );
-    FCB->LocalAddress = TaCopyTransportAddress( &BindReq->Address );
+    if ( FCB->LocalAddress ) ExFreePool( FCB->LocalAddress );
+        FCB->LocalAddress = TaCopyTransportAddress( &BindReq->Address );
 
-    if( FCB->LocalAddress )
-       Status = TdiBuildConnectionInfo( &FCB->AddressFrom,
-                                        FCB->LocalAddress );
+    if (FCB->LocalAddress)
+           Status = TdiBuildConnectionInfo( &FCB->AddressFrom,
+                                            FCB->LocalAddress );
 
-    if( NT_SUCCESS(Status) )
-       Status = WarmSocketForBind( FCB );
+    if (NT_SUCCESS(Status))
+           Status = WarmSocketForBind( FCB );
+    
     AFD_DbgPrint(MID_TRACE,("FCB->Flags %x\n", FCB->Flags));
 
-    if( !NT_SUCCESS(Status) )
+    if (!NT_SUCCESS(Status))
         return UnlockAndMaybeComplete(FCB, Status, Irp, 0);
 
-    if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS ) {
-       AFD_DbgPrint(MID_TRACE,("Calling TdiReceiveDatagram\n"));
+    if (FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS)
+    {
+           AFD_DbgPrint(MID_TRACE,("Calling TdiReceiveDatagram\n"));
 
-       Status = TdiReceiveDatagram
-           ( &FCB->ReceiveIrp.InFlightRequest,
-             FCB->AddressFile.Object,
-             0,
-             FCB->Recv.Window,
-             FCB->Recv.Size,
-             FCB->AddressFrom,
-             &FCB->ReceiveIrp.Iosb,
-             PacketSocketRecvComplete,
-             FCB );
+           Status = TdiReceiveDatagram
+               ( &FCB->ReceiveIrp.InFlightRequest,
+                 FCB->AddressFile.Object,
+                 0,
+                 FCB->Recv.Window,
+                 FCB->Recv.Size,
+                 FCB->AddressFrom,
+                 &FCB->ReceiveIrp.Iosb,
+                 PacketSocketRecvComplete,
+                 FCB );
 
-       /* We don't want to wait for this read to complete. */
-       if( Status == STATUS_PENDING ) Status = STATUS_SUCCESS;
+           /* We don't want to wait for this read to complete. */
+           if (Status == STATUS_PENDING)
+            Status = STATUS_SUCCESS;
     }
 
     if (NT_SUCCESS(Status))

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/connect.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/connect.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/connect.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/connect.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -185,7 +185,8 @@
 }
 
 
-NTSTATUS WarmSocketForConnection( PAFD_FCB FCB ) {
+NTSTATUS WarmSocketForConnection( PAFD_FCB FCB )
+{
     NTSTATUS Status;
 
     if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer )
@@ -198,7 +199,8 @@
                                            &FCB->Connection.Handle,
                                            &FCB->Connection.Object );
 
-    if( NT_SUCCESS(Status) ) {
+    if( NT_SUCCESS(Status) )
+    {
         Status = TdiAssociateAddressFile( FCB->AddressFile.Handle,
                                           FCB->Connection.Object );
     }
@@ -206,7 +208,8 @@
     return Status;
 }
 
-NTSTATUS MakeSocketIntoConnection( PAFD_FCB FCB ) {
+NTSTATUS MakeSocketIntoConnection( PAFD_FCB FCB )
+{
     NTSTATUS Status;
 
     ASSERT(!FCB->Recv.Window);

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/listen.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/listen.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/listen.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/listen.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -163,8 +163,8 @@
     AFD_DbgPrint(MID_TRACE,("Completing listen request.\n"));
     AFD_DbgPrint(MID_TRACE,("IoStatus was %x\n", FCB->ListenIrp.Iosb.Status));
 
-    DbgPrint("[ListenComplete] Completing listen request.\n");
-    DbgPrint("[ListenComplete] IoStatus was %x\n", FCB->ListenIrp.Iosb.Status);
+    DbgPrint("[AFD, ListenComplete] Completing listen request.\n");
+    DbgPrint("[AFD, ListenComplete] IoStatus was %x\n", 
FCB->ListenIrp.Iosb.Status);
 
     Qelt = ExAllocatePool( NonPagedPool, sizeof(*Qelt) );
     if( !Qelt )
@@ -182,7 +182,7 @@
                                 FCB->ListenIrp.
                                 ConnectionReturnInfo->RemoteAddress));
 
-        DbgPrint("[ListenComplete] Address Type: %d (RA %x)\n",
+        DbgPrint("[AFD, ListenComplete] Address Type: %d (RA %x)\n",
                     AddressType,
                     FCB->ListenIrp.
                     ConnectionReturnInfo->RemoteAddress);
@@ -250,7 +250,8 @@
     AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
     DbgPrint("[AfdListenSocket] Called on %x\n", FCB);
 
-    if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
+    if( !SocketAcquireStateLock( FCB ) )
+        return LostSocket( Irp );
 
     if( !(ListenReq = LockRequest( Irp, IrpSp )) )
            return UnlockAndMaybeComplete(FCB, STATUS_NO_MEMORY, Irp, 0);
@@ -273,16 +274,16 @@
     AFD_DbgPrint(MID_TRACE,("Status from warmsocket %x\n", Status));
     DbgPrint("[AfdListenSocket] Status from warmsocket %x\n", Status);
 
-    if( !NT_SUCCESS(Status) ) return UnlockAndMaybeComplete( FCB, Status, Irp, 
0 );
-
-    Status = TdiBuildNullConnectionInfo
-       ( &FCB->ListenIrp.ConnectionCallInfo,
+    if ( !NT_SUCCESS(Status) )
+        return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
+
+    Status = TdiBuildNullConnectionInfo(&FCB->ListenIrp.ConnectionCallInfo,
          FCB->LocalAddress->Address[0].AddressType );
 
-    if (!NT_SUCCESS(Status)) return UnlockAndMaybeComplete(FCB, Status, Irp, 
0);
-
-    Status = TdiBuildNullConnectionInfo
-       ( &FCB->ListenIrp.ConnectionReturnInfo,
+    if (!NT_SUCCESS(Status))
+        return UnlockAndMaybeComplete(FCB, Status, Irp, 0);
+
+    Status = TdiBuildNullConnectionInfo(&FCB->ListenIrp.ConnectionReturnInfo,
          FCB->LocalAddress->Address[0].AddressType );
 
     if (!NT_SUCCESS(Status))
@@ -302,14 +303,15 @@
                        ListenComplete,
                        FCB );
 
-    if( Status == STATUS_PENDING )
-       Status = STATUS_SUCCESS;
+    if (Status == STATUS_PENDING)
+           Status = STATUS_SUCCESS;
 
     if (NT_SUCCESS(Status))
         FCB->NeedsNewListen = FALSE;
 
     AFD_DbgPrint(MID_TRACE,("Returning %x\n", Status));
     DbgPrint("[AfdListenSocket] Returning %x\n", Status);
+    
     return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
 }
 
@@ -360,7 +362,8 @@
 }
 
 NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
-                   PIO_STACK_LOCATION IrpSp ) {
+                   PIO_STACK_LOCATION IrpSp )
+{
     NTSTATUS Status = STATUS_SUCCESS;
     PFILE_OBJECT FileObject = IrpSp->FileObject;
     PAFD_DEVICE_EXTENSION DeviceExt =
@@ -449,11 +452,11 @@
                                  (PVOID *)&NewFileObject,
                                  NULL );
 
-                if( !NT_SUCCESS(Status) )
-                    return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
-
-                ASSERT(NewFileObject != FileObject);
-                ASSERT(NewFileObject->FsContext != FCB);
+            if( !NT_SUCCESS(Status) )
+                return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
+
+            ASSERT(NewFileObject != FileObject);
+            ASSERT(NewFileObject->FsContext != FCB);
 
                /* We have a pending connection ... complete this irp right 
away */
                Status = SatisfyAccept( DeviceExt, Irp, NewFileObject, 
PendingConnObj );

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/main.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/main.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/main.c [iso-8859-1] 
(original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/main.c [iso-8859-1] 
Wed Jun  1 13:27:35 2011
@@ -25,13 +25,17 @@
 
 #endif /* DBG */
 
-void OskitDumpBuffer( PCHAR Data, UINT Len ) {
+void OskitDumpBuffer( PCHAR Data, UINT Len )
+{
     unsigned int i;
 
-    for( i = 0; i < Len; i++ ) {
-       if( i && !(i & 0xf) ) DbgPrint( "\n" );
-       if( !(i & 0xf) ) DbgPrint( "%08x: ", (UINT)(Data + i) );
-       DbgPrint( " %02x", Data[i] & 0xff );
+    for( i = 0; i < Len; i++ )
+    {
+           if( i && !(i & 0xf) )
+            DbgPrint( "\n" );
+           if( !(i & 0xf) )
+            DbgPrint( "%08x: ", (UINT)(Data + i) );
+           DbgPrint( " %02x", Data[i] & 0xff );
     }
     DbgPrint("\n");
 }
@@ -239,7 +243,8 @@
 
 static NTSTATUS NTAPI
 AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,
-               PIO_STACK_LOCATION IrpSp) {
+               PIO_STACK_LOCATION IrpSp)
+{
     PAFD_FCB FCB;
     PFILE_OBJECT FileObject;
     PAFD_DEVICE_EXTENSION DeviceExt;
@@ -263,25 +268,27 @@
 
     EaInfo = Irp->AssociatedIrp.SystemBuffer;
 
-    if( EaInfo ) {
-       ConnectInfo = (PAFD_CREATE_PACKET)(EaInfo->EaName + 
EaInfo->EaNameLength + 1);
-       EaInfoValue = (PWCHAR)(((PCHAR)ConnectInfo) + 
sizeof(AFD_CREATE_PACKET));
-
-       EaLength = sizeof(FILE_FULL_EA_INFORMATION) +
-           EaInfo->EaNameLength +
-           EaInfo->EaValueLength;
-
-       AFD_DbgPrint(MID_TRACE,("EaInfo: %x, EaInfoValue: %x\n",
-                               EaInfo, EaInfoValue));
+    if( EaInfo )
+    {
+           ConnectInfo = (PAFD_CREATE_PACKET)(EaInfo->EaName + 
EaInfo->EaNameLength + 1);
+           EaInfoValue = (PWCHAR)(((PCHAR)ConnectInfo) + 
sizeof(AFD_CREATE_PACKET));
+
+           EaLength = sizeof(FILE_FULL_EA_INFORMATION) +
+               EaInfo->EaNameLength +
+               EaInfo->EaValueLength;
+
+           AFD_DbgPrint(MID_TRACE,("EaInfo: %x, EaInfoValue: %x\n",
+                                   EaInfo, EaInfoValue));
     }
 
     AFD_DbgPrint(MID_TRACE,("About to allocate the new FCB\n"));
 
     FCB = ExAllocatePool(NonPagedPool, sizeof(AFD_FCB));
-    if( FCB == NULL ) {
-       Irp->IoStatus.Status = STATUS_NO_MEMORY;
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
-       return STATUS_NO_MEMORY;
+    if( FCB == NULL )
+    {
+           Irp->IoStatus.Status = STATUS_NO_MEMORY;
+           IoCompleteRequest(Irp, IO_NO_INCREMENT);
+           return STATUS_NO_MEMORY;
     }
 
     AFD_DbgPrint(MID_TRACE,("Initializing the new FCB @ %x (FileObject %x 
Flags %x)\n", FCB, FileObject, ConnectInfo ? ConnectInfo->EndpointFlags : 0));
@@ -299,8 +306,9 @@
 
     KeInitializeMutex( &FCB->Mutex, 0 );
 
-    for( i = 0; i < MAX_FUNCTIONS; i++ ) {
-       InitializeListHead( &FCB->PendingIrpList[i] );
+    for( i = 0; i < MAX_FUNCTIONS; i++ )
+    {
+           InitializeListHead( &FCB->PendingIrpList[i] );
     }
 
     InitializeListHead( &FCB->DatagramList );
@@ -308,46 +316,53 @@
 
     AFD_DbgPrint(MID_TRACE,("%x: Checking command channel\n", FCB));
 
-    if( ConnectInfo ) {
-       FCB->TdiDeviceName.Length = ConnectInfo->SizeOfTransportName;
-       FCB->TdiDeviceName.MaximumLength = FCB->TdiDeviceName.Length;
-       FCB->TdiDeviceName.Buffer =
-           ExAllocatePool( NonPagedPool, FCB->TdiDeviceName.Length );
-
-       if( !FCB->TdiDeviceName.Buffer ) {
-           ExFreePool(FCB);
-           AFD_DbgPrint(MID_TRACE,("Could not copy target string\n"));
-           Irp->IoStatus.Status = STATUS_NO_MEMORY;
-           IoCompleteRequest( Irp, IO_NETWORK_INCREMENT );
-           return STATUS_NO_MEMORY;
-       }
-
-       RtlCopyMemory( FCB->TdiDeviceName.Buffer,
-                      ConnectInfo->TransportName,
-                      FCB->TdiDeviceName.Length );
-
-       AFD_DbgPrint(MID_TRACE,("Success: %s %wZ\n",
-                               EaInfo->EaName, &FCB->TdiDeviceName));
-    } else {
-       AFD_DbgPrint(MID_TRACE,("Success: Control connection\n"));
+    if( ConnectInfo )
+    {
+           FCB->TdiDeviceName.Length = ConnectInfo->SizeOfTransportName;
+           FCB->TdiDeviceName.MaximumLength = FCB->TdiDeviceName.Length;
+           FCB->TdiDeviceName.Buffer =
+               ExAllocatePool( NonPagedPool, FCB->TdiDeviceName.Length );
+
+           if( !FCB->TdiDeviceName.Buffer )
+        {
+               ExFreePool(FCB);
+               AFD_DbgPrint(MID_TRACE,("Could not copy target string\n"));
+               Irp->IoStatus.Status = STATUS_NO_MEMORY;
+               IoCompleteRequest( Irp, IO_NETWORK_INCREMENT );
+               return STATUS_NO_MEMORY;
+           }
+
+           RtlCopyMemory( FCB->TdiDeviceName.Buffer,
+                          ConnectInfo->TransportName,
+                          FCB->TdiDeviceName.Length );
+
+           AFD_DbgPrint(MID_TRACE,("Success: %s %wZ\n",
+                                   EaInfo->EaName, &FCB->TdiDeviceName));
+    }
+    else
+    {
+           AFD_DbgPrint(MID_TRACE,("Success: Control connection\n"));
     }
 
     FileObject->FsContext = FCB;
 
     /* It seems that UDP sockets are writable from inception */
-    if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS ) {
+    if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS )
+    {
         AFD_DbgPrint(MID_TRACE,("Packet oriented socket\n"));
         
-       /* A datagram socket is always sendable */
-       FCB->PollState |= AFD_EVENT_SEND;
-        FCB->PollStatus[FD_WRITE_BIT] = STATUS_SUCCESS;
-        PollReeval( FCB->DeviceExt, FCB->FileObject );
-    }
-
-    if( !NT_SUCCESS(Status) ) {
-       if( FCB->TdiDeviceName.Buffer ) ExFreePool( FCB->TdiDeviceName.Buffer );
-       ExFreePool( FCB );
-       FileObject->FsContext = NULL;
+           /* A datagram socket is always sendable */
+           FCB->PollState |= AFD_EVENT_SEND;
+            FCB->PollStatus[FD_WRITE_BIT] = STATUS_SUCCESS;
+            PollReeval( FCB->DeviceExt, FCB->FileObject );
+    }
+
+    if( !NT_SUCCESS(Status) )
+    {
+           if( FCB->TdiDeviceName.Buffer )
+            ExFreePool( FCB->TdiDeviceName.Buffer );
+           ExFreePool( FCB );
+           FileObject->FsContext = NULL;
     }
 
     Irp->IoStatus.Status = Status;
@@ -413,12 +428,14 @@
     InFlightRequest[3] = &FCB->ConnectIrp;
 
     /* Cancel our pending requests */
-    for( i = 0; i < IN_FLIGHT_REQUESTS; i++ ) {
-       if( InFlightRequest[i]->InFlightRequest ) {
-           AFD_DbgPrint(MID_TRACE,("Cancelling in flight irp %d (%x)\n",
-                                   i, InFlightRequest[i]->InFlightRequest));
+    for( i = 0; i < IN_FLIGHT_REQUESTS; i++ )
+    {
+           if( InFlightRequest[i]->InFlightRequest )
+        {
+               AFD_DbgPrint(MID_TRACE,("Cancelling in flight irp %d (%x)\n",
+                                       i, 
InFlightRequest[i]->InFlightRequest));
             IoCancelIrp(InFlightRequest[i]->InFlightRequest);
-       }
+           }
     }
 
     KillSelectsForFCB( FCB->DeviceExt, FileObject, FALSE );
@@ -432,13 +449,13 @@
         ExFreePool( FCB->Context );
 
     if( FCB->Recv.Window )
-       ExFreePool( FCB->Recv.Window );
+           ExFreePool( FCB->Recv.Window );
 
     if( FCB->Send.Window )
-       ExFreePool( FCB->Send.Window );
+           ExFreePool( FCB->Send.Window );
 
     if( FCB->AddressFrom )
-       ExFreePool( FCB->AddressFrom );
+           ExFreePool( FCB->AddressFrom );
 
     if( FCB->ConnectInfo )
         ExFreePool( FCB->ConnectInfo );
@@ -456,16 +473,16 @@
         ExFreePool( FCB->DisconnectOptions );
 
     if( FCB->LocalAddress )
-       ExFreePool( FCB->LocalAddress );
+           ExFreePool( FCB->LocalAddress );
 
     if( FCB->RemoteAddress )
-       ExFreePool( FCB->RemoteAddress );
+           ExFreePool( FCB->RemoteAddress );
 
     if( FCB->Connection.Object )
-       ObDereferenceObject(FCB->Connection.Object);
+           ObDereferenceObject(FCB->Connection.Object);
 
     if( FCB->AddressFile.Object )
-       ObDereferenceObject(FCB->AddressFile.Object);
+           ObDereferenceObject(FCB->AddressFile.Object);
 
     if( FCB->AddressFile.Handle != INVALID_HANDLE_VALUE )
     {
@@ -484,7 +501,7 @@
     }
 
     if( FCB->TdiDeviceName.Buffer )
-       ExFreePool(FCB->TdiDeviceName.Buffer);
+           ExFreePool(FCB->TdiDeviceName.Buffer);
 
     ExFreePool(FCB);
 
@@ -499,7 +516,8 @@
 
 static NTSTATUS NTAPI
 AfdDisconnect(PDEVICE_OBJECT DeviceObject, PIRP Irp,
-             PIO_STACK_LOCATION IrpSp) {
+             PIO_STACK_LOCATION IrpSp)
+{
     PFILE_OBJECT FileObject = IrpSp->FileObject;
     PAFD_FCB FCB = FileObject->FsContext;
     PAFD_DISCONNECT_INFO DisReq;
@@ -549,7 +567,8 @@
                                FCB->ConnectInfo,
                                ConnectionReturnInfo);
 
-        if (NT_SUCCESS(Status)) {
+        if (NT_SUCCESS(Status))
+        {
             FCB->FilledDisconnectData = MIN(FCB->DisconnectDataSize, 
ConnectionReturnInfo->UserDataLength);
             if (FCB->FilledDisconnectData)
             {
@@ -572,7 +591,8 @@
         FCB->PollState |= AFD_EVENT_DISCONNECT;
         FCB->PollStatus[FD_CLOSE_BIT] = STATUS_SUCCESS;
         PollReeval( FCB->DeviceExt, FCB->FileObject );
-    } else
+    }
+    else
         Status = STATUS_INVALID_PARAMETER;
 
     return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/tdi.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/tdi.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/tdi.c [iso-8859-1] 
(original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/afd/afd/tdi.c [iso-8859-1] 
Wed Jun  1 13:27:35 2011
@@ -128,21 +128,27 @@
                           0,                                    /* Create 
options */
                           EaInfo,                               /* EA buffer */
                           EaLength);                            /* EA length */
-    if (NT_SUCCESS(Status)) {
+    if (NT_SUCCESS(Status))
+    {
         Status = ObReferenceObjectByHandle(*Handle,                       /* 
Handle to open file */
                                            GENERIC_READ | GENERIC_WRITE | 
SYNCHRONIZE,  /* Access mode */
                                            IoFileObjectType,              /* 
Object type */
                                            KernelMode,                    /* 
Access mode */
                                            (PVOID*)Object,                /* 
Pointer to object */
                                            NULL);                         /* 
Handle information */
-        if (!NT_SUCCESS(Status)) {
+        if (!NT_SUCCESS(Status))
+        {
                        AFD_DbgPrint(MIN_TRACE, ("ObReferenceObjectByHandle() 
failed with status (0x%X).\n", Status));
                        ZwClose(*Handle);
-        } else {
+        }
+        else
+        {
                        AFD_DbgPrint(MAX_TRACE, ("Got handle (0x%X)  Object 
(0x%X)\n",
                                                                         
*Handle, *Object));
         }
-    } else {
+    }
+    else
+    {
         AFD_DbgPrint(MIN_TRACE, ("ZwCreateFile() failed with status (0x%X)\n", 
Status));
     }
 
@@ -329,14 +335,16 @@
 
        AFD_DbgPrint(MAX_TRACE, ("Called\n"));
 
-       if (!ConnectionObject) {
+       if (!ConnectionObject)
+    {
                AFD_DbgPrint(MIN_TRACE, ("Bad connection object.\n"));
                *Irp = NULL;
                return STATUS_INVALID_PARAMETER;
        }
 
        DeviceObject = IoGetRelatedDeviceObject(ConnectionObject);
-       if (!DeviceObject) {
+       if (!DeviceObject)
+    {
         AFD_DbgPrint(MIN_TRACE, ("Bad device object.\n"));
         *Irp = NULL;
         return STATUS_INVALID_PARAMETER;
@@ -387,13 +395,15 @@
        AFD_DbgPrint(MAX_TRACE, ("Called. AddressHandle (0x%X)  
ConnectionObject (0x%X)\n",
                                                         AddressHandle, 
ConnectionObject));
 
-       if (!ConnectionObject) {
+       if (!ConnectionObject)
+    {
                AFD_DbgPrint(MIN_TRACE, ("Bad connection object.\n"));
                return STATUS_INVALID_PARAMETER;
        }
 
        DeviceObject = IoGetRelatedDeviceObject(ConnectionObject);
-       if (!DeviceObject) {
+       if (!DeviceObject)
+    {
         AFD_DbgPrint(MIN_TRACE, ("Bad device object.\n"));
         return STATUS_INVALID_PARAMETER;
        }
@@ -442,16 +452,19 @@
        PDEVICE_OBJECT DeviceObject;
        NTSTATUS Status;
 
-       AFD_DbgPrint(MAX_TRACE, ("Called\n"));
-
-       if (!ConnectionObject) {
+       AFD_DbgPrint(MAX_TRACE, ("[AFD, TDIListen] Called\n"));
+    DbgPrint("[AFD, TDIListen] Called\n");
+
+       if (!ConnectionObject)
+    {
                AFD_DbgPrint(MIN_TRACE, ("Bad connection object.\n"));
                *Irp = NULL;
                return STATUS_INVALID_PARAMETER;
        }
 
        DeviceObject = IoGetRelatedDeviceObject(ConnectionObject);
-       if (!DeviceObject) {
+       if (!DeviceObject)
+    {
         AFD_DbgPrint(MIN_TRACE, ("Bad device object.\n"));
         *Irp = NULL;
         return STATUS_INVALID_PARAMETER;
@@ -475,6 +488,8 @@
                                   *ReturnConnectionInfo);  /* Return 
connection information */
 
        Status = TdiCall(*Irp, DeviceObject, NULL /* Don't wait for completion 
*/, Iosb);
+
+    DbgPrint("[AFD, TDIListen] Done. Status = 0x%x\n", Status);
 
        return Status;
 }

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/dispatch.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/dispatch.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/dispatch.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/dispatch.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -13,19 +13,21 @@
 #include <pseh/pseh2.h>
 
 
-NTSTATUS IRPFinish( PIRP Irp, NTSTATUS Status ) {
+NTSTATUS IRPFinish( PIRP Irp, NTSTATUS Status )
+{
     KIRQL OldIrql;
 
     Irp->IoStatus.Status = Status;
 
-    if( Status == STATUS_PENDING )
-       IoMarkIrpPending( Irp );
-    else {
+    if (Status == STATUS_PENDING)
+           IoMarkIrpPending( Irp );
+    else
+    {
         IoAcquireCancelSpinLock(&OldIrql);
-       (void)IoSetCancelRoutine( Irp, NULL );
+           (void)IoSetCancelRoutine( Irp, NULL );
         IoReleaseCancelSpinLock(OldIrql);
 
-       IoCompleteRequest( Irp, IO_NETWORK_INCREMENT );
+           IoCompleteRequest( Irp, IO_NETWORK_INCREMENT );
     }
 
     return Status;
@@ -56,7 +58,8 @@
 
     IoAcquireCancelSpinLock(&OldIrql);
 
-    if (!Irp->Cancel && !TransContext->CancelIrps) {
+    if (!Irp->Cancel && !TransContext->CancelIrps)
+    {
         (void)IoSetCancelRoutine(Irp, CancelRoutine);
         IoReleaseCancelSpinLock(OldIrql);
 
@@ -144,38 +147,41 @@
 #endif
 
     /* Try canceling the request */
-    switch(MinorFunction) {
-    case TDI_SEND:
-    case TDI_RECEIVE:
-       DequeuedIrp = TCPRemoveIRP( TranContext->Handle.ConnectionContext, Irp 
);
-        break;
-
-    case TDI_SEND_DATAGRAM:
-        if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
-            TI_DbgPrint(MIN_TRACE, ("TDI_SEND_DATAGRAM, but no address 
file.\n"));
+    switch(MinorFunction)
+    {
+        case TDI_SEND:
+        case TDI_RECEIVE:
+           DequeuedIrp = TCPRemoveIRP( TranContext->Handle.ConnectionContext, 
Irp );
             break;
-        }
-
-        DequeuedIrp = DGRemoveIRP(TranContext->Handle.AddressHandle, Irp);
-        break;
-
-    case TDI_RECEIVE_DATAGRAM:
-        if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
-            TI_DbgPrint(MIN_TRACE, ("TDI_RECEIVE_DATAGRAM, but no address 
file.\n"));
+
+        case TDI_SEND_DATAGRAM:
+            if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE)
+            {
+                TI_DbgPrint(MIN_TRACE, ("TDI_SEND_DATAGRAM, but no address 
file.\n"));
+                break;
+            }
+
+            DequeuedIrp = DGRemoveIRP(TranContext->Handle.AddressHandle, Irp);
             break;
-        }
-
-        DequeuedIrp = DGRemoveIRP(TranContext->Handle.AddressHandle, Irp);
-        break;
-
-    case TDI_CONNECT:
-        DequeuedIrp = TCPRemoveIRP(TranContext->Handle.ConnectionContext, Irp);
-        break;
-
-    default:
-        TI_DbgPrint(MIN_TRACE, ("Unknown IRP. MinorFunction (0x%X).\n", 
MinorFunction));
-        ASSERT(FALSE);
-        break;
+
+        case TDI_RECEIVE_DATAGRAM:
+            if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE)
+            {
+                TI_DbgPrint(MIN_TRACE, ("TDI_RECEIVE_DATAGRAM, but no address 
file.\n"));
+                break;
+            }
+
+            DequeuedIrp = DGRemoveIRP(TranContext->Handle.AddressHandle, Irp);
+            break;
+
+        case TDI_CONNECT:
+            DequeuedIrp = TCPRemoveIRP(TranContext->Handle.ConnectionContext, 
Irp);
+            break;
+
+        default:
+            TI_DbgPrint(MIN_TRACE, ("Unknown IRP. MinorFunction (0x%X).\n", 
MinorFunction));
+            ASSERT(FALSE);
+            break;
     }
 
     if (DequeuedIrp)
@@ -256,99 +262,107 @@
  *     Status of operation
  */
 {
-  PTDI_REQUEST_KERNEL_ASSOCIATE Parameters;
-  PTRANSPORT_CONTEXT TranContext;
-  PIO_STACK_LOCATION IrpSp;
-  PCONNECTION_ENDPOINT Connection;
-  PFILE_OBJECT FileObject;
-  PADDRESS_FILE AddrFile = NULL;
-  NTSTATUS Status;
-  KIRQL OldIrql;
-
-  TI_DbgPrint(DEBUG_IRP, ("[TCPIP, DispTdiAssociateAddress] Called\n"));
-
-  IrpSp = IoGetCurrentIrpStackLocation(Irp);
-
-  /* Get associated connection endpoint file object. Quit if none exists */
-
-  TranContext = IrpSp->FileObject->FsContext;
-  if (!TranContext) {
-    TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  Connection = (PCONNECTION_ENDPOINT)TranContext->Handle.ConnectionContext;
-  if (!Connection) {
-    TI_DbgPrint(MID_TRACE, ("No connection endpoint file object.\n"));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  Parameters = (PTDI_REQUEST_KERNEL_ASSOCIATE)&IrpSp->Parameters;
-
-  Status = ObReferenceObjectByHandle(
-    Parameters->AddressHandle,
-    0,
-    IoFileObjectType,
-    KernelMode,
-    (PVOID*)&FileObject,
-    NULL);
-  if (!NT_SUCCESS(Status)) {
-    TI_DbgPrint(MID_TRACE, ("Bad address file object handle (0x%X): %x.\n",
-      Parameters->AddressHandle, Status));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  LockObject(Connection, &OldIrql);
-
-  if (Connection->AddressFile) {
+    PTDI_REQUEST_KERNEL_ASSOCIATE Parameters;
+    PTRANSPORT_CONTEXT TranContext;
+    PIO_STACK_LOCATION IrpSp;
+    PCONNECTION_ENDPOINT Connection;
+    PFILE_OBJECT FileObject;
+    PADDRESS_FILE AddrFile = NULL;
+    NTSTATUS Status;
+    KIRQL OldIrql;
+
+    TI_DbgPrint(DEBUG_IRP, ("[TCPIP, DispTdiAssociateAddress] Called\n"));
+
+    IrpSp = IoGetCurrentIrpStackLocation(Irp);
+
+    /* Get associated connection endpoint file object. Quit if none exists */
+
+    TranContext = IrpSp->FileObject->FsContext;
+    if (!TranContext)
+    {
+        TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    Connection = (PCONNECTION_ENDPOINT)TranContext->Handle.ConnectionContext;
+    if (!Connection)
+    {
+        TI_DbgPrint(MID_TRACE, ("No connection endpoint file object.\n"));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    Parameters = (PTDI_REQUEST_KERNEL_ASSOCIATE)&IrpSp->Parameters;
+
+    Status = ObReferenceObjectByHandle(
+        Parameters->AddressHandle,
+        0,
+        IoFileObjectType,
+        KernelMode,
+        (PVOID*)&FileObject,
+        NULL);
+
+    if (!NT_SUCCESS(Status))
+    {
+        TI_DbgPrint(MID_TRACE, ("Bad address file object handle (0x%X): %x.\n",
+            Parameters->AddressHandle, Status));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    LockObject(Connection, &OldIrql);
+
+    if (Connection->AddressFile)
+    {
+        ObDereferenceObject(FileObject);
+        UnlockObject(Connection, OldIrql);
+        TI_DbgPrint(MID_TRACE, ("An address file is already asscociated.\n"));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE)
+    {
+        ObDereferenceObject(FileObject);
+        UnlockObject(Connection, OldIrql);
+        TI_DbgPrint(MID_TRACE, ("Bad address file object. Magic (0x%X).\n",
+            FileObject->FsContext2));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /* Get associated address file object. Quit if none exists */
+
+    TranContext = FileObject->FsContext;
+    if (!TranContext)
+    {
+        ObDereferenceObject(FileObject);
+        UnlockObject(Connection, OldIrql);
+        TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    AddrFile = (PADDRESS_FILE)TranContext->Handle.AddressHandle;
+    if (!AddrFile)
+    {
+        UnlockObject(Connection, OldIrql);
+        ObDereferenceObject(FileObject);
+        TI_DbgPrint(MID_TRACE, ("No address file object.\n"));
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    LockObjectAtDpcLevel(AddrFile);
+
+    ReferenceObject(AddrFile);
+    Connection->AddressFile = AddrFile;
+
+    /* Add connection endpoint to the address file */
+    ReferenceObject(Connection);
+    AddrFile->Connection = Connection;
+
+    /* FIXME: Maybe do this in DispTdiDisassociateAddress() instead? */
     ObDereferenceObject(FileObject);
+
+    UnlockObjectFromDpcLevel(AddrFile);
     UnlockObject(Connection, OldIrql);
-    TI_DbgPrint(MID_TRACE, ("An address file is already asscociated.\n"));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  if (FileObject->FsContext2 != (PVOID)TDI_TRANSPORT_ADDRESS_FILE) {
-    ObDereferenceObject(FileObject);
-    UnlockObject(Connection, OldIrql);
-    TI_DbgPrint(MID_TRACE, ("Bad address file object. Magic (0x%X).\n",
-      FileObject->FsContext2));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  /* Get associated address file object. Quit if none exists */
-
-  TranContext = FileObject->FsContext;
-  if (!TranContext) {
-    ObDereferenceObject(FileObject);
-    UnlockObject(Connection, OldIrql);
-    TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
-    return STATUS_INVALID_PARAMETER;
-  }
-
-  AddrFile = (PADDRESS_FILE)TranContext->Handle.AddressHandle;
-  if (!AddrFile) {
-      UnlockObject(Connection, OldIrql);
-      ObDereferenceObject(FileObject);
-      TI_DbgPrint(MID_TRACE, ("No address file object.\n"));
-      return STATUS_INVALID_PARAMETER;
-  }
-
-  LockObjectAtDpcLevel(AddrFile);
-
-  ReferenceObject(AddrFile);
-  Connection->AddressFile = AddrFile;
-
-  /* Add connection endpoint to the address file */
-  ReferenceObject(Connection);
-  AddrFile->Connection = Connection;
-
-  /* FIXME: Maybe do this in DispTdiDisassociateAddress() instead? */
-  ObDereferenceObject(FileObject);
-
-  UnlockObjectFromDpcLevel(AddrFile);
-  UnlockObject(Connection, OldIrql);
-
-  return Status;
+
+    return Status;
 }
 
 
@@ -394,7 +408,8 @@
                                    Irp,
                                    DispCancelRequest);
 
-  if (NT_SUCCESS(Status)) {
+  if (NT_SUCCESS(Status))
+  {
       Status = TCPConnect(
           TranContext->Handle.ConnectionContext,
           Parameters->RequestConnectionInformation,
@@ -505,7 +520,8 @@
   }
 
   Connection = (PCONNECTION_ENDPOINT)TranContext->Handle.ConnectionContext;
-  if (!Connection) {
+  if (!Connection)
+  {
     TI_DbgPrint(MID_TRACE, ("No connection endpoint file object.\n"));
     Status = STATUS_INVALID_PARAMETER;
     goto done;
@@ -541,103 +557,107 @@
  *     Status of operation
  */
 {
-  PCONNECTION_ENDPOINT Connection;
-  PTDI_REQUEST_KERNEL Parameters;
-  PTRANSPORT_CONTEXT TranContext;
-  PIO_STACK_LOCATION IrpSp;
-  NTSTATUS Status = STATUS_SUCCESS;
-  KIRQL OldIrql;
-
-  TI_DbgPrint(DEBUG_IRP, ("[TCPIP, DispTdiListen] Called\n"));
-
-  IrpSp = IoGetCurrentIrpStackLocation(Irp);
-
-  /* Get associated connection endpoint file object. Quit if none exists */
-
-  TranContext = IrpSp->FileObject->FsContext;
-  if (TranContext == NULL)
-    {
-      TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
-      Status = STATUS_INVALID_PARAMETER;
-      goto done;
-    }
-
-  Connection = (PCONNECTION_ENDPOINT)TranContext->Handle.ConnectionContext;
-  if (Connection == NULL)
-    {
-      TI_DbgPrint(MID_TRACE, ("No connection endpoint file object.\n"));
-      Status = STATUS_INVALID_PARAMETER;
-      goto done;
-    }
-
-  Parameters = (PTDI_REQUEST_KERNEL)&IrpSp->Parameters;
-
-  Status = DispPrepareIrpForCancel
-      (TranContext->Handle.ConnectionContext,
-       Irp,
-       (PDRIVER_CANCEL)DispCancelListenRequest);
-
-  LockObject(Connection, &OldIrql);
-
-  if (Connection->AddressFile == NULL)
-  {
-     TI_DbgPrint(MID_TRACE, ("No associated address file\n"));
-     UnlockObject(Connection, OldIrql);
-     Status = STATUS_INVALID_PARAMETER;
-     goto done;
-  }
-
-  LockObjectAtDpcLevel(Connection->AddressFile);
-
-  /* Listening will require us to create a listening socket and store it in
-   * the address file.  It will be signalled, and attempt to complete an irp
-   * when a new connection arrives. */
-  /* The important thing to note here is that the irp we'll complete belongs
-   * to the socket to be accepted onto, not the listener */
-  if( NT_SUCCESS(Status) && !Connection->AddressFile->Listener ) {
-      Connection->AddressFile->Listener =
-         TCPAllocateConnectionEndpoint( NULL );
-
-      if( !Connection->AddressFile->Listener )
-         Status = STATUS_NO_MEMORY;
-
-      if( NT_SUCCESS(Status) ) {
-          ReferenceObject(Connection->AddressFile);
-         Connection->AddressFile->Listener->AddressFile =
-             Connection->AddressFile;
-
-         Status = TCPSocket( Connection->AddressFile->Listener,
-                             Connection->AddressFile->Family,
-                             SOCK_STREAM,
-                             Connection->AddressFile->Protocol );
-      }
-
-      if( NT_SUCCESS(Status) )
-         Status = TCPListen( Connection->AddressFile->Listener, 1024 );
-         /* BACKLOG */
-  }
-
-  if( NT_SUCCESS(Status) ) {
-      Status = TCPAccept
-         ( (PTDI_REQUEST)Parameters,
-           Connection->AddressFile->Listener,
-           Connection,
-           DispDataRequestComplete,
-           Irp );
-  }
-
-  UnlockObjectFromDpcLevel(Connection->AddressFile);
-  UnlockObject(Connection, OldIrql);
+    PCONNECTION_ENDPOINT Connection;
+    PTDI_REQUEST_KERNEL Parameters;
+    PTRANSPORT_CONTEXT TranContext;
+    PIO_STACK_LOCATION IrpSp;
+    NTSTATUS Status = STATUS_SUCCESS;
+    KIRQL OldIrql;
+
+    TI_DbgPrint(DEBUG_IRP, ("[TCPIP, DispTdiListen] Called\n"));
+    DbgPrint("[TCPIP, DispTdiListen] Called\n");
+
+    IrpSp = IoGetCurrentIrpStackLocation(Irp);
+
+    /* Get associated connection endpoint file object. Quit if none exists */
+
+    TranContext = IrpSp->FileObject->FsContext;
+    if (TranContext == NULL)
+    {
+        TI_DbgPrint(MID_TRACE, ("Bad transport context.\n"));
+        Status = STATUS_INVALID_PARAMETER;
+        goto done;
+    }
+
+    Connection = (PCONNECTION_ENDPOINT)TranContext->Handle.ConnectionContext;
+    if (Connection == NULL)
+    {
+        TI_DbgPrint(MID_TRACE, ("No connection endpoint file object.\n"));
+        Status = STATUS_INVALID_PARAMETER;
+        goto done;
+    }
+
+    Parameters = (PTDI_REQUEST_KERNEL)&IrpSp->Parameters;
+
+    Status = DispPrepareIrpForCancel
+        (TranContext->Handle.ConnectionContext,
+        Irp,
+        (PDRIVER_CANCEL)DispCancelListenRequest);
+
+    LockObject(Connection, &OldIrql);
+
+    if (Connection->AddressFile == NULL)
+    {
+        TI_DbgPrint(MID_TRACE, ("No associated address file\n"));
+        UnlockObject(Connection, OldIrql);
+        Status = STATUS_INVALID_PARAMETER;
+        goto done;
+    }
+
+    LockObjectAtDpcLevel(Connection->AddressFile);
+
+    /* Listening will require us to create a listening socket and store it in
+    * the address file.  It will be signalled, and attempt to complete an irp
+    * when a new connection arrives. */
+    /* The important thing to note here is that the irp we'll complete belongs
+    * to the socket to be accepted onto, not the listener */
+    if( NT_SUCCESS(Status) && !Connection->AddressFile->Listener )
+    {
+        Connection->AddressFile->Listener = TCPAllocateConnectionEndpoint( 
NULL );
+
+        if( !Connection->AddressFile->Listener )
+               Status = STATUS_NO_MEMORY;
+
+        if( NT_SUCCESS(Status) )
+        {
+            ReferenceObject(Connection->AddressFile);
+               Connection->AddressFile->Listener->AddressFile = 
Connection->AddressFile;
+
+               Status = TCPSocket( Connection->AddressFile->Listener,
+                                   Connection->AddressFile->Family,
+                                   SOCK_STREAM,
+                                   Connection->AddressFile->Protocol );
+        }
+
+        if ( NT_SUCCESS(Status) )
+               Status = TCPListen( Connection->AddressFile->Listener, 1024 );
+           /* BACKLOG */
+    }
+
+    if (NT_SUCCESS(Status))
+    {
+        Status = TCPAccept( (PTDI_REQUEST)Parameters,
+               Connection->AddressFile->Listener,
+               Connection,
+               DispDataRequestComplete,
+               Irp );
+    }
+
+    UnlockObjectFromDpcLevel(Connection->AddressFile);
+    UnlockObject(Connection, OldIrql);
 
 done:
-  if (Status != STATUS_PENDING) {
-      DispDataRequestComplete(Irp, Status, 0);
-  } else
-      IoMarkIrpPending(Irp);
-
-  TI_DbgPrint(MID_TRACE,("[TCPIP, DispTdiListen] Leaving %x\n", Status));
-
-  return Status;
+    if (Status != STATUS_PENDING)
+    {
+        DispDataRequestComplete(Irp, Status, 0);
+    }
+    else
+        IoMarkIrpPending(Irp);
+
+    TI_DbgPrint(MID_TRACE,("[TCPIP, DispTdiListen] Leaving %x\n", Status));
+    DbgPrint("[TCPIP, DispTdiListen] Leaving %x\n", Status);
+
+    return Status;
 }
 
 

Modified: branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/fileobjs.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/fileobjs.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/fileobjs.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/drivers/network/tcpip/tcpip/fileobjs.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -413,15 +413,18 @@
   NTSTATUS Status;
   PCONNECTION_ENDPOINT Connection;
 
-  TI_DbgPrint(MID_TRACE, ("Called.\n"));
+  TI_DbgPrint(MID_TRACE, ("[TCPIP, FileOpenConnection] Called\n"));
+  //DbgPrint("[TCPIP, FileOpenConnection] Called\n");
 
   Connection = TCPAllocateConnectionEndpoint( ClientContext );
 
-  if( !Connection ) return STATUS_NO_MEMORY;
+  if (!Connection)
+      return STATUS_NO_MEMORY;
 
   Status = TCPSocket( Connection, AF_INET, SOCK_STREAM, IPPROTO_TCP );
 
-  if( !NT_SUCCESS(Status) ) {
+  if (!NT_SUCCESS(Status))
+  {
       DereferenceObject( Connection );
       return Status;
   }
@@ -429,7 +432,8 @@
   /* Return connection endpoint file object */
   Request->Handle.ConnectionContext = Connection;
 
-  TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
+  TI_DbgPrint(MAX_TRACE, ("[TCPIP, FileOpenConnection] Leaving\n"));
+  //DbgPrint("[TCPIP, FileOpenConnection] Leaving\n");
 
   return STATUS_SUCCESS;
 }

Modified: branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/accept.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/accept.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/accept.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/accept.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -58,6 +58,7 @@
     LockObject(Connection, &OldIrql);
 
     TI_DbgPrint(DEBUG_TCP,("[IP, TCPListen] Called\n"));
+    DbgPrint("[IP, TCPListen] Called\n");
 
     TI_DbgPrint(DEBUG_TCP, ("Connection->SocketContext %x\n",
         Connection->SocketContext));
@@ -78,6 +79,7 @@
     UnlockObject(Connection, OldIrql);
 
     TI_DbgPrint(DEBUG_TCP,("[IP, TCPListen] Leaving. Status = %x\n", Status));
+    DbgPrint("[IP, TCPListen] Leaving. Status = %x\n", Status);
 
     return Status;
 }
@@ -89,6 +91,8 @@
     PTDI_BUCKET Bucket;
     KIRQL OldIrql;
     BOOLEAN Found = FALSE;
+
+    DbgPrint("[IP, TCPAbortListenForSocket] Called\n");
 
     LockObject(Listener, &OldIrql);
 
@@ -110,6 +114,9 @@
     }
 
     UnlockObject(Listener, OldIrql);
+
+    DbgPrint("[IP, TCPAbortListenForSocket] Leaving. Status = %s\n",
+        Found == TRUE ? "TRUE" : "FALSE");
 
     return Found;
 }

Modified: branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/tcp.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/tcp.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/tcp.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/TcpIpDriver/lib/drivers/ip/transport/tcp/tcp.c 
[iso-8859-1] Wed Jun  1 13:27:35 2011
@@ -83,6 +83,9 @@
     TI_DbgPrint(DEBUG_TCP,("[IP, TCPSocket] Called: Connection %x, Family %d, 
Type %d, "
                            "Proto %d\n",
                            Connection, Family, Type, Proto));
+    DbgPrint("[IP, TCPSocket] Called: Connection %x, Family %d, Type %d, "
+                           "Proto %d\n",
+                           Connection, Family, Type, Proto);
 
     Connection->SocketContext = LibTCPSocket(Connection);
     if (Connection->SocketContext)
@@ -93,6 +96,7 @@
     UnlockObject(Connection, OldIrql);
 
     TI_DbgPrint(DEBUG_TCP,("[IP, TCPSocket] Leaving. Status = 0x%x\n", 
Status));
+    DbgPrint("[IP, TCPSocket] Leaving. Status = 0x%x\n", Status);
 
     return Status;
 }

Modified: branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp.c [iso-8859-1] 
(original)
+++ branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp.c [iso-8859-1] 
Wed Jun  1 13:27:35 2011
@@ -138,6 +138,8 @@
 tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data)
 {
   err_t err;
+
+  LWIP_DEBUGF(TCP_DEBUG, ("tcp_close_shutdown: called on pcb %x\n", pcb));
 
   if (rst_on_unacked_data && (pcb->state != LISTEN)) {
     if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND)) {

Modified: branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/rostcp.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/rostcp.c?rev=52042&r1=52041&r2=52042&view=diff
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/rostcp.c [iso-8859-1] 
(original)
+++ branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/rostcp.c [iso-8859-1] 
Wed Jun  1 13:27:35 2011
@@ -58,7 +58,7 @@
 err_t
 InternalSendEventHandler(void *arg, struct tcp_pcb *pcb, u16_t space)
 {
-    DbgPrint("[InternalSendEventHandler] SendEvent (0x%x, 0x%x, %d)\n",
+    DbgPrint("[lwIP, InternalSendEventHandler] SendEvent (0x%x, 0x%x, %d)\n",
         arg, pcb, (unsigned int)space);
     
     /* Make sure the socket didn't get closed */
@@ -75,7 +75,7 @@
 {
     u32_t len;
 
-    DbgPrint("[InternalRecvEventHandler] RecvEvent (0x%x, 0x%x, 0x%x, %d)\n",
+    DbgPrint("[lwIP, InternalRecvEventHandler] RecvEvent (0x%x, 0x%x, 0x%x, 
%d)\n",
         arg, pcb, p, (unsigned int)err);
     
     /* Make sure the socket didn't get closed */
@@ -91,7 +91,7 @@
     }
     else
     {
-        DbgPrint("[InternalRecvEventHandler] RECV - p:0x%x p->payload:0x%x 
p->len:%d p->tot_len:%d\n",
+        DbgPrint("[lwIP, InternalRecvEventHandler] RECV - p:0x%x 
p->payload:0x%x p->len:%d p->tot_len:%d\n",
             p, p->payload, p->len, p->tot_len);
 
         if (err == ERR_OK)
@@ -124,14 +124,14 @@
 err_t
 InternalAcceptEventHandler(void *arg, struct tcp_pcb *newpcb, err_t err)
 {
-    DbgPrint("[InternalAcceptEventHandler] AcceptEvent (0x%x, 0x%x, %d)\n",
+    DbgPrint("[lwIP, InternalAcceptEventHandler] AcceptEvent (0x%x, 0x%x, 
%d)\n",
         arg, newpcb, (unsigned int)err);
     
     /* Make sure the socket didn't get closed */
     if (!arg)
         return ERR_ABRT;
 
-    DbgPrint("[InternalAcceptEventHandler] newpcb->state = %s\n",
+    DbgPrint("[lwIP, InternalAcceptEventHandler] newpcb->state = %s\n",
                 tcp_state_str[newpcb->state]);
     
     TCPAcceptEventHandler(arg, newpcb);
@@ -147,7 +147,7 @@
 err_t
 InternalConnectEventHandler(void *arg, struct tcp_pcb *pcb, err_t err)
 {
-    DbgPrint("[InternalConnectEventHandler] ConnectEvent(0x%x, 0x%x, %d)\n",
+    DbgPrint("[lwIP, InternalConnectEventHandler] ConnectEvent(0x%x, 0x%x, 
%d)\n",
         arg, pcb, (unsigned int)err);
     
     /* Make sure the socket didn't get closed */
@@ -165,7 +165,8 @@
 void
 InternalErrorEventHandler(void *arg, err_t err)
 {
-    DbgPrint("ErrorEvent(0x%x, %d)\n", arg, (unsigned int)err);
+    DbgPrint("[lwIP, InternalErrorEventHandler] ErrorEvent(0x%x, %d)\n",
+        arg, (unsigned int)err);
     
     /* Make sure the socket didn't get closed */
     if (!arg) return;
@@ -197,8 +198,8 @@
     
     if (msg->NewPcb)
     {
-        tcp_arg(msg->NewPcb, msg->Arg);
-        tcp_err(msg->NewPcb, InternalErrorEventHandler);
+        tcp_arg((struct tcp_pcb*)msg->NewPcb, msg->Arg);
+        tcp_err((struct tcp_pcb*)msg->NewPcb, InternalErrorEventHandler);
     }
     
     KeSetEvent(&msg->Event, IO_NO_INCREMENT, FALSE);
@@ -222,11 +223,11 @@
         else
             ret = NULL;
         
-        DbgPrint("LibTCPSocket(0x%x) = 0x%x\n", arg, ret);
+        DbgPrint("[lwIP, LibTCPSocket] (0x%x) = 0x%x\n", arg, ret);
         
         ExFreePool(msg);
         
-        return ret;
+        return (struct tcp_pcb*)ret;
     }
     
     return NULL;
@@ -267,6 +268,8 @@
     
     if (!pcb)
         return ERR_CLSD;
+
+    DbgPrint("[lwIP, LibTCPBind] Called\n");
     
     msg = ExAllocatePool(NonPagedPool, sizeof(struct bind_callback_msg));
     if (msg)
@@ -283,7 +286,9 @@
         else
             ret = ERR_CLSD;
         
-        DbgPrint("LibTCPBind(0x%x)\n", pcb);
+        DbgPrint("[lwIP, LibTCPBind] pcb = 0x%x\n", pcb);
+
+        DbgPrint("[lwIP, LibTCPBind] Done\n");
         
         ExFreePool(msg);
         
@@ -314,6 +319,8 @@
     void *p;
     
     ASSERT(msg);
+
+    DbgPrint("[lwIP, LibTCPListenCallback] Called\n");
     
     p = msg->Pcb->callback_arg;
     msg->NewPcb = tcp_listen_with_backlog(msg->Pcb, msg->Backlog);
@@ -324,6 +331,8 @@
         tcp_accept(msg->NewPcb, InternalAcceptEventHandler);
         tcp_err(msg->NewPcb, InternalErrorEventHandler);
     }
+
+    DbgPrint("[lwIP, LibTCPListenCallback] Done\n");
     
     KeSetEvent(&msg->Event, IO_NO_INCREMENT, FALSE);
 }
@@ -333,6 +342,8 @@
 {
     struct listen_callback_msg *msg;
     void *ret;
+
+    DbgPrint("[lwIP, LibTCPListen] Called\n");
     
     if (!pcb)
         return NULL;
@@ -351,7 +362,9 @@
         else
             ret = NULL;
         
-        DbgPrint("LibTCPListen(0x%x,0x%x)\n", pcb, ret);
+        DbgPrint("[lwIP, LibTCPListen] pcb = 0x%x \n", pcb);
+
+        DbgPrint("[lwIP, LibTCPListen] Done\n");
         
         ExFreePool(msg);
         
@@ -453,7 +466,7 @@
 {
     struct connect_callback_msg *msg = arg;
 
-    DbgPrint("[LibTCPConnectCallback] Called\n");
+    DbgPrint("[lwIP, LibTCPConnectCallback] Called\n");
     
     ASSERT(arg);
     
@@ -463,7 +476,7 @@
     
     KeSetEvent(&msg->Event, IO_NO_INCREMENT, FALSE);
 
-    DbgPrint("[LibTCPConnectCallback] Done\n");
+    DbgPrint("[lwIP, LibTCPConnectCallback] Done\n");
 }
 
 err_t
@@ -471,6 +484,8 @@
 {
     struct connect_callback_msg *msg;
     err_t ret;
+
+    DbgPrint("[lwIP, LibTCPConnect] Called\n");
     
     if (!pcb)
         return ERR_CLSD;
@@ -491,8 +506,10 @@
             ret = ERR_CLSD;
         
         ExFreePool(msg);
-        
-        DbgPrint("LibTCPConnect(0x%x)\n", pcb);
+
+        DbgPrint("[lwIP, LibTCPConnect] pcb = 0x%x\n", pcb);
+
+        DbgPrint("[lwIP, LibTCPConnect] Done\n");
         
         return ret;
     }
@@ -528,21 +545,35 @@
 {
     struct close_callback_msg *msg;
     err_t ret;
+
+    DbgPrint("[lwIP, LibTCPClose] Called\n");
     
     if (!pcb)
+    {
+        DbgPrint("[lwIP, LibTCPClose] Done... NO pcb\n");
         return ERR_CLSD;
+    }
+
+    DbgPrint("[lwIP, LibTCPClose] Removing pcb callbacks\n");
     
     tcp_arg(pcb, NULL);
     tcp_recv(pcb, NULL);
     tcp_sent(pcb, NULL);
     tcp_err(pcb, NULL);
     tcp_accept(pcb, NULL);
+
+    DbgPrint("[lwIP, LibTCPClose] Attempting to allocate memory for msg\n");
     
     msg = ExAllocatePool(NonPagedPool, sizeof(struct close_callback_msg));
     if (msg)
     {
+        DbgPrint("[lwIP, LibTCPClose] Initializing msg->Event\n");
         KeInitializeEvent(&msg->Event, NotificationEvent, FALSE);
+
+        DbgPrint("[lwIP, LibTCPClose] Initializing msg->pcb = 0x%x\n", pcb);
         msg->Pcb = pcb;
+
+        DbgPrint("[lwIP, LibTCPClose] Attempting to call 
LibTCPCloseCallback\n");
         
         tcpip_callback_with_block(LibTCPCloseCallback, msg, 1);
         
@@ -553,10 +584,14 @@
         
         ExFreePool(msg);
         
-        DbgPrint("LibTCPClose(0x%x)\n", pcb);
+        DbgPrint("[lwIP, LibTCPClose] pcb = 0x%x\n", pcb);
+
+        DbgPrint("[lwIP, LibTCPClose] Done\n");
         
         return ret;
     }
+
+    DbgPrint("[lwIP, LibTCPClose] Failed to allocate memory\n");
     
     return ERR_MEM;
 }
@@ -564,7 +599,7 @@
 void
 LibTCPAccept(struct tcp_pcb *pcb, struct tcp_pcb *listen_pcb, void *arg)
 {
-    DbgPrint("[LibTCPAccept] (pcb, arg) = (0x%x, 0x%x)\n", pcb, arg);
+    DbgPrint("[lwIP, LibTCPAccept] Called. (pcb, arg) = (0x%x, 0x%x)\n", pcb, 
arg);
     
     ASSERT(arg);
     
@@ -575,13 +610,13 @@
     
     tcp_accepted(listen_pcb);
 
-    DbgPrint("[LibTCPAccept] Done\n");
+    DbgPrint("[lwIP, LibTCPAccept] Done\n");
 }
 
 err_t
 LibTCPGetHostName(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t *port)
 {
-    DbgPrint("[LibTCPGetHostName] pcb = (0x%x)\n", pcb);
+    DbgPrint("[lwIP, LibTCPGetHostName] Called. pcb = (0x%x)\n", pcb);
     
     if (!pcb)
         return ERR_CLSD;
@@ -589,7 +624,9 @@
     *ipaddr = pcb->local_ip;
     *port = pcb->local_port;
     
-    DbgPrint("Got host port: %d\n", *port);
+    DbgPrint("[lwIP, LibTCPGetHostName] Got host port: %d\n", *port);
+
+    DbgPrint("[lwIP, LibTCPGetHostName] Done\n");
     
     return ERR_OK;
 }
@@ -597,7 +634,7 @@
 err_t
 LibTCPGetPeerName(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t *port)
 {
-    DbgPrint("[LibTCPGetPeerName] pcb = (0x%x)\n", pcb);
+    DbgPrint("[lwIP, LibTCPGetPeerName] pcb = (0x%x)\n", pcb);
     
     if (!pcb)
         return ERR_CLSD;
@@ -605,7 +642,7 @@
     *ipaddr = pcb->remote_ip;
     *port = pcb->remote_port;
     
-    DbgPrint("[LibTCPGetPeerName] Got remote port: %d\n", *port);
+    DbgPrint("[lwIP, LibTCPGetPeerName] Got remote port: %d\n", *port);
     
     return ERR_OK;
 }


Reply via email to