Fix a memory leak whn running under high load

This commit is contained in:
Neil Alexander 2022-11-01 17:44:30 +00:00
parent 2ea9196d03
commit 56919b83a8
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -9,22 +9,20 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
var yggdrasilConfig: ConfigurationProxy? var yggdrasilConfig: ConfigurationProxy?
@objc func readPacketsFromTun() { @objc func readPacketsFromTun() {
if let conduit = self.conduit { autoreleasepool {
autoreleasepool { self.packetFlow.readPackets { (packets: [Data], protocols: [NSNumber]) in
self.packetFlow.readPackets { (packets: [Data], protocols: [NSNumber]) in for packet in packets {
for packet in packets { try? self.yggdrasil.sendBuffer(packet, length: packet.count)
conduit.send(packet)
}
self.readPacketsFromTun()
} }
self.readPacketsFromTun()
} }
} }
} }
@objc func writePacketsToTun() { @objc func writePacketsToTun() {
while let conduit = self.conduit { while true {
autoreleasepool { 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)) self.packetFlow.writePackets([data], withProtocols: [NSNumber](repeating: AF_INET6 as NSNumber, count: 1))
} }
} }