From 397536306eb19c424505b3b7d1968712084b9f2c Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Wed, 24 Nov 2021 21:16:26 +0530 Subject: [PATCH 1/6] temp --- dot/network/connmgr.go | 30 +++++++----------------------- dot/network/state.go | 1 + dot/peerset/handler.go | 29 +++++++++++++++++++++++++++++ dot/peerset/peerset.go | 6 ++++-- 4 files changed, 41 insertions(+), 25 deletions(-) diff --git a/dot/network/connmgr.go b/dot/network/connmgr.go index 9f7e257d73..a6270ac93f 100644 --- a/dot/network/connmgr.go +++ b/dot/network/connmgr.go @@ -5,8 +5,6 @@ package network import ( "context" - "crypto/rand" - "math/big" "sync" "github.com/libp2p/go-libp2p-core/connmgr" @@ -135,33 +133,19 @@ func (cm *ConnManager) Connected(n network.Network, c network.Conn) { cm.Lock() defer cm.Unlock() + // If number of peers are less than max peers, return. + // Remove, if otherwise. over := len(n.Peers()) - cm.max if over <= 0 { return } - // TODO: peer scoring doesn't seem to prevent us from going over the max. - // if over the max peer count, disconnect from (total_peers - maximum) peers - // (#2039) - for i := 0; i < over; i++ { - unprotPeers := cm.unprotectedPeers(n.Peers()) - if len(unprotPeers) == 0 { - return - } - - i, err := rand.Int(rand.Reader, big.NewInt(int64(len(unprotPeers)))) - if err != nil { - logger.Errorf("error generating random number: %s", err) - return - } - - up := unprotPeers[i.Int64()] - logger.Tracef("Over max peer count, disconnecting from random unprotected peer %s", up) - err = n.ClosePeer(up) - if err != nil { - logger.Tracef("failed to close connection to peer %s", up) - } + unprotPeers := cm.unprotectedPeers(n.Peers()) + if len(unprotPeers) == 0 { + return } + + cm.peerSetHandler.DisconnectPeersWithLeastReputation(0, over, unprotPeers) } // Disconnected is called when a connection closed diff --git a/dot/network/state.go b/dot/network/state.go index e776d192dc..b0846bb1c3 100644 --- a/dot/network/state.go +++ b/dot/network/state.go @@ -58,6 +58,7 @@ type PeerSetHandler interface { PeerAdd PeerRemove Peer + DisconnectPeersWithLeastReputation(int, int, []peer.ID) } // PeerAdd is the interface used by the PeerSetHandler to add peers in peerSet. diff --git a/dot/peerset/handler.go b/dot/peerset/handler.go index ac4b733ebb..c53899bcac 100644 --- a/dot/peerset/handler.go +++ b/dot/peerset/handler.go @@ -130,6 +130,35 @@ func (h *Handler) SortedPeers(setIdx int) chan peer.IDSlice { return resultPeersCh } +// DisconnectPeersWithLeastReputation disconnects peers with least reputations. +func (h *Handler) DisconnectPeersWithLeastReputation(setIdx int, numberOfPeersToBeRemoved int, unprotectedPeers []peer.ID) { + sortedPeers := <-h.SortedPeers(setIdx) + + // peers are sorted from highest reputation to least reputation + for i := 0; i < numberOfPeersToBeRemoved; i++ { + peerInQuestion := sortedPeers[len(sortedPeers)-1-i] + + if !contains(unprotectedPeers, peerInQuestion) { + continue + } + + logger.Tracef("Over max peer count, disconnecting peer with the least reputation, peer: %s", peerInQuestion) + h.DisconnectPeer(setIdx, peerInQuestion) + + i++ + } +} + +func contains(array []peer.ID, element peer.ID) bool { + for i := range array { + if element.String() == array[i].String() { + return true + } + } + + return false +} + // Stop closes the actionQueue and result message chan. func (h *Handler) Stop() { select { diff --git a/dot/peerset/peerset.go b/dot/peerset/peerset.go index 36a44c0407..477a6548d7 100644 --- a/dot/peerset/peerset.go +++ b/dot/peerset/peerset.go @@ -182,6 +182,8 @@ func NewConfigSet(in, out uint32, reservedOnly bool, allocTime time.Duration) *C } return &ConfigSet{ + // Why are we using an array of config in the set, when we are + // using just one config Set: []*config{set}, } } @@ -227,8 +229,8 @@ func reputationTick(reput Reputation) Reputation { return reput.sub(diff) } -// updateTime updates the value of latestTimeUpdate and performs all the updates that happen -// over time, such as Reputation increases for staying connected. +// updateTime updates the value of latestTimeUpdate and performs all the updates that +// happen over time, such as Reputation increases for staying connected. func (ps *PeerSet) updateTime() error { currTime := time.Now() // identify the time difference between current time and last update time for peer reputation in seconds. From 999f94eb18c1b3645ee4de3f3931a0408b40dae1 Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Thu, 25 Nov 2021 18:19:48 +0530 Subject: [PATCH 2/6] temp --- dot/network/config.go | 2 +- dot/network/connmgr.go | 8 +++++++- dot/network/service.go | 10 ++++++---- dot/peerset/handler.go | 16 +++++++++++++++- dot/peerset/peerset.go | 10 ++++++---- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/dot/network/config.go b/dot/network/config.go index e4cbbeb857..3564d18ea6 100644 --- a/dot/network/config.go +++ b/dot/network/config.go @@ -35,7 +35,7 @@ const ( DefaultMinPeerCount = 5 // DefaultMaxPeerCount is the default maximum peer count - DefaultMaxPeerCount = 50 + DefaultMaxPeerCount = 10 // 50 // DefaultDiscoveryInterval is the default interval for searching for DHT peers DefaultDiscoveryInterval = time.Minute * 5 diff --git a/dot/network/connmgr.go b/dot/network/connmgr.go index a6270ac93f..8f0b493c63 100644 --- a/dot/network/connmgr.go +++ b/dot/network/connmgr.go @@ -5,6 +5,7 @@ package network import ( "context" + "fmt" "sync" "github.com/libp2p/go-libp2p-core/connmgr" @@ -39,6 +40,7 @@ func newConnManager(min, max int, peerSetCfg *peerset.ConfigSet) (*ConnManager, return nil, err } + fmt.Printf("max connections: %d\n", max) return &ConnManager{ min: min, max: max, @@ -133,8 +135,12 @@ func (cm *ConnManager) Connected(n network.Network, c network.Conn) { cm.Lock() defer cm.Unlock() + fmt.Printf("\nn.Peers(): %d, n.Conn(): %d\n", len(n.Peers()), len(n.Conns())) + fmt.Printf("\ncm.host.h.Network().Peers(): %d, cm.host.h.Network().Conns(): %d\n", len(cm.host.h.Network().Peers()), len(cm.host.h.Network().Conns())) + // If number of peers are less than max peers, return. // Remove, if otherwise. + over := len(n.Peers()) - cm.max if over <= 0 { return @@ -145,7 +151,7 @@ func (cm *ConnManager) Connected(n network.Network, c network.Conn) { return } - cm.peerSetHandler.DisconnectPeersWithLeastReputation(0, over, unprotPeers) + // cm.peerSetHandler.DisconnectPeersWithLeastReputation(0, over, unprotPeers) } // Disconnected is called when a connection closed diff --git a/dot/network/service.go b/dot/network/service.go index d29c341127..0c1817df45 100644 --- a/dot/network/service.go +++ b/dot/network/service.go @@ -661,6 +661,7 @@ func (s *Service) startPeerSetHandler() { } func (s *Service) processMessage(msg peerset.Message) { + peersBefore := s.host.peers() peerID := msg.PeerID switch msg.Status { case peerset.Connect: @@ -676,17 +677,18 @@ func (s *Service) processMessage(msg peerset.Message) { err := s.host.connect(addrInfo) if err != nil { - logger.Debugf("failed to open connection for peer %s: %s", peerID, err) + logger.Infof("failed to open connection for peer %s: %s", peerID, err) return } - logger.Debugf("connection successful with peer %s", peerID) + logger.Infof("connection successful with peer %s", peerID) case peerset.Drop, peerset.Reject: err := s.host.closePeer(peerID) if err != nil { - logger.Debugf("failed to close connection with peer %s: %s", peerID, err) + logger.Infof("failed to close connection with peer %s: %s", peerID, err) return } - logger.Debugf("connection dropped successfully for peer %s", peerID) + logger.Infof("connection dropped successfully for peer %s", peerID) + fmt.Printf("\npeers before: %d, peers after: %d\n", len(peersBefore), len(s.host.peers())) } } diff --git a/dot/peerset/handler.go b/dot/peerset/handler.go index c53899bcac..dbf0245dfb 100644 --- a/dot/peerset/handler.go +++ b/dot/peerset/handler.go @@ -3,7 +3,11 @@ package peerset -import "github.com/libp2p/go-libp2p-core/peer" +import ( + "fmt" + + "github.com/libp2p/go-libp2p-core/peer" +) // Handler manages peerSet. type Handler struct { @@ -134,6 +138,16 @@ func (h *Handler) SortedPeers(setIdx int) chan peer.IDSlice { func (h *Handler) DisconnectPeersWithLeastReputation(setIdx int, numberOfPeersToBeRemoved int, unprotectedPeers []peer.ID) { sortedPeers := <-h.SortedPeers(setIdx) + if len(sortedPeers) < numberOfPeersToBeRemoved { + fmt.Printf("\nlen(sortedPeers): %d < numberOfPeersToBeRemoved: %d, This should not happen\n", len(sortedPeers), numberOfPeersToBeRemoved) + return + } + + if len(sortedPeers) < len(unprotectedPeers) { + fmt.Printf("len(sortedPeers): %d < len(unprotectedPeers): %d, this shouldn't happen\n", len(sortedPeers), len(unprotectedPeers)) + return + } + // peers are sorted from highest reputation to least reputation for i := 0; i < numberOfPeersToBeRemoved; i++ { peerInQuestion := sortedPeers[len(sortedPeers)-1-i] diff --git a/dot/peerset/peerset.go b/dot/peerset/peerset.go index 477a6548d7..d76ff9b5f6 100644 --- a/dot/peerset/peerset.go +++ b/dot/peerset/peerset.go @@ -283,8 +283,8 @@ func (ps *PeerSet) updateTime() error { } // reportPeer on report ReputationChange of the peer based on its behaviour, -// if the updated Reputation is below BannedThresholdValue then, this node need to be disconnected -// and a drop message for the peer is sent in order to disconnect. +// if the updated Reputation is below BannedThresholdValue then, this node need to +// be disconnected and a drop message for the peer is sent in order to disconnect. func (ps *PeerSet) reportPeer(change ReputationChange, peers ...peer.ID) error { // we want reputations to be up-to-date before adjusting them. if err := ps.updateTime(); err != nil { @@ -517,8 +517,9 @@ func (ps *PeerSet) removePeer(setID int, peers ...peer.ID) error { return nil } -// incoming indicates that we have received an incoming connection. Must be answered either with -// a corresponding `Accept` or `Reject`, except if we were already connected to this peer. +// incoming indicates that we have received an incoming connection. Must be answered +// either with a corresponding `Accept` or `Reject`, except if we were already +// connected to this peer. func (ps *PeerSet) incoming(setID int, peers ...peer.ID) error { if err := ps.updateTime(); err != nil { return err @@ -551,6 +552,7 @@ func (ps *PeerSet) incoming(setID int, peers ...peer.ID) error { case state.tryAcceptIncoming(setID, pid) != nil: ps.resultMsgCh <- Message{Status: Reject} default: + logger.Infof("incoming connection accepted from peer %s", pid) ps.resultMsgCh <- Message{Status: Accept} } } From f5b72ffdfbda8bfce561b3a0fb71610caecf271b Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Thu, 25 Nov 2021 21:52:44 +0530 Subject: [PATCH 3/6] fix(dot/network): send peerset messages with pid - peerset service (doWorks goroutine) sends messages to network service about peers to connect, drop, reject, disconnect etc. Some of those message were being send without a peer id and set id. This was the reason why our excess peers were not getting removed. - To save ourselves from such a problem in future, processMessage now checks if peer id is empty or not. - Also change the resultMsgCh type to peerset.Message from interface{} Fixes #2039 --- dot/network/service.go | 13 ++++--------- dot/network/state.go | 2 +- dot/peerset/handler.go | 2 +- dot/peerset/peerset.go | 29 +++++++++++++++++++++++------ dot/peerset/peerset_test.go | 4 +--- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/dot/network/service.go b/dot/network/service.go index 0c1817df45..9839f6d0f4 100644 --- a/dot/network/service.go +++ b/dot/network/service.go @@ -6,7 +6,6 @@ package network import ( "context" "errors" - "fmt" "math/big" "strings" "sync" @@ -661,8 +660,10 @@ func (s *Service) startPeerSetHandler() { } func (s *Service) processMessage(msg peerset.Message) { - peersBefore := s.host.peers() peerID := msg.PeerID + if peerID == "" { + logger.Errorf("found empty peer id") + } switch msg.Status { case peerset.Connect: addrInfo := s.host.h.Peerstore().PeerInfo(peerID) @@ -688,7 +689,6 @@ func (s *Service) processMessage(msg peerset.Message) { return } logger.Infof("connection dropped successfully for peer %s", peerID) - fmt.Printf("\npeers before: %d, peers after: %d\n", len(peersBefore), len(s.host.peers())) } } @@ -698,12 +698,7 @@ func (s *Service) startProcessingMsg() { select { case <-s.ctx.Done(): return - case m := <-msgCh: - msg, ok := m.(peerset.Message) - if !ok { - logger.Error(fmt.Sprintf("failed to get message from peerSet: type is %T instead of peerset.Message", m)) - continue - } + case msg := <-msgCh: s.processMessage(msg) } } diff --git a/dot/network/state.go b/dot/network/state.go index b0846bb1c3..354d7231c1 100644 --- a/dot/network/state.go +++ b/dot/network/state.go @@ -80,5 +80,5 @@ type PeerRemove interface { type Peer interface { PeerReputation(peer.ID) (peerset.Reputation, error) SortedPeers(idx int) chan peer.IDSlice - Messages() chan interface{} + Messages() chan peerset.Message } diff --git a/dot/peerset/handler.go b/dot/peerset/handler.go index dbf0245dfb..f08a83b998 100644 --- a/dot/peerset/handler.go +++ b/dot/peerset/handler.go @@ -92,7 +92,7 @@ func (h *Handler) Incoming(setID int, peers ...peer.ID) { } // Messages return result message chan. -func (h *Handler) Messages() chan interface{} { +func (h *Handler) Messages() chan Message { return h.peerSet.resultMsgCh } diff --git a/dot/peerset/peerset.go b/dot/peerset/peerset.go index d76ff9b5f6..7e7cd64921 100644 --- a/dot/peerset/peerset.go +++ b/dot/peerset/peerset.go @@ -140,7 +140,7 @@ type PeerSet struct { // TODO: this will be useful for reserved only mode // this is for future purpose if reserved-only flag is enabled (#1888). isReservedOnly bool - resultMsgCh chan interface{} + resultMsgCh chan Message // time when the PeerSet was created. created time.Time // last time when we updated the reputations of connected nodes. @@ -529,7 +529,11 @@ func (ps *PeerSet) incoming(setID int, peers ...peer.ID) error { for _, pid := range peers { if ps.isReservedOnly { if _, ok := ps.reservedNode[pid]; !ok { - ps.resultMsgCh <- Message{Status: Reject} + ps.resultMsgCh <- Message{ + Status: Reject, + setID: uint64(setID), + PeerID: pid, + } continue } } @@ -548,12 +552,24 @@ func (ps *PeerSet) incoming(setID int, peers ...peer.ID) error { p := state.nodes[pid] switch { case p.getReputation() < BannedThresholdValue: - ps.resultMsgCh <- Message{Status: Reject} + ps.resultMsgCh <- Message{ + Status: Reject, + setID: uint64(setID), + PeerID: pid, + } case state.tryAcceptIncoming(setID, pid) != nil: - ps.resultMsgCh <- Message{Status: Reject} + ps.resultMsgCh <- Message{ + Status: Reject, + setID: uint64(setID), + PeerID: pid, + } default: logger.Infof("incoming connection accepted from peer %s", pid) - ps.resultMsgCh <- Message{Status: Accept} + ps.resultMsgCh <- Message{ + Status: Accept, + setID: uint64(setID), + PeerID: pid, + } } } @@ -596,6 +612,7 @@ func (ps *PeerSet) disconnect(setIdx int, reason DropReason, peers ...peer.ID) e } ps.resultMsgCh <- Message{ Status: Drop, + setID: uint64(setIdx), PeerID: pid, } @@ -613,7 +630,7 @@ func (ps *PeerSet) disconnect(setIdx int, reason DropReason, peers ...peer.ID) e // start handles all the action for the peerSet. func (ps *PeerSet) start(aq chan action) { ps.actionQueue = aq - ps.resultMsgCh = make(chan interface{}, msgChanSize) + ps.resultMsgCh = make(chan Message, msgChanSize) go ps.doWork() } diff --git a/dot/peerset/peerset_test.go b/dot/peerset/peerset_test.go index 5c4e37d3ab..3c094734c8 100644 --- a/dot/peerset/peerset_test.go +++ b/dot/peerset/peerset_test.go @@ -68,9 +68,7 @@ func TestAddReservedPeers(t *testing.T) { if len(ps.resultMsgCh) == 0 { break } - m := <-ps.resultMsgCh - msg, ok := m.(Message) - require.True(t, ok) + msg := <-ps.resultMsgCh require.Equal(t, expectedMsgs[i], msg) } } From 9227ce0bb7bae20984ed1b5f7b0638c47863cd06 Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Thu, 25 Nov 2021 22:36:56 +0530 Subject: [PATCH 4/6] removing excess code --- dot/network/config.go | 2 +- dot/network/connmgr.go | 23 ----------------------- dot/network/service.go | 10 +++++----- dot/network/state.go | 1 - dot/peerset/handler.go | 41 ----------------------------------------- 5 files changed, 6 insertions(+), 71 deletions(-) diff --git a/dot/network/config.go b/dot/network/config.go index 6eca43e59f..04b717af4f 100644 --- a/dot/network/config.go +++ b/dot/network/config.go @@ -35,7 +35,7 @@ const ( DefaultMinPeerCount = 5 // DefaultMaxPeerCount is the default maximum peer count - DefaultMaxPeerCount = 10 // 50 + DefaultMaxPeerCount = 50 // DefaultDiscoveryInterval is the default interval for searching for DHT peers DefaultDiscoveryInterval = time.Minute * 5 diff --git a/dot/network/connmgr.go b/dot/network/connmgr.go index 8f0b493c63..4dce7f5cea 100644 --- a/dot/network/connmgr.go +++ b/dot/network/connmgr.go @@ -5,7 +5,6 @@ package network import ( "context" - "fmt" "sync" "github.com/libp2p/go-libp2p-core/connmgr" @@ -40,7 +39,6 @@ func newConnManager(min, max int, peerSetCfg *peerset.ConfigSet) (*ConnManager, return nil, err } - fmt.Printf("max connections: %d\n", max) return &ConnManager{ min: min, max: max, @@ -131,27 +129,6 @@ func (cm *ConnManager) Connected(n network.Network, c network.Conn) { logger.Tracef( "Host %s connected to peer %s", n.LocalPeer(), c.RemotePeer()) cm.connectHandler(c.RemotePeer()) - - cm.Lock() - defer cm.Unlock() - - fmt.Printf("\nn.Peers(): %d, n.Conn(): %d\n", len(n.Peers()), len(n.Conns())) - fmt.Printf("\ncm.host.h.Network().Peers(): %d, cm.host.h.Network().Conns(): %d\n", len(cm.host.h.Network().Peers()), len(cm.host.h.Network().Conns())) - - // If number of peers are less than max peers, return. - // Remove, if otherwise. - - over := len(n.Peers()) - cm.max - if over <= 0 { - return - } - - unprotPeers := cm.unprotectedPeers(n.Peers()) - if len(unprotPeers) == 0 { - return - } - - // cm.peerSetHandler.DisconnectPeersWithLeastReputation(0, over, unprotPeers) } // Disconnected is called when a connection closed diff --git a/dot/network/service.go b/dot/network/service.go index dce79176fc..af08c008e1 100644 --- a/dot/network/service.go +++ b/dot/network/service.go @@ -669,7 +669,7 @@ func (s *Service) startPeerSetHandler() { func (s *Service) processMessage(msg peerset.Message) { peerID := msg.PeerID if peerID == "" { - logger.Errorf("found empty peer id") + logger.Errorf("found empty peer id in peerset message") } switch msg.Status { case peerset.Connect: @@ -685,17 +685,17 @@ func (s *Service) processMessage(msg peerset.Message) { err := s.host.connect(addrInfo) if err != nil { - logger.Infof("failed to open connection for peer %s: %s", peerID, err) + logger.Debugf("failed to open connection for peer %s: %s", peerID, err) return } - logger.Infof("connection successful with peer %s", peerID) + logger.Debugf("connection successful with peer %s", peerID) case peerset.Drop, peerset.Reject: err := s.host.closePeer(peerID) if err != nil { - logger.Infof("failed to close connection with peer %s: %s", peerID, err) + logger.Debugf("failed to close connection with peer %s: %s", peerID, err) return } - logger.Infof("connection dropped successfully for peer %s", peerID) + logger.Debugf("connection dropped successfully for peer %s", peerID) } } diff --git a/dot/network/state.go b/dot/network/state.go index 354d7231c1..b9467d02f3 100644 --- a/dot/network/state.go +++ b/dot/network/state.go @@ -58,7 +58,6 @@ type PeerSetHandler interface { PeerAdd PeerRemove Peer - DisconnectPeersWithLeastReputation(int, int, []peer.ID) } // PeerAdd is the interface used by the PeerSetHandler to add peers in peerSet. diff --git a/dot/peerset/handler.go b/dot/peerset/handler.go index f08a83b998..0a807505df 100644 --- a/dot/peerset/handler.go +++ b/dot/peerset/handler.go @@ -4,8 +4,6 @@ package peerset import ( - "fmt" - "github.com/libp2p/go-libp2p-core/peer" ) @@ -134,45 +132,6 @@ func (h *Handler) SortedPeers(setIdx int) chan peer.IDSlice { return resultPeersCh } -// DisconnectPeersWithLeastReputation disconnects peers with least reputations. -func (h *Handler) DisconnectPeersWithLeastReputation(setIdx int, numberOfPeersToBeRemoved int, unprotectedPeers []peer.ID) { - sortedPeers := <-h.SortedPeers(setIdx) - - if len(sortedPeers) < numberOfPeersToBeRemoved { - fmt.Printf("\nlen(sortedPeers): %d < numberOfPeersToBeRemoved: %d, This should not happen\n", len(sortedPeers), numberOfPeersToBeRemoved) - return - } - - if len(sortedPeers) < len(unprotectedPeers) { - fmt.Printf("len(sortedPeers): %d < len(unprotectedPeers): %d, this shouldn't happen\n", len(sortedPeers), len(unprotectedPeers)) - return - } - - // peers are sorted from highest reputation to least reputation - for i := 0; i < numberOfPeersToBeRemoved; i++ { - peerInQuestion := sortedPeers[len(sortedPeers)-1-i] - - if !contains(unprotectedPeers, peerInQuestion) { - continue - } - - logger.Tracef("Over max peer count, disconnecting peer with the least reputation, peer: %s", peerInQuestion) - h.DisconnectPeer(setIdx, peerInQuestion) - - i++ - } -} - -func contains(array []peer.ID, element peer.ID) bool { - for i := range array { - if element.String() == array[i].String() { - return true - } - } - - return false -} - // Stop closes the actionQueue and result message chan. func (h *Handler) Stop() { select { From f147670f97f55d7a8576253bec3f73cc4060eebf Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Mon, 29 Nov 2021 15:45:08 +0530 Subject: [PATCH 5/6] addressed review --- dot/peerset/peerset.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dot/peerset/peerset.go b/dot/peerset/peerset.go index 9a0f56d0a7..8f1675897e 100644 --- a/dot/peerset/peerset.go +++ b/dot/peerset/peerset.go @@ -565,7 +565,7 @@ func (ps *PeerSet) incoming(setID int, peers ...peer.ID) error { PeerID: pid, } default: - logger.Infof("incoming connection accepted from peer %s", pid) + logger.Debugf("incoming connection accepted from peer %s", pid) ps.resultMsgCh <- Message{ Status: Accept, setID: uint64(setID), From 6dc5859ee7613e9729d3217e353c7bac407ffd0f Mon Sep 17 00:00:00 2001 From: Kishan Sagathiya Date: Tue, 30 Nov 2021 21:51:53 +0530 Subject: [PATCH 6/6] return --- dot/network/service.go | 1 + 1 file changed, 1 insertion(+) diff --git a/dot/network/service.go b/dot/network/service.go index f6db56274d..8c7faeb119 100644 --- a/dot/network/service.go +++ b/dot/network/service.go @@ -671,6 +671,7 @@ func (s *Service) processMessage(msg peerset.Message) { peerID := msg.PeerID if peerID == "" { logger.Errorf("found empty peer id in peerset message") + return } switch msg.Status { case peerset.Connect: