From 7f568068526c017301eda00d00b5401e8519926d Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Tue, 5 May 2026 17:53:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=94=9F=E5=91=BD=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E7=9A=84=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tun/Punchnet/Actors/SDLContextActor.swift | 19 +++++++++----- Tun/Punchnet/Actors/SDLSupervisor.swift | 32 ----------------------- Tun/Punchnet/UDPHole/SDLUDPHole.swift | 3 +-- 3 files changed, 13 insertions(+), 41 deletions(-) delete mode 100644 Tun/Punchnet/Actors/SDLSupervisor.swift diff --git a/Tun/Punchnet/Actors/SDLContextActor.swift b/Tun/Punchnet/Actors/SDLContextActor.swift index e35ade0..6b5b613 100644 --- a/Tun/Punchnet/Actors/SDLContextActor.swift +++ b/Tun/Punchnet/Actors/SDLContextActor.swift @@ -154,9 +154,7 @@ actor SDLContextActor { } self.superMonitorTask = self.startMonitorTask(name: "superMonitorTask") { - SDLLogger.log("[SDLContext] superClient running!!!!") try await self.startSuperClient() - SDLLogger.log("[SDLContext] superClient stop!!!!") } } @@ -376,8 +374,10 @@ actor SDLContextActor { // 开始探测nat的类型 Task { + SDLLogger.log("[SDLContext] start probeNatType") await self.probeNatType() } + SDLLogger.log("[SDLContext] udpHole ready") do { @@ -525,10 +525,14 @@ actor SDLContextActor { self.updatePolicyTask?.cancel() self.updatePolicyTask = Task { - while !Task.isCancelled { - try? await Task.sleep(for: .seconds(300)) - SDLLogger.log("[SDLContext] updatePolicyTask execute") - await self.identifyStore.batUpdatePolicy(using: self.quicClient, dstIdentityID: self.config.identityId) + do { + while true { + try await Task.sleep(for: .seconds(300)) + SDLLogger.log("[SDLContext] updatePolicyTask execute") + await self.identifyStore.batUpdatePolicy(using: self.quicClient, dstIdentityID: self.config.identityId) + } + } catch let err { + SDLLogger.log("[SDLContext] updatePolicyTask stop with err: \(err)") } } } @@ -730,9 +734,10 @@ extension SDLContextActor { try Task.checkCancellation() try await body() } catch is CancellationError { + SDLLogger.log("[SDLContext] worker \(name) cancelled", for: .debug) break } catch let err { - SDLLogger.log("[SDLContextActor] worker \(name) crashed: \(err.localizedDescription)", for: .debug) + SDLLogger.log("[SDLContext] worker \(name) crashed: \(err.localizedDescription), will restart", for: .debug) do { try await Task.sleep(for: retryDelay) } catch is CancellationError { diff --git a/Tun/Punchnet/Actors/SDLSupervisor.swift b/Tun/Punchnet/Actors/SDLSupervisor.swift deleted file mode 100644 index 38980f8..0000000 --- a/Tun/Punchnet/Actors/SDLSupervisor.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// SDLSupervisor.swift -// punchnet -// -// Created by 安礼成 on 2026/3/10. -// - -actor SDLSupervisor { - private var loopChildWorkers: [Task] = [] - - func addWorker(name: String, _ body: @escaping () async throws -> Void, retryDelay: Duration = .seconds(2)) { - let worker = Task(name: name) { - while !Task.isCancelled { - do { - try await body() - } catch is CancellationError { - break - } catch let err { - SDLLogger.log("[Supervisor] worker \(name) crashed: \(err.localizedDescription)", for: .debug) - try? await Task.sleep(for: retryDelay) - } - } - } - self.loopChildWorkers.append(worker) - } - - func stop() { - self.loopChildWorkers.forEach { $0.cancel() } - self.loopChildWorkers.removeAll() - } - -} diff --git a/Tun/Punchnet/UDPHole/SDLUDPHole.swift b/Tun/Punchnet/UDPHole/SDLUDPHole.swift index 93718f1..584b15a 100644 --- a/Tun/Punchnet/UDPHole/SDLUDPHole.swift +++ b/Tun/Punchnet/UDPHole/SDLUDPHole.swift @@ -105,8 +105,7 @@ private final class SDLUDPHoleHandler: ChannelInboundHandler { var buffer = envelope.data let remoteAddress = envelope.remoteAddress - let byteCount = buffer.readableBytes - buffer.readerIndex - SDLLogger.log("[SDLUDPHole] get raw bytes: \(byteCount), from: \(remoteAddress)", for: .debug) + SDLLogger.log("[SDLUDPHole] get raw bytes: \(buffer.readableBytes), from: \(remoteAddress)", for: .debug) do { if let message = try SDLHoleMessage.decode(buffer: &buffer) {