getRelay() -> getRandomRelay()

This commit is contained in:
fiatjaf
2023-11-07 17:03:44 -03:00
parent 06700a8ac5
commit 0b6a4838c5
2 changed files with 15 additions and 20 deletions

View File

@@ -3,7 +3,6 @@ package main
import ( import (
"context" "context"
"fmt" "fmt"
"math/rand"
"net/url" "net/url"
"time" "time"
@@ -57,14 +56,6 @@ type CachedEvent struct {
Relays []string `json:"r"` Relays []string `json:"r"`
} }
func getRelay() string {
if serial == 0 {
serial = rand.Intn(len(everything))
}
serial = (serial + 1) % len(everything)
return everything[serial]
}
func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Event, []string, error) { func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Event, []string, error) {
wdb := eventstore.RelayWrapper{Store: db} wdb := eventstore.RelayWrapper{Store: db}
@@ -100,8 +91,7 @@ func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Eve
case nostr.EventPointer: case nostr.EventPointer:
author = v.Author author = v.Author
filter.IDs = []string{v.ID} filter.IDs = []string{v.ID}
relays = append(relays, getRelay()) relays = append(relays, getRandomRelay(), getRandomRelay())
relays = append(relays, getRelay())
relays = append(relays, v.Relays...) relays = append(relays, v.Relays...)
withRelays = true withRelays = true
case nostr.EntityPointer: case nostr.EntityPointer:
@@ -113,16 +103,13 @@ func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Eve
if v.Kind != 0 { if v.Kind != 0 {
filter.Kinds = append(filter.Kinds, v.Kind) filter.Kinds = append(filter.Kinds, v.Kind)
} }
relays = append(relays, getRelay()) relays = append(relays, getRandomRelay(), getRandomRelay())
relays = append(relays, getRelay())
relays = append(relays, v.Relays...) relays = append(relays, v.Relays...)
withRelays = true withRelays = true
case string: case string:
if prefix == "note" { if prefix == "note" {
filter.IDs = []string{v} filter.IDs = []string{v}
relays = append(relays, getRelay()) relays = append(relays, getRandomRelay(), getRandomRelay(), getRandomRelay())
relays = append(relays, getRelay())
relays = append(relays, getRelay())
} else if prefix == "npub" { } else if prefix == "npub" {
author = v author = v
filter.Authors = []string{v} filter.Authors = []string{v}
@@ -135,7 +122,7 @@ func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Eve
if res, _ := wdb.QuerySync(ctx, filter); len(res) != 0 { if res, _ := wdb.QuerySync(ctx, filter); len(res) != 0 {
evt := res[0] evt := res[0]
scheduleEventExpiration(evt.ID, time.Hour*24*7) scheduleEventExpiration(evt.ID, time.Hour*24*7)
return evt, getRelaysForEvent(evt.ID), nil return evt, getRandomRelaysForEvent(evt.ID), nil
} }
// otherwise fetch from external relays // otherwise fetch from external relays
@@ -148,7 +135,7 @@ func getEvent(ctx context.Context, code string, relayHints []string) (*nostr.Eve
relays = append(relays, authorRelays...) relays = append(relays, authorRelays...)
} }
for len(relays) < 5 { for len(relays) < 5 {
relays = append(relays, getRelay()) relays = append(relays, getRandomRelay())
} }
relays = unique(relays) relays = unique(relays)
@@ -226,7 +213,7 @@ func authorLastNotes(ctx context.Context, pubkey string, relays []string, isSite
}() }()
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel() defer cancel()
relays = unique(append(relays, getRelay(), getRelay())) relays = unique(append(relays, getRandomRelay(), getRandomRelay()))
ch := pool.SubManyEose(ctx, relays, nostr.Filters{filter}) ch := pool.SubManyEose(ctx, relays, nostr.Filters{filter})
for { for {
select { select {

View File

@@ -185,7 +185,7 @@ func getParentNevent(event *nostr.Event, fallbackRelay string) string {
} else if fallbackRelay != "" { } else if fallbackRelay != "" {
relay = fallbackRelay relay = fallbackRelay
} else { } else {
relay = everything[rand.Intn(len(everything))] relay = getRandomRelay()
} }
parentNevent, _ = nip19.EncodeEvent((*replyTag)[1], []string{relay}, "") parentNevent, _ = nip19.EncodeEvent((*replyTag)[1], []string{relay}, "")
} }
@@ -533,3 +533,11 @@ func shouldUseRelayForNip19(relayUrl string) bool {
} }
return true return true
} }
func getRandomRelay() string {
if serial == 0 {
serial = rand.Intn(len(everything))
}
serial = (serial + 1) % len(everything)
return everything[serial]
}