mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +00:00
p2p/simulations: Ensure nodes don't already exist
Signed-off-by: Lewis Marshall <lewis@lmars.net>
This commit is contained in:
parent
b56a7fb5ef
commit
8ac9af986c
1 changed files with 10 additions and 0 deletions
|
|
@ -207,9 +207,15 @@ func (self *Network) NewNodeWithConfig(conf *adapters.NodeConfig) (*Node, error)
|
|||
conf.PrivateKey = c.PrivateKey
|
||||
}
|
||||
id := conf.ID
|
||||
if node := self.getNode(id); node != nil {
|
||||
return nil, fmt.Errorf("node already exists: %q", id)
|
||||
}
|
||||
if conf.Name == "" {
|
||||
conf.Name = fmt.Sprintf("node%02d", len(self.Nodes)+1)
|
||||
}
|
||||
if node := self.getNodeByName(conf.Name); node != nil {
|
||||
return nil, fmt.Errorf("node already exists: %q", conf.Name)
|
||||
}
|
||||
if len(conf.Services) == 0 {
|
||||
conf.Services = []string{self.DefaultService}
|
||||
}
|
||||
|
|
@ -533,6 +539,10 @@ func (self *Network) GetNode(id discover.NodeID) *Node {
|
|||
func (self *Network) GetNodeByName(name string) *Node {
|
||||
self.lock.Lock()
|
||||
defer self.lock.Unlock()
|
||||
return self.getNodeByName(name)
|
||||
}
|
||||
|
||||
func (self *Network) getNodeByName(name string) *Node {
|
||||
for _, node := range self.Nodes {
|
||||
if node.Config.Name == name {
|
||||
return node
|
||||
|
|
|
|||
Loading…
Reference in a new issue