p2p: fix Self() panic if listening is disabled
This commit is contained in:
parent
e1a0ee8fc5
commit
68898a4d6b
@ -241,10 +241,18 @@ func (srv *Server) AddPeer(node *discover.Node) {
|
|||||||
func (srv *Server) Self() *discover.Node {
|
func (srv *Server) Self() *discover.Node {
|
||||||
srv.lock.Lock()
|
srv.lock.Lock()
|
||||||
defer srv.lock.Unlock()
|
defer srv.lock.Unlock()
|
||||||
|
|
||||||
|
// If the server's not running, return an empty node
|
||||||
if !srv.running {
|
if !srv.running {
|
||||||
return &discover.Node{IP: net.ParseIP("0.0.0.0")}
|
return &discover.Node{IP: net.ParseIP("0.0.0.0")}
|
||||||
}
|
}
|
||||||
|
// If the node is running but discovery is off, manually assemble the node infos
|
||||||
if srv.ntab == nil {
|
if srv.ntab == nil {
|
||||||
|
// Inbound connections disabled, use zero address
|
||||||
|
if srv.listener == nil {
|
||||||
|
return &discover.Node{IP: net.ParseIP("0.0.0.0"), ID: discover.PubkeyID(&srv.PrivateKey.PublicKey)}
|
||||||
|
}
|
||||||
|
// Otherwise inject the listener address too
|
||||||
addr := srv.listener.Addr().(*net.TCPAddr)
|
addr := srv.listener.Addr().(*net.TCPAddr)
|
||||||
return &discover.Node{
|
return &discover.Node{
|
||||||
ID: discover.PubkeyID(&srv.PrivateKey.PublicKey),
|
ID: discover.PubkeyID(&srv.PrivateKey.PublicKey),
|
||||||
@ -252,6 +260,7 @@ func (srv *Server) Self() *discover.Node {
|
|||||||
TCP: uint16(addr.Port),
|
TCP: uint16(addr.Port),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Otherwise return the live node infos
|
||||||
return srv.ntab.Self()
|
return srv.ntab.Self()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user