From 20ef0ca9856d736f5b9511dabd2f56307e884f3f Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 17 Jul 2025 15:05:00 +0800 Subject: [PATCH] add stop --- Sources/Punchnet/SDLContext.swift | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Sources/Punchnet/SDLContext.swift b/Sources/Punchnet/SDLContext.swift index ea9384e..ebd27b1 100644 --- a/Sources/Punchnet/SDLContext.swift +++ b/Sources/Punchnet/SDLContext.swift @@ -117,6 +117,18 @@ public class SDLContext: @unchecked Sendable { self.monitor.start() } + public func stop() async { + self.superCancel?.cancel() + self.superClient = nil + + self.udpCancel?.cancel() + self.udpHole = nil + + self.readTask?.cancel() + + exit(-1) + } + private func startSuperClient() async throws { self.superClient = SDLSuperClient(host: config.superHost, port: config.superPort) // 建立super的绑定关系 @@ -379,6 +391,8 @@ public class SDLContext: @unchecked Sendable { networkSettings.dnsSettings = NEDNSSettings(servers: ["8.8.8.8", "114.114.114.114"]) } + SDLLogger.log("[SDLContext] Tun started at network ip: \(netAddress.ipAddress), mask: \(netAddress.maskAddress)", level: .debug) + let ipv4Settings = NEIPv4Settings(addresses: [netAddress.ipAddress], subnetMasks: [netAddress.maskAddress]) // 设置路由表 //NEIPv4Route.default() @@ -391,8 +405,9 @@ public class SDLContext: @unchecked Sendable { try await self.provider.setTunnelNetworkSettings(networkSettings) await self.holerManager.cleanup() - self.startReader() + + SDLLogger.log("[SDLContext] setTunnelNetworkSettings success, start read packet", level: .debug) } catch let err { SDLLogger.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error) exit(-1)