switch.go
func (sw *Switch) StopPeerForError(peer *Peer, reason interface{}) {
	addr := NewNetAddress(peer.Addr())
	log.Notice("Stopping peer for error", "peer", peer, "error", reason)
	sw.stopAndRemovePeer(peer, reason)

	if peer.IsPersistent() {
		go func() {
			log.Notice("Reconnecting to peer", "peer", peer)
			for i := 1; i < reconnectAttempts; i++ {
				if !sw.IsRunning() {
					return
				}

				peer, err := sw.DialPeerWithAddress(addr, true)
				if err != nil {
					if i == reconnectAttempts {
						log.Notice("Error reconnecting to peer. Giving up", "tries", i, "error", err)
						return
					}
					log.Notice("Error reconnecting to peer. Trying again", "tries", i, "error", err)
					time.Sleep(reconnectInterval)
					continue
				}

				log.Notice("Reconnected to peer", "peer", peer)
				return
			}
		}()
	}
}
func (sw *Switch) StopPeerForError(peer *Peer, reason interface{}) {
	addr := NewNetAddress(peer.Addr())
	log.Notice("Stopping peer for error", "peer", peer, "error", reason)
	sw.stopAndRemovePeer(peer, reason)

	if peer.IsPersistent() {
		go func() {
			log.Notice("Reconnecting to peer", "peer", peer)
			for i := 1; i < reconnectAttempts; i++ {
				if !sw.IsRunning() {
					return
				}

				peer, err := sw.DialPeerWithAddress(addr, true)
				if err != nil {
					if i == reconnectAttempts {
						log.Notice("Error reconnecting to peer. Giving up", "tries", i, "error", err)
						return
					}
					log.Notice("Error reconnecting to peer. Trying again", "tries", i, "error", err)
					time.Sleep(reconnectInterval)
					continue
				}

				log.Notice("Reconnected to peer", "peer", peer)
				return
			}
		}()
	}
}
func ( sw * Switch ) StopPeerForError ( peer * Peer , reason interface { } ) { addr := NewNetAddress ( peer . Addr ( ) ) log . Notice ( " " , " " , peer , " " , reason ) sw . stopAndRemovePeer ( peer , reason ) if peer . IsPersistent ( ) { go func ( ) { log . Notice ( " " , " " , peer ) for i := 1 ; i < reconnectAttempts ; i ++ { if ! sw . IsRunning ( ) { return } peer , err := sw . DialPeerWithAddress ( addr , true ) if err != nil { if i == reconnectAttempts { log . Notice ( " " , " " , i , " " , err ) return } log . Notice ( " " , " " , i , " " , err ) time . Sleep ( reconnectInterval ) continue } log . Notice ( " " , " " , peer ) return } } ( ) } }
// Disconnect from a peer due to external error, retry if it is a persistent peer.
// TODO: make record depending on reason.
Disconnect from a peer due to external error retry if it is a persistent peer . TODO : make record depending on reason .