server: ensure we don't auto-connect to peers we're unable to create/start

This commit prevent unnecessary connection flapping by ensure we don’t
attempt to auto-connect to a peer that we’re unable to create or start
the goroutines of. With this commit, we won’t attempt to auto-connect
to a peer that has incompatible feature sets to that of ours.
This commit is contained in:
Olaoluwa Osuntokun 2017-02-21 01:35:21 -08:00
parent ae15a193e2
commit 0bbb072ceb
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2

@ -138,7 +138,7 @@ func newServer(listenAddrs []string, notifier chainntnfs.ChainNotifier,
sendRequests: make(chan *sendReq),
globalFeatures: globalFeatures,
localFeatures: localFeatures,
localFeatures: localFeatures,
queries: make(chan interface{}),
quit: make(chan struct{}),
@ -414,6 +414,8 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq, inbound
peer, err := newPeer(conn, s, peerAddr, false)
if err != nil {
srvrLog.Errorf("unable to create peer %v", err)
s.connMgr.Remove(peer.connReq.ID())
peer.Disconnect()
conn.Close()
return
}
@ -425,6 +427,9 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq, inbound
// * also mark last-seen, do it one single transaction?
if err := peer.Start(); err != nil {
srvrLog.Errorf("unable to start peer: %v", err)
s.connMgr.Remove(peer.connReq.ID())
peer.Disconnect()
conn.Close()
return
}