File tree Expand file tree Collapse file tree 2 files changed +10
-6
lines changed
Coder Desktop/Coder Desktop Expand file tree Collapse file tree 2 files changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ final class CoderVPNService: NSObject, VPNService {
7373 . unconfigured
7474 }
7575 }
76+ xpc. connect ( )
7677 xpc. getPeerState ( )
7778 NotificationCenter . default. addObserver (
7879 self ,
@@ -100,7 +101,7 @@ final class CoderVPNService: NSObject, VPNService {
100101 }
101102
102103 await startTunnel ( )
103- // this ping is somewhat load bearing since it causes xpc to init
104+ xpc. connect ( )
104105 xpc. ping ( )
105106 logger. debug ( " network extension enabled " )
106107 }
Original file line number Diff line number Diff line change @@ -6,11 +6,14 @@ import VPNLib
66@objc final class VPNXPCInterface : NSObject , VPNXPCClientCallbackProtocol , @unchecked Sendable {
77 private var svc : CoderVPNService
88 private let logger = Logger ( subsystem: Bundle . main. bundleIdentifier!, category: " VPNXPCInterface " )
9- private let xpc : VPNXPCProtocol
9+ private var xpc : VPNXPCProtocol ? = nil
1010
1111 init ( vpn: CoderVPNService ) {
1212 svc = vpn
13+ super. init ( )
14+ }
1315
16+ func connect( ) {
1417 let networkExtDict = Bundle . main. object ( forInfoDictionaryKey: " NetworkExtension " ) as? [ String : Any ]
1518 let machServiceName = networkExtDict ? [ " NEMachServiceName " ] as? String
1619 let xpcConn = NSXPCConnection ( machServiceName: machServiceName!)
@@ -21,32 +24,32 @@ import VPNLib
2124 }
2225 xpc = proxy
2326
24- super. init ( )
25-
2627 xpcConn. exportedObject = self
2728 xpcConn. invalidationHandler = { [ logger] in
2829 Task { @MainActor in
2930 logger. error ( " XPC connection invalidated. " )
31+ self . xpc = nil
3032 }
3133 }
3234 xpcConn. interruptionHandler = { [ logger] in
3335 Task { @MainActor in
3436 logger. error ( " XPC connection interrupted. " )
37+ self . xpc = nil
3538 }
3639 }
3740 xpcConn. resume ( )
3841 }
3942
4043 func ping( ) {
41- xpc. ping {
44+ xpc? . ping {
4245 Task { @MainActor in
4346 self . logger. info ( " Connected to NE over XPC " )
4447 }
4548 }
4649 }
4750
4851 func getPeerState( ) {
49- xpc. getPeerState { data in
52+ xpc? . getPeerState { data in
5053 Task { @MainActor in
5154 self . svc. onExtensionPeerState ( data)
5255 }
You can’t perform that action at this time.
0 commit comments