Skip to content

Commit 6398b00

Browse files
committed
fixup tunnel
1 parent 8b60368 commit 6398b00

File tree

1 file changed

+13
-20
lines changed

1 file changed

+13
-20
lines changed

Coder Desktop/VPN/TunnelHandle.swift

+13-20
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,32 @@ let startSymbol = "OpenTunnel"
66
actor TunnelHandle {
77
private let logger = Logger(subsystem: "com.coder.Coder.CoderPacketTunnelProvider", category: "tunnel-handle")
88

9-
private var openTunnelFn: OpenTunnel!
10-
private var tunnelPipe: Pipe!
11-
private var dylibHandle: UnsafeMutableRawPointer!
9+
private let tunnelWritePipe: Pipe
10+
private let tunnelReadPipe: Pipe
11+
private let dylibHandle: UnsafeMutableRawPointer
12+
13+
var writeFD: Int32 { tunnelReadPipe.fileHandleForWriting.fileDescriptor }
14+
var readFD: Int32 { tunnelWritePipe.fileHandleForReading.fileDescriptor }
1215

1316
init(dylibPath: URL) throws(TunnelHandleError) {
1417
dylibHandle = dlopen(dylibPath.path, RTLD_NOW | RTLD_LOCAL)
1518

16-
guard dylibHandle != nil else {
17-
var errStr = "UNKNOWN"
18-
let e = dlerror()
19-
if e != nil {
20-
errStr = String(cString: e!)
21-
}
22-
throw TunnelHandleError.dylib(errStr)
23-
}
24-
2519
let startSym = dlsym(dylibHandle, startSymbol)
2620
guard startSym != nil else {
2721
var errStr = "UNKNOWN"
2822
let e = dlerror()
2923
if e != nil {
3024
errStr = String(cString: e!)
3125
}
32-
throw TunnelHandleError.symbol(startSymbol, errStr)
26+
throw .symbol(startSymbol, errStr)
3327
}
34-
openTunnelFn = unsafeBitCast(startSym, to: OpenTunnel.self)
35-
tunnelPipe = Pipe()
36-
let res = openTunnelFn(tunnelPipe.fileHandleForReading.fileDescriptor,
37-
tunnelPipe.fileHandleForWriting.fileDescriptor)
28+
let openTunnelFn = unsafeBitCast(startSym, to: OpenTunnel.self)
29+
tunnelReadPipe = Pipe()
30+
tunnelWritePipe = Pipe()
31+
let res = openTunnelFn(tunnelReadPipe.fileHandleForReading.fileDescriptor,
32+
tunnelWritePipe.fileHandleForWriting.fileDescriptor)
3833
guard res == 0 else {
39-
throw TunnelHandleError.openTunnel(OpenTunnelError(rawValue: res) ?? .unknown)
34+
throw .openTunnel(OpenTunnelError(rawValue: res) ?? .unknown)
4035
}
4136
}
4237

@@ -46,13 +41,11 @@ actor TunnelHandle {
4641
}
4742

4843
enum TunnelHandleError: Error {
49-
case dylib(String)
5044
case symbol(String, String)
5145
case openTunnel(OpenTunnelError)
5246

5347
var description: String {
5448
switch self {
55-
case let .dylib(d): return d
5649
case let .symbol(symbol, message): return "\(symbol): \(message)"
5750
case let .openTunnel(error): return "OpenTunnel: \(error.message)"
5851
}

0 commit comments

Comments
 (0)