[AFD]
authorCameron Gutman <aicommander@gmail.com>
Sat, 27 Mar 2010 00:00:21 +0000 (00:00 +0000)
committerCameron Gutman <aicommander@gmail.com>
Sat, 27 Mar 2010 00:00:21 +0000 (00:00 +0000)
- Allow connection requests for connectionless sockets (they associate a default remote address with the socket required for use in AfdConnectedSocketWriteData and AfdConnectedSocketReadData)
- Add a check for a disconnected socket

svn path=/trunk/; revision=46479

reactos/drivers/network/afd/afd/connect.c
reactos/drivers/network/afd/afd/write.c

index 567fca9..3f47a05 100644 (file)
@@ -380,7 +380,18 @@ AfdStreamSocketConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp,
 #endif
 
    if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS )
-       return UnlockAndMaybeComplete( FCB, STATUS_INVALID_PARAMETER, Irp, 0 );
+   {
+       if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress );
+       FCB->RemoteAddress =
+           TaCopyTransportAddress( &ConnectReq->RemoteAddress );
+
+       if( !FCB->RemoteAddress )
+           Status = STATUS_NO_MEMORY;
+       else
+           Status = STATUS_SUCCESS;
+
+       return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
+   }
 
     switch( FCB->State ) {
     case SOCKET_STATE_CONNECTED:
index a230361..aa1c9e3 100644 (file)
@@ -229,7 +229,7 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
         PTDI_CONNECTION_INFORMATION TargetAddress;
 
         /* Check that the socket is bound */
-        if( FCB->State != SOCKET_STATE_BOUND )
+        if( FCB->State != SOCKET_STATE_BOUND || !FCB->RemoteAddress )
             return UnlockAndMaybeComplete( FCB, STATUS_INVALID_PARAMETER, Irp,
                                            0 );