WireGuardKit: Log XLAT resolution errors
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
This commit is contained in:
parent
9e909a3294
commit
d440a91b0e
|
@ -18,17 +18,28 @@ class PacketTunnelSettingsGenerator {
|
||||||
self.resolvedEndpoints = resolvedEndpoints
|
self.resolvedEndpoints = resolvedEndpoints
|
||||||
}
|
}
|
||||||
|
|
||||||
func endpointUapiConfiguration() -> String {
|
func endpointUapiConfiguration() -> (String, [DNSResolutionError]) {
|
||||||
|
var resolutionErrors = [DNSResolutionError]()
|
||||||
var wgSettings = ""
|
var wgSettings = ""
|
||||||
for (index, peer) in tunnelConfiguration.peers.enumerated() {
|
for (index, peer) in tunnelConfiguration.peers.enumerated() {
|
||||||
wgSettings.append("public_key=\(peer.publicKey.hexKey)\n")
|
wgSettings.append("public_key=\(peer.publicKey.hexKey)\n")
|
||||||
// TODO: log the error returned by `withReresolvedIP`
|
let result = Result { try resolvedEndpoints[index]?.withReresolvedIP() }
|
||||||
if let endpoint = try? resolvedEndpoints[index]?.withReresolvedIP() {
|
.mapError { error -> DNSResolutionError in
|
||||||
|
// swiftlint:disable:next force_cast
|
||||||
|
return error as! DNSResolutionError
|
||||||
|
}
|
||||||
|
|
||||||
|
switch result {
|
||||||
|
case .success(.some(let endpoint)):
|
||||||
if case .name(_, _) = endpoint.host { assert(false, "Endpoint is not resolved") }
|
if case .name(_, _) = endpoint.host { assert(false, "Endpoint is not resolved") }
|
||||||
wgSettings.append("endpoint=\(endpoint.stringRepresentation)\n")
|
wgSettings.append("endpoint=\(endpoint.stringRepresentation)\n")
|
||||||
|
case .success(.none):
|
||||||
|
break
|
||||||
|
case .failure(let error):
|
||||||
|
resolutionErrors.append(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return wgSettings
|
return (wgSettings, resolutionErrors)
|
||||||
}
|
}
|
||||||
|
|
||||||
func uapiConfiguration() -> String {
|
func uapiConfiguration() -> String {
|
||||||
|
|
|
@ -336,7 +336,11 @@ public class WireGuardAdapter {
|
||||||
|
|
||||||
#if os(iOS)
|
#if os(iOS)
|
||||||
if let settingsGenerator = self.settingsGenerator {
|
if let settingsGenerator = self.settingsGenerator {
|
||||||
wgSetConfig(handle, settingsGenerator.endpointUapiConfiguration())
|
let (wgSettings, resolutionErrors) = settingsGenerator.endpointUapiConfiguration()
|
||||||
|
for error in resolutionErrors {
|
||||||
|
self.logHandler(.error, "Failed to re-resolve \(error.address): \(error.errorDescription ?? "(nil)")")
|
||||||
|
}
|
||||||
|
wgSetConfig(handle, wgSettings)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue