|
|
@ -441,17 +441,30 @@ func createSwitch(config *cfg.Config, |
|
|
|
} |
|
|
|
|
|
|
|
func createAddrBookAndSetOnSwitch(config *cfg.Config, sw *p2p.Switch, |
|
|
|
p2pLogger log.Logger) pex.AddrBook { |
|
|
|
p2pLogger log.Logger, nodeKey *p2p.NodeKey) (pex.AddrBook, error) { |
|
|
|
|
|
|
|
addrBook := pex.NewAddrBook(config.P2P.AddrBookFile(), config.P2P.AddrBookStrict) |
|
|
|
addrBook.SetLogger(p2pLogger.With("book", config.P2P.AddrBookFile())) |
|
|
|
|
|
|
|
// Add ourselves to addrbook to prevent dialing ourselves
|
|
|
|
addrBook.AddOurAddress(sw.NetAddress()) |
|
|
|
if config.P2P.ExternalAddress != "" { |
|
|
|
addr, err := p2p.NewNetAddressString(p2p.IDAddressString(nodeKey.ID(), config.P2P.ExternalAddress)) |
|
|
|
if err != nil { |
|
|
|
return nil, errors.Wrap(err, "p2p.external_address is incorrect") |
|
|
|
} |
|
|
|
addrBook.AddOurAddress(addr) |
|
|
|
} |
|
|
|
if config.P2P.ListenAddress != "" { |
|
|
|
addr, err := p2p.NewNetAddressString(p2p.IDAddressString(nodeKey.ID(), config.P2P.ListenAddress)) |
|
|
|
if err != nil { |
|
|
|
return nil, errors.Wrap(err, "p2p.laddr is incorrect") |
|
|
|
} |
|
|
|
addrBook.AddOurAddress(addr) |
|
|
|
} |
|
|
|
|
|
|
|
sw.SetAddrBook(addrBook) |
|
|
|
|
|
|
|
return addrBook |
|
|
|
return addrBook, nil |
|
|
|
} |
|
|
|
|
|
|
|
func createPEXReactorAndAddToSwitch(addrBook pex.AddrBook, config *cfg.Config, |
|
|
@ -594,7 +607,10 @@ func NewNode(config *cfg.Config, |
|
|
|
return nil, errors.Wrap(err, "could not add peers from persistent_peers field") |
|
|
|
} |
|
|
|
|
|
|
|
addrBook := createAddrBookAndSetOnSwitch(config, sw, p2pLogger) |
|
|
|
addrBook, err := createAddrBookAndSetOnSwitch(config, sw, p2pLogger, nodeKey) |
|
|
|
if err != nil { |
|
|
|
return nil, errors.Wrap(err, "could not create addrbook") |
|
|
|
} |
|
|
|
|
|
|
|
// Optionally, start the pex reactor
|
|
|
|
//
|
|
|
|