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
|
conf.PrivateKey = c.PrivateKey
|
||||||
}
|
}
|
||||||
id := conf.ID
|
id := conf.ID
|
||||||
|
if node := self.getNode(id); node != nil {
|
||||||
|
return nil, fmt.Errorf("node already exists: %q", id)
|
||||||
|
}
|
||||||
if conf.Name == "" {
|
if conf.Name == "" {
|
||||||
conf.Name = fmt.Sprintf("node%02d", len(self.Nodes)+1)
|
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 {
|
if len(conf.Services) == 0 {
|
||||||
conf.Services = []string{self.DefaultService}
|
conf.Services = []string{self.DefaultService}
|
||||||
}
|
}
|
||||||
|
|
@ -533,6 +539,10 @@ func (self *Network) GetNode(id discover.NodeID) *Node {
|
||||||
func (self *Network) GetNodeByName(name string) *Node {
|
func (self *Network) GetNodeByName(name string) *Node {
|
||||||
self.lock.Lock()
|
self.lock.Lock()
|
||||||
defer self.lock.Unlock()
|
defer self.lock.Unlock()
|
||||||
|
return self.getNodeByName(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *Network) getNodeByName(name string) *Node {
|
||||||
for _, node := range self.Nodes {
|
for _, node := range self.Nodes {
|
||||||
if node.Config.Name == name {
|
if node.Config.Name == name {
|
||||||
return node
|
return node
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue