diff options
Diffstat (limited to 'driver')
-rw-r--r-- | driver/send.c | 6 | ||||
-rw-r--r-- | driver/socket.c | 16 |
2 files changed, 2 insertions, 20 deletions
diff --git a/driver/send.c b/driver/send.c index c712885..9fabf7f 100644 --- a/driver/send.c +++ b/driver/send.c @@ -336,14 +336,11 @@ PacketEncryptWorker(MULTICORE_WORKQUEUE *WorkQueue) { for (NET_BUFFER *NbIn = NET_BUFFER_LIST_FIRST_NB(Nbl->ParentNetBufferList), *NbOut = NET_BUFFER_LIST_FIRST_NB(Nbl); - NbIn && NbOut; + NbIn && NbOut && State == PACKET_STATE_CRYPTED; NbIn = NET_BUFFER_NEXT_NB(NbIn), NbOut = NET_BUFFER_NEXT_NB(NbOut)) { if (!EncryptPacket(&Simd, NbOut, NbIn, Keypair, Mtu)) - { State = PACKET_STATE_DEAD; - goto enqueue; - } } if (Nbl != Nbl->ParentNetBufferList) { @@ -351,7 +348,6 @@ PacketEncryptWorker(MULTICORE_WORKQUEUE *WorkQueue) Nbl->ParentNetBufferList = Nbl; } } - enqueue: _Analysis_assume_(First != NULL); QueueEnqueuePerPeer(&Peer->Device->TxQueue, &Peer->TxSerialEntry, First, State); ProcessPerPeerWork(&Wg->TxQueue); diff --git a/driver/socket.c b/driver/socket.c index 64d26f3..cdb0bba 100644 --- a/driver/socket.c +++ b/driver/socket.c @@ -285,21 +285,7 @@ retry: BestLuid = Table->Table[i].InterfaceLuid; } MemFree(If); - /* We disable wg-loop routing for now, to prevent stack overflow. TODO: revisit later. */ - Status = STATUS_SUCCESS; - MuAcquirePushLockShared(&DeviceListLock); - WG_DEVICE *Wg; - LIST_FOR_EACH_ENTRY (Wg, &DeviceList, WG_DEVICE, DeviceList) - { - if (Wg->InterfaceLuid.Value == BestLuid.Value) - { - LogInfoRatelimited(Peer->Device, "Dropping packet that would egress via interface %u", Wg->InterfaceIndex); - Status = STATUS_RECURSIVE_DISPATCH; - break; - } - } - MuReleasePushLockShared(&DeviceListLock); - if (NT_SUCCESS(Status) && Table->NumEntries && BestIndex) + if (Table->NumEntries && BestIndex) Status = GetBestRoute2(NULL, BestIndex, NULL, &Endpoint->Addr, 0, &Table->Table[0], &SrcAddr); FreeMibTable(Table); if (!NT_SUCCESS(Status)) |