Cancel timeout task on stream cancellation

Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
Daniel D’Aquino
2025-09-24 17:55:35 -07:00
parent fe491bf694
commit 9153a912b0

View File

@@ -269,13 +269,22 @@ class RelayPool {
}
}
}, to: desiredRelays)
Task {
let timeoutTask = Task {
try? await Task.sleep(for: eoseTimeout)
if !eoseSent { continuation.yield(with: .success(.eose)) }
}
continuation.onTermination = { @Sendable _ in
continuation.onTermination = { @Sendable termination in
switch termination {
case .finished:
Log.debug("RelayPool subscription %s finished. Closing.", for: .networking, sub_id)
case .cancelled:
Log.debug("RelayPool subscription %s cancelled. Closing.", for: .networking, sub_id)
@unknown default:
break
}
self.unsubscribe(sub_id: sub_id, to: desiredRelays)
self.remove_handler(sub_id: sub_id)
timeoutTask.cancel()
}
}
}