diff --git a/reactos/drivers/network/afd/afd/main.c b/reactos/drivers/network/afd/afd/main.c index 1fd1ef1ed0f..1a0cd723fed 100644 --- a/reactos/drivers/network/afd/afd/main.c +++ b/reactos/drivers/network/afd/afd/main.c @@ -221,10 +221,6 @@ VOID DestroySocket( PAFD_FCB FCB ) { ExFreePool( FCB->LocalAddress ); if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress ); - if( FCB->ListenIrp.ConnectionReturnInfo ) - ExFreePool( FCB->ListenIrp.ConnectionReturnInfo ); - if( FCB->ListenIrp.ConnectionCallInfo ) - ExFreePool( FCB->ListenIrp.ConnectionCallInfo ); if( FCB->TdiDeviceName.Buffer ) ExFreePool(FCB->TdiDeviceName.Buffer); diff --git a/reactos/drivers/network/tcpip/datalink/lan.c b/reactos/drivers/network/tcpip/datalink/lan.c index 49ab3ebae3e..aaf32dbf082 100644 --- a/reactos/drivers/network/tcpip/datalink/lan.c +++ b/reactos/drivers/network/tcpip/datalink/lan.c @@ -628,6 +628,11 @@ VOID LANTransmit( ("Called( NdisPacket %x, Offset %d, Adapter %x )\n", NdisPacket, Offset, Adapter)); + if (Adapter->State != LAN_STATE_STARTED) { + ProtocolSendComplete(Context, NdisPacket, NDIS_STATUS_NOT_ACCEPTED); + return; + } + TI_DbgPrint(DEBUG_DATALINK, ("Adapter Address [%02x %02x %02x %02x %02x %02x]\n", Adapter->HWAddress[0] & 0xff, @@ -643,7 +648,6 @@ VOID LANTransmit( LanChainCompletion( Adapter, NdisPacket ); - if (Adapter->State == LAN_STATE_STARTED) { switch (Adapter->Media) { case NdisMedium802_3: EHeader = (PETH_HEADER)Data; @@ -713,9 +717,6 @@ VOID LANTransmit( * the situation with IRPs. */ if (NdisStatus != NDIS_STATUS_PENDING) ProtocolSendComplete((NDIS_HANDLE)Context, NdisPacket, NdisStatus); - } else { - ProtocolSendComplete((NDIS_HANDLE)Context, NdisPacket, NDIS_STATUS_CLOSED); - } } static NTSTATUS diff --git a/reactos/lib/drivers/ip/network/neighbor.c b/reactos/lib/drivers/ip/network/neighbor.c index 3eee6265019..e9f13ffc41f 100644 --- a/reactos/lib/drivers/ip/network/neighbor.c +++ b/reactos/lib/drivers/ip/network/neighbor.c @@ -29,6 +29,9 @@ VOID NBSendPackets( PNEIGHBOR_CACHE_ENTRY NCE ) { PLIST_ENTRY PacketEntry; PNEIGHBOR_PACKET Packet; + if(!(NCE->State & NUD_CONNECTED)) + return; + /* Send any waiting packets */ PacketEntry = ExInterlockedRemoveHeadList(&NCE->PacketQueue, &NCE->Table->Lock); diff --git a/reactos/lib/drivers/ip/transport/tcp/accept.c b/reactos/lib/drivers/ip/transport/tcp/accept.c index 447d39b6162..2132b17f6a1 100644 --- a/reactos/lib/drivers/ip/transport/tcp/accept.c +++ b/reactos/lib/drivers/ip/transport/tcp/accept.c @@ -87,13 +87,13 @@ NTSTATUS TCPListen( PCONNECTION_ENDPOINT Connection, UINT Backlog ) { TI_DbgPrint(DEBUG_TCP,("AddressToBind - %x:%x\n", AddressToBind.sin_addr, AddressToBind.sin_port)); - OskitTCPBind( Connection->SocketContext, - Connection, - &AddressToBind, - sizeof(AddressToBind) ); + Status = TCPTranslateError( OskitTCPBind( Connection->SocketContext, + Connection, + &AddressToBind, + sizeof(AddressToBind) ) ); - Status = TCPTranslateError( OskitTCPListen( Connection->SocketContext, - Backlog ) ); + if (NT_SUCCESS(Status)) + Status = TCPTranslateError( OskitTCPListen( Connection->SocketContext, Backlog ) ); TcpipRecursiveMutexLeave( &TCPLock ); diff --git a/reactos/lib/drivers/ip/transport/tcp/tcp.c b/reactos/lib/drivers/ip/transport/tcp/tcp.c index 7dff2cc6a83..bdf7fd53a0a 100644 --- a/reactos/lib/drivers/ip/transport/tcp/tcp.c +++ b/reactos/lib/drivers/ip/transport/tcp/tcp.c @@ -577,21 +577,24 @@ NTSTATUS TCPConnect AddressToConnect.sin_family = AF_INET; AddressToBind = AddressToConnect; - OskitTCPBind( Connection->SocketContext, + Status = TCPTranslateError + ( OskitTCPBind( Connection->SocketContext, Connection, &AddressToBind, - sizeof(AddressToBind) ); + sizeof(AddressToBind) ) ); - memcpy( &AddressToConnect.sin_addr, - &RemoteAddress.Address.IPv4Address, - sizeof(AddressToConnect.sin_addr) ); - AddressToConnect.sin_port = RemotePort; + if (NT_SUCCESS(Status)) { + memcpy( &AddressToConnect.sin_addr, + &RemoteAddress.Address.IPv4Address, + sizeof(AddressToConnect.sin_addr) ); + AddressToConnect.sin_port = RemotePort; - Status = TCPTranslateError - ( OskitTCPConnect( Connection->SocketContext, - Connection, - &AddressToConnect, - sizeof(AddressToConnect) ) ); + Status = TCPTranslateError + ( OskitTCPConnect( Connection->SocketContext, + Connection, + &AddressToConnect, + sizeof(AddressToConnect) ) ); + } TcpipRecursiveMutexLeave( &TCPLock );