pool: skip ephemeral relays by default

Also filter relays by read/write once we introduce that
This commit is contained in:
William Casarin
2023-05-09 18:42:59 -07:00
parent 7267662330
commit 32a1a24e39

View File

@@ -180,10 +180,22 @@ class RelayPool {
request_queue.append(QueuedRequest(req: r, relay: relay))
}
func send(_ req: NostrRequest, to: [String]? = nil) {
func send(_ req: NostrRequest, to: [String]? = nil, skip_ephemeral: Bool = true) {
let relays = to.map{ get_relays($0) } ?? self.relays
for relay in relays {
if req.is_read && !relay.descriptor.info.read {
continue
}
if req.is_write && !relay.descriptor.info.write {
continue
}
if relay.descriptor.info.ephemeral && skip_ephemeral {
continue
}
guard relay.connection.isConnected else {
queue_req(r: req, relay: relay.id)
continue
@@ -194,6 +206,7 @@ class RelayPool {
}
func get_relays(_ ids: [String]) -> [Relay] {
// don't include ephemeral relays in the default list to query
relays.filter { ids.contains($0.id) }
}