mac: surface gateway auth failures
This commit is contained in:
@@ -140,6 +140,14 @@ final class ControlChannel: ObservableObject {
|
|||||||
return desc
|
return desc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the gateway explicitly rejects the hello (e.g., auth/token mismatch), surface it.
|
||||||
|
if let urlErr = error as? URLError,
|
||||||
|
urlErr.code == .dataNotAllowed // used for WS close 1008 auth failures
|
||||||
|
{
|
||||||
|
let reason = urlErr.failureURLString ?? urlErr.localizedDescription
|
||||||
|
return "Gateway rejected token; set CLAWDIS_GATEWAY_TOKEN in the mac app environment or clear it on the gateway. Reason: \(reason)"
|
||||||
|
}
|
||||||
|
|
||||||
// Common misfire: we connected to localhost:18789 but the port is occupied
|
// Common misfire: we connected to localhost:18789 but the port is occupied
|
||||||
// by some other process (e.g. a local dev gateway or a stuck SSH forward).
|
// by some other process (e.g. a local dev gateway or a stuck SSH forward).
|
||||||
// The gateway handshake returns something we can't parse, which currently
|
// The gateway handshake returns something we can't parse, which currently
|
||||||
|
|||||||
@@ -141,10 +141,13 @@ private actor GatewayChannelActor {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if let err = try? decoder.decode(HelloError.self, from: data) {
|
if let err = try? decoder.decode(HelloError.self, from: data) {
|
||||||
|
let reason = err.reason ?? "unknown"
|
||||||
|
// Log and throw a detailed error so UI can surface token/hello issues.
|
||||||
|
self.logger.error("gateway hello-error: \(reason, privacy: .public)")
|
||||||
throw NSError(
|
throw NSError(
|
||||||
domain: "Gateway",
|
domain: "Gateway",
|
||||||
code: 1,
|
code: 1008,
|
||||||
userInfo: [NSLocalizedDescriptionKey: "hello-error: \(err.reason)"])
|
userInfo: [NSLocalizedDescriptionKey: "hello-error: \(reason)"])
|
||||||
}
|
}
|
||||||
throw NSError(
|
throw NSError(
|
||||||
domain: "Gateway",
|
domain: "Gateway",
|
||||||
|
|||||||
Reference in New Issue
Block a user