Merge pull request #1008 from wpaulino/peer-connection-logic
server: fix inbound/outbound peer connection logic
This commit is contained in:
commit
849ee5e0dc
@ -1292,7 +1292,7 @@ func (r *rpcServer) ListPeers(ctx context.Context,
|
|||||||
peer := &lnrpc.Peer{
|
peer := &lnrpc.Peer{
|
||||||
PubKey: hex.EncodeToString(nodePub),
|
PubKey: hex.EncodeToString(nodePub),
|
||||||
Address: serverPeer.conn.RemoteAddr().String(),
|
Address: serverPeer.conn.RemoteAddr().String(),
|
||||||
Inbound: !serverPeer.inbound, // Flip for display
|
Inbound: serverPeer.inbound,
|
||||||
BytesRecv: atomic.LoadUint64(&serverPeer.bytesReceived),
|
BytesRecv: atomic.LoadUint64(&serverPeer.bytesReceived),
|
||||||
BytesSent: atomic.LoadUint64(&serverPeer.bytesSent),
|
BytesSent: atomic.LoadUint64(&serverPeer.bytesSent),
|
||||||
SatSent: satSent,
|
SatSent: satSent,
|
||||||
|
13
server.go
13
server.go
@ -1513,7 +1513,8 @@ func (s *server) shouldRequestGraphSync() bool {
|
|||||||
|
|
||||||
// peerConnected is a function that handles initialization a newly connected
|
// peerConnected is a function that handles initialization a newly connected
|
||||||
// peer by adding it to the server's global list of all active peers, and
|
// peer by adding it to the server's global list of all active peers, and
|
||||||
// starting all the goroutines the peer needs to function properly.
|
// starting all the goroutines the peer needs to function properly. The inbound
|
||||||
|
// boolean should be true if the peer initiated the connection to us.
|
||||||
func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
|
func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
|
||||||
inbound bool) {
|
inbound bool) {
|
||||||
|
|
||||||
@ -1525,7 +1526,7 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
|
|||||||
// peer's address for reconnection purposes.
|
// peer's address for reconnection purposes.
|
||||||
//
|
//
|
||||||
// TODO: leave the address field empty if there aren't any?
|
// TODO: leave the address field empty if there aren't any?
|
||||||
if !inbound {
|
if inbound {
|
||||||
advertisedAddr, err := s.fetchNodeAdvertisedAddr(pubKey)
|
advertisedAddr, err := s.fetchNodeAdvertisedAddr(pubKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
srvrLog.Errorf("Unable to retrieve advertised address "+
|
srvrLog.Errorf("Unable to retrieve advertised address "+
|
||||||
@ -1648,7 +1649,7 @@ func (s *server) InboundPeerConnected(conn net.Conn) {
|
|||||||
case ErrPeerNotConnected:
|
case ErrPeerNotConnected:
|
||||||
// We were unable to locate an existing connection with the
|
// We were unable to locate an existing connection with the
|
||||||
// target peer, proceed to connect.
|
// target peer, proceed to connect.
|
||||||
s.peerConnected(conn, nil, false)
|
s.peerConnected(conn, nil, true)
|
||||||
|
|
||||||
case nil:
|
case nil:
|
||||||
// We already have a connection with the incoming peer. If the
|
// We already have a connection with the incoming peer. If the
|
||||||
@ -1675,7 +1676,7 @@ func (s *server) InboundPeerConnected(conn net.Conn) {
|
|||||||
s.removePeer(connectedPeer)
|
s.removePeer(connectedPeer)
|
||||||
s.ignorePeerTermination[connectedPeer] = struct{}{}
|
s.ignorePeerTermination[connectedPeer] = struct{}{}
|
||||||
s.scheduledPeerConnection[pubStr] = func() {
|
s.scheduledPeerConnection[pubStr] = func() {
|
||||||
s.peerConnected(conn, nil, false)
|
s.peerConnected(conn, nil, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1745,7 +1746,7 @@ func (s *server) OutboundPeerConnected(connReq *connmgr.ConnReq, conn net.Conn)
|
|||||||
case ErrPeerNotConnected:
|
case ErrPeerNotConnected:
|
||||||
// We were unable to locate an existing connection with the
|
// We were unable to locate an existing connection with the
|
||||||
// target peer, proceed to connect.
|
// target peer, proceed to connect.
|
||||||
s.peerConnected(conn, connReq, true)
|
s.peerConnected(conn, connReq, false)
|
||||||
|
|
||||||
case nil:
|
case nil:
|
||||||
// We already have a connection open with the target peer.
|
// We already have a connection open with the target peer.
|
||||||
@ -1776,7 +1777,7 @@ func (s *server) OutboundPeerConnected(connReq *connmgr.ConnReq, conn net.Conn)
|
|||||||
s.removePeer(connectedPeer)
|
s.removePeer(connectedPeer)
|
||||||
s.ignorePeerTermination[connectedPeer] = struct{}{}
|
s.ignorePeerTermination[connectedPeer] = struct{}{}
|
||||||
s.scheduledPeerConnection[pubStr] = func() {
|
s.scheduledPeerConnection[pubStr] = func() {
|
||||||
s.peerConnected(conn, connReq, true)
|
s.peerConnected(conn, connReq, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user