Skip to content

Commit b43a407

Browse files
committed
fixes
1 parent dc56a96 commit b43a407

File tree

5 files changed

+14
-71
lines changed

5 files changed

+14
-71
lines changed

Coder Desktop/Coder Desktop/VPNService.swift

+4-1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ final class CoderVPNService: NSObject, VPNService, @preconcurrency VPNXPCClientC
139139

140140
func onPeerUpdate(_ data: Data) {
141141
// TODO: handle peer update
142+
logger.info("network extension peer update")
142143
do {
143144
let msg = try Vpn_TunnelMessage(serializedBytes: data)
144145
debugPrint(msg)
@@ -157,5 +158,7 @@ final class CoderVPNService: NSObject, VPNService, @preconcurrency VPNXPCClientC
157158
tunnelState = .disabled
158159
}
159160

160-
func onError(_: NSError) {}
161+
func onError(_ error: NSError) {
162+
logger.info("network extension reported error: \(error)")
163+
}
161164
}

Coder Desktop/VPN/PacketTunnelProvider.swift

+4-1
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,17 @@ class PacketTunnelProvider: NEPacketTunnelProvider, @unchecked Sendable {
5454
Task {
5555
// TODO: Retrieve access URL & Token via Keychain
5656
do throws(ManagerError) {
57+
logger.debug("creating manager")
5758
manager = try await Manager(
5859
with: self,
5960
cfg: .init(
6061
apiToken: "fake-token", serverUrl: .init(string: "https://dev.coder.com")!
6162
)
6263
)
6364
globalXPCListenerDelegate.vpnXPCInterface.setManager(manager)
64-
try await manager?.startVPN()
65+
logger.debug("calling manager.startVPN")
66+
try await manager!.startVPN()
67+
logger.debug("vpn started")
6568
completionHandler.callAsFunction(nil)
6669
} catch {
6770
completionHandler.callAsFunction(error as NSError)

Coder Desktop/VPN/VpnXPCInterface.swift

+2-64
Original file line numberDiff line numberDiff line change
@@ -21,69 +21,7 @@ import VPNXPC
2121
return m
2222
}
2323

24-
func start(with reply: @escaping (NSError?) -> Void) {
25-
// Convert Obj-C block to a Swift @Sendable closure.
26-
let safeReply = CallbackWrapper(reply)
27-
let manager = getManager()
28-
29-
guard let manager = manager else {
30-
// If somehow `start(...)` is called but no Manager is set
31-
reply(NSError(domain: "VPNXPC", code: 1, userInfo: [
32-
NSLocalizedDescriptionKey: "Manager not set",
33-
]))
34-
return
35-
}
36-
37-
// We must call the async actor method from a Task.
38-
Task {
39-
do {
40-
try await manager.startVPN()
41-
await MainActor.run {
42-
safeReply.callAsFunction(nil)
43-
}
44-
} catch {
45-
await MainActor.run {
46-
safeReply.callAsFunction(error as NSError)
47-
}
48-
}
49-
}
24+
func getPeerInfo(with reply: @escaping () -> Void) {
25+
reply()
5026
}
51-
52-
func stop(with reply: @escaping (NSError?) -> Void) {
53-
// Convert Obj-C block to a Swift @Sendable closure.
54-
let safeReply = CallbackWrapper(reply)
55-
let manager = getManager()
56-
57-
guard let manager = manager else {
58-
// If somehow `start(...)` is called but no Manager is set
59-
reply(NSError(domain: "VPNXPC", code: 1, userInfo: [
60-
NSLocalizedDescriptionKey: "Manager not set",
61-
]))
62-
return
63-
}
64-
65-
Task {
66-
do {
67-
try await manager.stopVPN()
68-
await MainActor.run {
69-
safeReply.callAsFunction(nil)
70-
}
71-
} catch {
72-
await MainActor.run {
73-
safeReply.callAsFunction(error as NSError)
74-
}
75-
}
76-
}
77-
}
78-
79-
// func getPeerInfo(with reply: @escaping (Bool, String?) -> Void) {
80-
// Task {
81-
// do {
82-
// try await manager.getPeerInfo()
83-
// reply(true, nil)
84-
// } catch {
85-
// reply(false, "\(error)")
86-
// }
87-
// }
88-
// }
8927
}

Coder Desktop/VPN/main.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ final class XPCListenerDelegate: NSObject, NSXPCListenerDelegate, @unchecked Sen
3434
}
3535

3636
guard
37-
let netExt = Bundle.main.object(forInfoDictionaryKey: "NetworkExtension") as? [String: Any],
38-
let serviceName = netExt["NEMachServiceName"] as? String
37+
let netExt = Bundle.main.object(forInfoDictionaryKey: "NetworkExtension") as? [String: Any],
38+
let serviceName = netExt["NEMachServiceName"] as? String
3939
else {
40-
fatalError("Missing NEMachServiceName in Info.plist")
40+
fatalError("Missing NEMachServiceName in Info.plist")
4141
}
4242

4343
print(serviceName)

Coder Desktop/VPNXPC/Protocol.swift

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import Foundation
22

33
@preconcurrency
44
@objc public protocol VPNXPCProtocol {
5-
func start(with reply: @escaping (NSError?) -> Void)
6-
func stop(with reply: @escaping (NSError?) -> Void)
5+
func getPeerInfo(with reply: @escaping () -> Void)
76
}
87

98
@preconcurrency

0 commit comments

Comments
 (0)