Merge pull request #3775 from jb55/jb55-ios-2398-relays-refuse-to-reconnect-after-initial-connect-fails
relay: fix relays refusing to reconnect after initial connect fails
This commit is contained in:
@@ -114,7 +114,7 @@ final class RelayConnection: ObservableObject {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if err == nil {
|
||||
self.last_pong = .now
|
||||
Log.info("Got pong from '%s'", for: .networking, self.relay_url.absoluteString)
|
||||
@@ -214,7 +214,7 @@ final class RelayConnection: ObservableObject {
|
||||
return
|
||||
}
|
||||
if nserr.domain == NSURLErrorDomain && nserr.code == -999 {
|
||||
// these aren't real error, it just means task was cancelled
|
||||
// these aren't real errors, it just means task was cancelled
|
||||
return
|
||||
}
|
||||
DispatchQueue.main.async {
|
||||
@@ -237,9 +237,9 @@ final class RelayConnection: ObservableObject {
|
||||
}
|
||||
|
||||
func reconnect() {
|
||||
guard !isConnecting && !isDisabled else {
|
||||
self.log?.add("Cancelling reconnect, already connecting")
|
||||
return // we're already trying to connect or we're disabled
|
||||
guard !isDisabled else {
|
||||
self.log?.add("Cancelling reconnect, relay is disabled")
|
||||
return
|
||||
}
|
||||
|
||||
guard !self.isConnected else {
|
||||
@@ -247,6 +247,17 @@ final class RelayConnection: ObservableObject {
|
||||
return
|
||||
}
|
||||
|
||||
// If we're already connecting, only force a reconnect if the
|
||||
// attempt has gone stale (>5s with no response from the socket)
|
||||
if isConnecting {
|
||||
let elapsed = Date.now.timeIntervalSince1970 - last_connection_attempt
|
||||
guard elapsed > 5 else {
|
||||
self.log?.add("Cancelling reconnect, already connecting")
|
||||
return
|
||||
}
|
||||
self.log?.add("Stale connection detected, forcing reconnect")
|
||||
}
|
||||
|
||||
disconnect()
|
||||
connect()
|
||||
log?.add("Reconnecting...")
|
||||
|
||||
Reference in New Issue
Block a user