pool: skip ephemeral relays by default
Also filter relays by read/write once we introduce that
This commit is contained in:
@@ -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) }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user