)
const (
- reconnectAttempts = 10
+ reconnectAttempts = 5
reconnectInterval = 10 * time.Second
bannedPeerKey = "BannedPeer"
}
//permute the list, dial them in random order.
perm := rand.Perm(len(netAddrs))
- for i := 0; i < len(perm)/2; i++ {
+ for i := 0; i < len(perm); i += 2 {
j := perm[i]
sw.dialSeed(netAddrs[j])
}
}
func (sw *Switch) dialSeed(addr *NetAddress) {
- peer, err := sw.DialPeerWithAddress(addr, true)
+ peer, err := sw.DialPeerWithAddress(addr, false)
if err != nil {
log.WithField("error", err).Error("Error dialing seed")
} else {
sw.dialing.Set(addr.IP.String(), addr)
defer sw.dialing.Delete(addr.IP.String())
- log.WithField("address", addr).Info("Dialing peer")
+ log.Debug("Dialing peer address:", addr)
peer, err := newOutboundPeerWithConfig(addr, sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, sw.nodePrivKey, sw.peerConfig)
if err != nil {
- log.WithFields(log.Fields{
- "address": addr,
- "error": err,
- }).Info("Failed to dial peer")
+ log.Debug("Failed to dial peer", " address:", addr, " error:", err)
return nil, err
}
peer.SetLogger(sw.Logger.With("peer", addr))
return
}
- peer, err := sw.DialPeerWithAddress(addr, true)
+ peer, err := sw.DialPeerWithAddress(addr, false)
if err != nil {
if i == reconnectAttempts {
log.WithFields(log.Fields{
reactor.RemovePeer(peer, reason)
}
sw.peers.Remove(peer)
+ log.Info("Del peer from switch.")
peer.Stop()
+ log.Info("Peer connection is closed.")
}
func (sw *Switch) listenerRoutine(l Listener) {
break
}
- // ignore connection if we already have enough
- maxPeers := sw.config.MaxNumPeers
- if maxPeers <= sw.peers.Size() {
+ // disconnect if we alrady have 2 * MaxNumPeers, we do this because we wanna address book get exchanged even if
+ // the connect is full. The pex will disconnect the peer after address exchange, the max connected peer won't
+ // be double of MaxNumPeers
+ if sw.config.MaxNumPeers*2 <= sw.peers.Size() {
// close inConn
inConn.Close()
log.WithFields(log.Fields{
"address": inConn.RemoteAddr().String(),
"numPeers": sw.peers.Size(),
- "max": maxPeers,
}).Info("Ignoring inbound connection: already have enough peers")
continue
}