mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 04:36:42 +00:00
Merge remote-tracking branch 'origin/kademlia' into kademlia
This commit is contained in:
commit
84dd3d8bdc
1 changed files with 7 additions and 11 deletions
|
|
@ -60,6 +60,8 @@ type Server struct {
|
||||||
Dialer *net.Dialer
|
Dialer *net.Dialer
|
||||||
|
|
||||||
// If NoDial is true, the server will not dial any peers.
|
// If NoDial is true, the server will not dial any peers.
|
||||||
|
// this maybe used in test environments where we want to prevent a node from
|
||||||
|
// connecting (and synchronising) with other nodes
|
||||||
NoDial bool
|
NoDial bool
|
||||||
|
|
||||||
// peer selector
|
// peer selector
|
||||||
|
|
@ -144,9 +146,10 @@ func (srv *Server) SuggestPeer(addr string, pubkey []byte) error {
|
||||||
// If not found among connected peers turns to the peerSelector
|
// If not found among connected peers turns to the peerSelector
|
||||||
// to decide if it is a worthwhile connection
|
// to decide if it is a worthwhile connection
|
||||||
func (srv *Server) AddPeer(addr *peerAddr) (err error) {
|
func (srv *Server) AddPeer(addr *peerAddr) (err error) {
|
||||||
|
if srv.NoDial {
|
||||||
|
return fmt.Errorln("no dial out")
|
||||||
|
}
|
||||||
// need to look up nodeID first
|
// need to look up nodeID first
|
||||||
srvlog.Infof("checking peer %v", addr)
|
|
||||||
|
|
||||||
peer := &Peer{
|
peer := &Peer{
|
||||||
dialAddr: addr,
|
dialAddr: addr,
|
||||||
lastActiveC: make(chan time.Time),
|
lastActiveC: make(chan time.Time),
|
||||||
|
|
@ -167,7 +170,7 @@ func (srv *Server) dialPeer(peer *Peer) (err error) {
|
||||||
case <-timeout:
|
case <-timeout:
|
||||||
err = fmt.Errorf("Too many connections. No slot available")
|
err = fmt.Errorf("Too many connections. No slot available")
|
||||||
case slot := <-srv.peerSlots: // there is a slot available
|
case slot := <-srv.peerSlots: // there is a slot available
|
||||||
srvlog.Debugf("Dialing %v (slot %d)\n", peer.dialAddr, slot)
|
srvlog.Infof("Dialing %v (slot %d)\n", peer.dialAddr, slot)
|
||||||
conn, dialErr := srv.Dialer.Dial(peer.dialAddr.Network(), peer.dialAddr.String())
|
conn, dialErr := srv.Dialer.Dial(peer.dialAddr.Network(), peer.dialAddr.String())
|
||||||
if dialErr != nil {
|
if dialErr != nil {
|
||||||
err = fmt.Errorf("Dial error: %v", dialErr)
|
err = fmt.Errorf("Dial error: %v", dialErr)
|
||||||
|
|
@ -175,7 +178,7 @@ func (srv *Server) dialPeer(peer *Peer) (err error) {
|
||||||
srv.peerSlots <- slot
|
srv.peerSlots <- slot
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
srvlog.Debugf("Connected to %v (slot %d)\n", peer.dialAddr, slot)
|
srvlog.Infof("Connected to %v (slot %d)\n", peer.dialAddr, slot)
|
||||||
peer.slot = slot
|
peer.slot = slot
|
||||||
srv.connectFunc(peer, conn)
|
srv.connectFunc(peer, conn)
|
||||||
go srv.addPeer(peer)
|
go srv.addPeer(peer)
|
||||||
|
|
@ -256,13 +259,6 @@ func (srv *Server) Start() (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if !srv.NoDial {
|
|
||||||
// srv.wg.Add(1)
|
|
||||||
// go srv.dialLoop()
|
|
||||||
// }
|
|
||||||
if srv.NoDial && srv.ListenAddr == "" {
|
|
||||||
srvlog.Warnln("I will be kind-of useless, neither dialing nor listening.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if srv.PeerSelector == nil {
|
if srv.PeerSelector == nil {
|
||||||
srv.PeerSelector = &BaseSelector{}
|
srv.PeerSelector = &BaseSelector{}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue