aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/send.c6
-rw-r--r--driver/socket.c16
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))