From 56919b83a8e91cd670476a533edb9a9ad6b7c478 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 1 Nov 2022 17:44:30 +0000 Subject: [PATCH] Fix a memory leak whn running under high load --- .../PacketTunnelProvider.swift | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Yggdrasil Network Extension/PacketTunnelProvider.swift b/Yggdrasil Network Extension/PacketTunnelProvider.swift index 768da36..22cb47e 100644 --- a/Yggdrasil Network Extension/PacketTunnelProvider.swift +++ b/Yggdrasil Network Extension/PacketTunnelProvider.swift @@ -9,22 +9,20 @@ class PacketTunnelProvider: NEPacketTunnelProvider { var yggdrasilConfig: ConfigurationProxy? @objc func readPacketsFromTun() { - if let conduit = self.conduit { - autoreleasepool { - self.packetFlow.readPackets { (packets: [Data], protocols: [NSNumber]) in - for packet in packets { - conduit.send(packet) - } - self.readPacketsFromTun() + autoreleasepool { + self.packetFlow.readPackets { (packets: [Data], protocols: [NSNumber]) in + for packet in packets { + try? self.yggdrasil.sendBuffer(packet, length: packet.count) } + self.readPacketsFromTun() } } } @objc func writePacketsToTun() { - while let conduit = self.conduit { + while true { autoreleasepool { - if let data = conduit.recv() { + if let data = try? self.yggdrasil.recv() { self.packetFlow.writePackets([data], withProtocols: [NSNumber](repeating: AF_INET6 as NSNumber, count: 1)) } }