fix welcome
This commit is contained in:
parent
d70549d85d
commit
fb60f1ab68
@ -108,6 +108,10 @@ actor SDLContextActor {
|
||||
|
||||
// 注册任务
|
||||
private var registerTask: Task<Void, Never>?
|
||||
|
||||
// stunRequest任务
|
||||
private var stunRequestTask: Task<Void, Never>?
|
||||
|
||||
private let superRegistrationStateMachine = SDLSuperRegistrationStateMachine()
|
||||
|
||||
public init(provider: NEPacketTunnelProvider, config: SDLConfiguration, rsaCipher: RSACipher) {
|
||||
@ -323,21 +327,6 @@ actor SDLContextActor {
|
||||
let localAddress = try udpHole.start()
|
||||
SDLLogger.log("[SDLContext] udpHole started, on address: \(localAddress)")
|
||||
|
||||
// 处理心跳逻辑
|
||||
let pingTask = Task.detached {
|
||||
let timerStream = SDLAsyncTimerStream()
|
||||
timerStream.start(interval: .seconds(5))
|
||||
|
||||
for await _ in timerStream.stream {
|
||||
if Task.isCancelled {
|
||||
break
|
||||
}
|
||||
await self.sendStunRequest()
|
||||
}
|
||||
|
||||
SDLLogger.log("[SDLContext] udp pingTask cancel")
|
||||
}
|
||||
|
||||
// 处理消息流
|
||||
let messageStream = udpHole.messageStream
|
||||
let messageTask = Task.detached {
|
||||
@ -346,7 +335,7 @@ actor SDLContextActor {
|
||||
|
||||
self.udpHole = udpHole
|
||||
self.udpHoleLocalAddress = localAddress
|
||||
self.udpHoleWorkers = [pingTask, messageTask]
|
||||
self.udpHoleWorkers = [messageTask]
|
||||
|
||||
// 开始探测nat的类型
|
||||
await self.probeNatType()
|
||||
@ -451,6 +440,27 @@ actor SDLContextActor {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: -- StunRequestTask
|
||||
private func startStunRequestTask(welcome: SDLWelcome) {
|
||||
// 通过 welcome信息拿到当前可用使用的ipv6地址
|
||||
|
||||
|
||||
// 处理心跳逻辑
|
||||
self.stunRequestTask = Task.detached {
|
||||
let timerStream = SDLAsyncTimerStream()
|
||||
timerStream.start(interval: .seconds(5))
|
||||
|
||||
for await _ in timerStream.stream {
|
||||
if Task.isCancelled {
|
||||
break
|
||||
}
|
||||
await self.sendStunRequest()
|
||||
}
|
||||
|
||||
SDLLogger.log("[SDLContext] udp stunRequestTask cancel")
|
||||
}
|
||||
}
|
||||
|
||||
private func sendStunRequest() {
|
||||
guard let sessionToken = self.sessionToken else {
|
||||
return
|
||||
@ -464,7 +474,6 @@ actor SDLContextActor {
|
||||
stunRequest.natType = UInt32(self.natType.rawValue)
|
||||
stunRequest.sessionToken = sessionToken
|
||||
|
||||
|
||||
if let v6Info = self.makeCurrentV6Info() {
|
||||
stunRequest.v6Info = v6Info
|
||||
}
|
||||
@ -488,9 +497,7 @@ actor SDLContextActor {
|
||||
|
||||
let (packets, numbers) = await self.provider.packetFlow.readPackets()
|
||||
for (data, number) in zip(packets, numbers) where number == 2 {
|
||||
SDLLogger.log("[SDLContext] read Tun packet step 1, data count: \(data.count)", for: .trace)
|
||||
if let ipPacket = IPPacket(data) {
|
||||
SDLLogger.log("[SDLContext] read Tun packet step 2, data count: \(ipPacket.data.count)", for: .trace)
|
||||
await self.dealTunPacket(packet: ipPacket)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user