diff --git a/swarm/network/hive.go b/swarm/network/hive.go index 3ce4748d6d87..8783da2c18da 100644 --- a/swarm/network/hive.go +++ b/swarm/network/hive.go @@ -22,6 +22,7 @@ import ( "time" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/adapters" "github.com/ethereum/go-ethereum/p2p/discover" ) @@ -92,7 +93,7 @@ func NewHive(params *HiveParams, overlay Overlay) *Hive { // connectPeer is a function to connect to a peer based on its NodeID or enode URL // these are called on the p2p.Server which runs on the node // af() returns an arbitrary ticker channel -func (self *Hive) Start(connectPeer func(string) error, af func() <-chan time.Time) error { +func (self *Hive) Start(server p2p.Server, af func() <-chan time.Time) error { self.toggle = make(chan bool) self.more = make(chan bool, 1) @@ -113,9 +114,11 @@ func (self *Hive) Start(connectPeer func(string) error, af func() <-chan time.Ti if addr != nil { log.Info(fmt.Sprintf("========> connect to bee %v", addr)) - err := connectPeer(NodeId(addr).NodeID.String()) - if err != nil { - log.Error(fmt.Sprintf("===X====> connect to bee %v failed: %v", addr, err)) + node, err := discover.ParseNode(NodeId(addr).NodeID.String()) + if err == nil { + server.AddPeer(node) + } else { + log.Error(fmt.Sprintf("===X====> connect to bee %v failed: invalid node URL: %v", addr, err)) } } else { log.Trace("cannot suggest peers") diff --git a/swarm/network/simulations/discovery/discovery_test.go b/swarm/network/simulations/discovery/discovery_test.go index 37087958df50..5957d07e554c 100644 --- a/swarm/network/simulations/discovery/discovery_test.go +++ b/swarm/network/simulations/discovery/discovery_test.go @@ -13,7 +13,6 @@ import ( p2pnode "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/adapters" - "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/simulations" "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/swarm/network" @@ -246,15 +245,7 @@ func (n *node) APIs() []rpc.API { } func (n *node) Start(server p2p.Server) error { - connectPeer := func(url string) error { - node, err := discover.ParseNode(url) - if err != nil { - return fmt.Errorf("invalid node URL: %v", err) - } - server.AddPeer(node) - return nil - } - return n.Hive.Start(connectPeer, n.hiveKeepAlive) + return n.Hive.Start(server, n.hiveKeepAlive) } func (n *node) Stop() error { diff --git a/swarm/network/simulations/overlay.go b/swarm/network/simulations/overlay.go index fc4fae45af1f..9cdea711026d 100644 --- a/swarm/network/simulations/overlay.go +++ b/swarm/network/simulations/overlay.go @@ -50,15 +50,7 @@ func af() <-chan time.Time { // Start() starts up the hive // makes SimNode implement node.Service func (self *SimNode) Start(server p2p.Server) error { - connectPeer := func(url string) error { - node, err := discover.ParseNode(url) - if err != nil { - return fmt.Errorf("invalid node URL: %v", err) - } - server.AddPeer(node) - return nil - } - return self.hive.Start(connectPeer, af) + return self.hive.Start(server, af) } // Stop() shuts down the hive