diff --git a/Tun/Punchnet/Actors/SDLPuncherActor.swift b/Tun/Punchnet/Actors/SDLPuncherActor.swift index 2c32b21..deee40a 100644 --- a/Tun/Punchnet/Actors/SDLPuncherActor.swift +++ b/Tun/Punchnet/Actors/SDLPuncherActor.swift @@ -23,7 +23,7 @@ actor SDLPuncherActor { private var logger: SDLLogger private var querySocketAddress: SocketAddress - private let(requestStream, requestContinuation) = AsyncStream.makeStream(of: RegisterRequest.self, bufferingPolicy: .unbounded) + nonisolated private let(requestStream, requestContinuation) = AsyncStream.makeStream(of: RegisterRequest.self, bufferingPolicy: .unbounded) struct RegisterRequest { let srcMac: Data diff --git a/Tun/Punchnet/SDLContext.swift b/Tun/Punchnet/SDLContext.swift index b98e503..93e444f 100644 --- a/Tun/Punchnet/SDLContext.swift +++ b/Tun/Punchnet/SDLContext.swift @@ -8,33 +8,19 @@ import Foundation import NetworkExtension import NIOCore -import Combine // 上下文环境变量,全局共享 /* 1. 处理rsa的加解密逻辑 */ - -@available(macOS 14, *) public class SDLContext { - - // 路由信息 - struct Route { - let dstAddress: String - let subnetMask: String - - var debugInfo: String { - return "\(dstAddress):\(subnetMask)" - } - } - let config: SDLConfiguration // nat的网络类型 var natType: SDLNATProberActor.NatType = .blocked // AES加密,授权通过后,对象才会被创建 - var aesCipher: AESCipher + let aesCipher: AESCipher // aes var aesKey: Data = Data() @@ -69,7 +55,6 @@ public class SDLContext { // 流量统计 private var flowTracer = SDLFlowTracer() - private var flowTracerCancel: AnyCancellable? private let logger: SDLLogger @@ -381,7 +366,7 @@ public class SDLContext { case .request: self.logger.log("[SDLContext] get arp request packet", level: .debug) let response = ARPPacket.arpResponse(for: arpPacket, mac: networkAddr.mac, ip: networkAddr.ip) - await self.routeLayerPacket(dstMac: arpPacket.senderMAC, type: .arp, data: response.marshal()) + self.routeLayerPacket(dstMac: arpPacket.senderMAC, type: .arp, data: response.marshal()) case .response: self.logger.log("[SDLContext] get arp response packet", level: .debug) self.arpServer.append(ip: arpPacket.senderIP, mac: arpPacket.senderMAC) @@ -427,10 +412,8 @@ public class SDLContext { self.readTask = Task(priority: .high) { repeat { let packets = await self.providerAdapter.readPackets() - Task { - let ipPackets = packets.compactMap { IPPacket($0) } - await self.batchProcessPackets(batchSize: 20, packets: ipPackets) - } + let ipPackets = packets.compactMap { IPPacket($0) } + await self.batchProcessPackets(batchSize: 20, packets: ipPackets) } while true } } @@ -439,12 +422,11 @@ public class SDLContext { private func batchProcessPackets(batchSize: Int, packets: [IPPacket]) async { for startIndex in stride(from: 0, to: packets.count, by: batchSize) { let endIndex = Swift.min(startIndex + batchSize, packets.count) - let chunkPackets = packets[startIndex..