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:
parent
32a1a24e39
commit
1367be0d10
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user