WithCheckDuplicate(), let's see if this works.

This commit is contained in:
fiatjaf
2025-01-15 14:26:00 -03:00
parent ba38c28b99
commit e1971d12c0
4 changed files with 21 additions and 36 deletions

14
pool.go
View File

@@ -287,15 +287,14 @@ func (pool *SimplePool) SubMany(
hasAuthed = false
subscribe:
sub = relay.PrepareSubscription(ctx, filters, opts...)
sub.CheckDuplicate = func(id, relay string) bool {
sub, err = relay.Subscribe(ctx, filters, append(opts, WithCheckDuplicate(func(relay, id string) bool {
_, exists := seenAlready.Load(id)
if exists && pool.duplicateMiddleware != nil {
pool.duplicateMiddleware(relay, id)
}
return exists
}
if err := sub.Fire(); err != nil {
}))...)
if err != nil {
goto reconnect
}
@@ -418,15 +417,14 @@ func (pool *SimplePool) SubManyEose(
hasAuthed := false
subscribe:
sub := relay.PrepareSubscription(ctx, filters, opts...)
sub.CheckDuplicate = func(id, relay string) bool {
sub, err := relay.Subscribe(ctx, filters, append(opts, WithCheckDuplicate(func(relay, id string) bool {
_, exists := seenAlready.Load(id)
if exists && pool.duplicateMiddleware != nil {
pool.duplicateMiddleware(relay, id)
}
return exists
}
if err := sub.Fire(); err != nil {
}))...)
if err != nil {
debugLogf("error subscribing to %s with %v: %s", relay, filters, err)
return
}