p2p/discover: prevent bonding self

This commit is contained in:
Felix Lange 2016-05-02 17:57:07 +02:00
parent 32bb280179
commit 8110671960

View File

@ -25,6 +25,7 @@ package discover
import ( import (
"crypto/rand" "crypto/rand"
"encoding/binary" "encoding/binary"
"errors"
"fmt" "fmt"
"net" "net"
"sort" "sort"
@ -457,6 +458,9 @@ func (tab *Table) bondall(nodes []*Node) (result []*Node) {
// If pinged is true, the remote node has just pinged us and one half // If pinged is true, the remote node has just pinged us and one half
// of the process can be skipped. // of the process can be skipped.
func (tab *Table) bond(pinged bool, id NodeID, addr *net.UDPAddr, tcpPort uint16) (*Node, error) { func (tab *Table) bond(pinged bool, id NodeID, addr *net.UDPAddr, tcpPort uint16) (*Node, error) {
if id == tab.self.ID {
return nil, errors.New("is self")
}
// Retrieve a previously known node and any recent findnode failures // Retrieve a previously known node and any recent findnode failures
node, fails := tab.db.node(id), 0 node, fails := tab.db.node(id), 0
if node != nil { if node != nil {