diff --git a/Tun/Context/SDLContextActor.swift b/Tun/Context/SDLContextActor.swift index a1be1ee..8b3fb91 100644 --- a/Tun/Context/SDLContextActor.swift +++ b/Tun/Context/SDLContextActor.swift @@ -448,11 +448,11 @@ actor SDLContextActor { await self.dnsCloudRestartSignal.request() await self.dnsLocalRestartSignal.request() - await self.superService.stop() - await self.udpHoleService.stop() - await self.udpHoleV6Service.stop() - await self.dnsCloudService.stop() - await self.dnsLocalService.stop() + await self.superService.recoverAfterWake() + await self.udpHoleService.recoverAfterWake() + await self.udpHoleV6Service.recoverAfterWake() + await self.dnsCloudService.recoverAfterWake() + await self.dnsLocalService.recoverAfterWake() } private func cleanupRoot() async { diff --git a/Tun/DNS/DNSCloudService.swift b/Tun/DNS/DNSCloudService.swift index ac9a937..e5edf92 100644 --- a/Tun/DNS/DNSCloudService.swift +++ b/Tun/DNS/DNSCloudService.swift @@ -61,6 +61,10 @@ actor DNSCloudService { await client?.stop() } + func recoverAfterWake() async { + await self.stop() + } + func forward(ipPacketData: Data) async { await self.currentClient?.forward(ipPacketData: ipPacketData) } diff --git a/Tun/DNS/DNSLocalService.swift b/Tun/DNS/DNSLocalService.swift index 0de6bc7..2734e96 100644 --- a/Tun/DNS/DNSLocalService.swift +++ b/Tun/DNS/DNSLocalService.swift @@ -43,6 +43,10 @@ actor DNSLocalService { await client?.stop() } + func recoverAfterWake() async { + await self.stop() + } + func query(tracker: DNSLocalClient.DNSTracker, dnsPayload: Data) async { await self.currentClient?.query(tracker: tracker, dnsPayload: dnsPayload) } diff --git a/Tun/Super/SDLSuperService.swift b/Tun/Super/SDLSuperService.swift index ceb65f5..cd1ca5e 100644 --- a/Tun/Super/SDLSuperService.swift +++ b/Tun/Super/SDLSuperService.swift @@ -55,6 +55,10 @@ actor SDLSuperService { await session?.stop() } + func recoverAfterWake() async { + await self.stop() + } + func send(type: SDLPacketType, data: Data) async { await self.currentSession?.send(type: type, data: data) } diff --git a/Tun/UDPHole/SDLUDPHoleService.swift b/Tun/UDPHole/SDLUDPHoleService.swift index 0285c16..39f0ad4 100644 --- a/Tun/UDPHole/SDLUDPHoleService.swift +++ b/Tun/UDPHole/SDLUDPHoleService.swift @@ -65,6 +65,10 @@ actor SDLUDPHoleService { await self.proberActor.cancelAll() } + func recoverAfterWake() async { + await self.stop() + } + func send(type: SDLPacketType, data: Data, remoteAddress: SocketAddress) async { await self.currentSession?.send(type: type, data: data, remoteAddress: remoteAddress) } diff --git a/Tun/UDPHoleV6/SDLUDPHoleV6Service.swift b/Tun/UDPHoleV6/SDLUDPHoleV6Service.swift index 9b490a9..fbae1f2 100644 --- a/Tun/UDPHoleV6/SDLUDPHoleV6Service.swift +++ b/Tun/UDPHoleV6/SDLUDPHoleV6Service.swift @@ -50,6 +50,10 @@ actor SDLUDPHoleV6Service { await session?.stop() } + func recoverAfterWake() async { + await self.stop() + } + func send(type: SDLPacketType, data: Data, remoteAddress: SocketAddress) async { await self.currentSession?.send(type: type, data: data, remoteAddress: remoteAddress) }