1
0
mirror of git://jb55.com/damus synced 2024-09-19 19:46:51 +00:00

relay: handle ephemeral relays in PostBox

We need to make sure ephemeral relay events (not ephemeral events) are
handled properly in the postbox. Make sure we pass the proper
skip_ephemeral flag to the relay pool if we add something like a NWC
event to the PostBox. Events are not sent to ephemeral relays by
default.
This commit is contained in:
William Casarin 2023-05-09 18:41:06 -07:00
parent 32a1a24e39
commit 1367be0d10

View File

@ -24,10 +24,12 @@ class Relayer {
class PostedEvent {
let event: NostrEvent
let skip_ephemeral: Bool
var remaining: [Relayer]
init(event: NostrEvent, remaining: [String]) {
init(event: NostrEvent, remaining: [String], skip_ephemeral: Bool) {
self.event = event
self.skip_ephemeral = skip_ephemeral
self.remaining = remaining.map {
Relayer(relay: $0, attempts: 0, retry_after: 2.0)
}
@ -93,19 +95,18 @@ class PostBox {
relayer.attempts += 1
relayer.last_attempt = Int64(Date().timeIntervalSince1970)
relayer.retry_after *= 1.5
pool.send(.event(event.event), to: [relayer.relay])
pool.send(.event(event.event), to: [relayer.relay], skip_ephemeral: event.skip_ephemeral)
}
}
func send(_ event: NostrEvent) {
func send(_ event: NostrEvent, to: [String]? = nil, skip_ephemeral: Bool = true) {
// Don't add event if we already have it
if events[event.id] != nil {
return
}
let remaining = pool.descriptors.map { $0.url.id }
let posted_ev = PostedEvent(event: event, remaining: remaining)
let remaining = to ?? pool.descriptors.map { $0.url.id }
let posted_ev = PostedEvent(event: event, remaining: remaining, skip_ephemeral: skip_ephemeral)
events[event.id] = posted_ev
flush_event(posted_ev)