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?
@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))
}
}