mirror of
				https://github.com/yggdrasil-network/yggdrasil-ios.git
				synced 2025-11-04 03:05:09 +03:00 
			
		
		
		
	Fix a memory leak whn running under high load
This commit is contained in:
		
							parent
							
								
									2ea9196d03
								
							
						
					
					
						commit
						56919b83a8
					
				
					 1 changed files with 7 additions and 9 deletions
				
			
		| 
						 | 
					@ -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))
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue