mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-28 12:11:44 +00:00
Call peer.stop() if we're not going to start() it
This commit is contained in:
@ -6,6 +6,7 @@ import "sync"
|
|||||||
/*
|
/*
|
||||||
RepeatTimer repeatedly sends a struct{}{} to .Ch after each "dur" period.
|
RepeatTimer repeatedly sends a struct{}{} to .Ch after each "dur" period.
|
||||||
It's good for keeping connections alive.
|
It's good for keeping connections alive.
|
||||||
|
A RepeatTimer must be Stop()'d or it will keep a goroutine alive.
|
||||||
*/
|
*/
|
||||||
type RepeatTimer struct {
|
type RepeatTimer struct {
|
||||||
Ch chan time.Time
|
Ch chan time.Time
|
||||||
|
@ -156,13 +156,16 @@ func (sw *Switch) Stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: This performs a blocking handshake before the peer is added.
|
// NOTE: This performs a blocking handshake before the peer is added.
|
||||||
|
// CONTRACT: Iff error is returned, peer is nil, and conn is immediately closed.
|
||||||
func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, error) {
|
func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, error) {
|
||||||
// First, perform handshake
|
// First, perform handshake
|
||||||
peerNodeInfo, err := peerHandshake(conn, sw.nodeInfo)
|
peerNodeInfo, err := peerHandshake(conn, sw.nodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
conn.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := sw.nodeInfo.CompatibleWith(peerNodeInfo); err != nil {
|
if err := sw.nodeInfo.CompatibleWith(peerNodeInfo); err != nil {
|
||||||
|
conn.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +186,7 @@ func (sw *Switch) AddPeerWithConnection(conn net.Conn, outbound bool) (*Peer, er
|
|||||||
log.Info("Added peer", "peer", peer)
|
log.Info("Added peer", "peer", peer)
|
||||||
} else {
|
} else {
|
||||||
log.Info("Ignoring duplicate peer", "peer", peer)
|
log.Info("Ignoring duplicate peer", "peer", peer)
|
||||||
|
peer.stop() // will also close conn
|
||||||
return nil, ErrSwitchDuplicatePeer
|
return nil, ErrSwitchDuplicatePeer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user