Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbb0667e

Browse files
committed
reconnect xpc on each request
1 parentc356425 commitbb0667e

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

‎Coder Desktop/Coder Desktop/VPNService.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff 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
awaitstartTunnel()
103-
// this ping is somewhat load bearing since it causesxpc to init
104+
xpc.connect()
104105
xpc.ping()
105106
logger.debug("network extension enabled")
106107
}

‎Coder Desktop/Coder Desktop/XPCInterface.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ import VPNLib
66
@objcfinalclassVPNXPCInterface:NSObject,VPNXPCClientCallbackProtocol,@uncheckedSendable{
77
privatevarsvc:CoderVPNService
88
privateletlogger=Logger(subsystem:Bundle.main.bundleIdentifier!, category:"VPNXPCInterface")
9-
privateletxpc:VPNXPCProtocol
9+
privatevarxpc:VPNXPCProtocol?=nil
1010

1111
init(vpn:CoderVPNService){
1212
svc= vpn
13+
super.init()
14+
}
1315

16+
func connect(){
1417
letnetworkExtDict=Bundle.main.object(forInfoDictionaryKey:"NetworkExtension")as?[String:Any]
1518
letmachServiceName=networkExtDict?["NEMachServiceName"]as?String
1619
letxpcConn=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{@MainActorin
2930
logger.error("XPC connection invalidated.")
31+
self.xpc=nil
3032
}
3133
}
3234
xpcConn.interruptionHandler={[logger]in
3335
Task{@MainActorin
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{@MainActorin
4346
self.logger.info("Connected to NE over XPC")
4447
}
4548
}
4649
}
4750

4851
func getPeerState(){
49-
xpc.getPeerState{ datain
52+
xpc?.getPeerState{ datain
5053
Task{@MainActorin
5154
self.svc.onExtensionPeerState(data)
5255
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp