diff options
| author | Felix Hanley <felix@userspace.com.au> | 2018-03-20 11:37:09 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2018-03-20 11:37:09 +0000 |
| commit | e2e746843dca7874d287420336b3ec4830203ff5 (patch) | |
| tree | c806afa152d33f1124ea03e943db60ead0497b9e /dht | |
| parent | ef4aec50a8f6ace8076d4bfeef0ba64cf8598048 (diff) | |
| download | dhtsearch-e2e746843dca7874d287420336b3ec4830203ff5.tar.gz dhtsearch-e2e746843dca7874d287420336b3ec4830203ff5.tar.bz2 | |
Start working on SQL to relieve load
Diffstat (limited to 'dht')
| -rw-r--r-- | dht/node.go | 10 | ||||
| -rw-r--r-- | dht/options.go | 13 |
2 files changed, 18 insertions, 5 deletions
diff --git a/dht/node.go b/dht/node.go index 829f244..b0dd9ec 100644 --- a/dht/node.go +++ b/dht/node.go @@ -40,7 +40,9 @@ type Node struct { blacklist *lru.ARCCache // OnAnnoucePeer is called for each peer that announces itself - OnAnnouncePeer func(p models.Peer) + OnAnnouncePeer func(models.Peer) + // OnBadPeer is called for each bad peer + OnBadPeer func(models.Peer) } // NewNode creates a new DHT node @@ -191,6 +193,10 @@ func (n *Node) packetWriter() { n.blacklist.Add(p.raddr.String(), true) // TODO reduce limit n.log.Warn("failed to write packet", "error", err) + if n.OnBadPeer != nil { + peer := models.Peer{Addr: p.raddr} + go n.OnBadPeer(peer) + } } } } @@ -245,7 +251,7 @@ func (n *Node) processPacket(p packet) error { } if _, black := n.blacklist.Get(p.raddr.String()); black { - return fmt.Errorf("blacklisted", "address", p.raddr.String()) + return fmt.Errorf("blacklisted: %s", p.raddr.String()) } switch y { diff --git a/dht/options.go b/dht/options.go index 094d8f7..86d7af7 100644 --- a/dht/options.go +++ b/dht/options.go @@ -15,6 +15,13 @@ func SetOnAnnouncePeer(f func(models.Peer)) Option { } } +func SetOnBadPeer(f func(models.Peer)) Option { + return func(n *Node) error { + n.OnBadPeer = f + return nil + } +} + // SetAddress sets the IP address to listen on func SetAddress(ip string) Option { return func(n *Node) error { @@ -57,10 +64,10 @@ func SetLogger(l logger.Logger) Option { } } -// SetBlacklistSize sets the size of the node blacklist -func SetBlacklistSize(s int) Option { +// SetBlacklist sets the size of the node blacklist +func SetBlacklist(bl *lru.ARCCache) Option { return func(n *Node) (err error) { - n.blacklist, err = lru.NewARC(s) + n.blacklist = bl return err } } |
