From 714d58ed98ab0e01d3aa8b28f25edbcb7ecd38fc Mon Sep 17 00:00:00 2001 From: William Banfield Date: Tue, 21 Jun 2022 16:50:57 -0400 Subject: [PATCH] only call dial waker on errors that should cause new dial --- internal/p2p/peermanager.go | 3 +++ internal/p2p/router.go | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/p2p/peermanager.go b/internal/p2p/peermanager.go index f2f74007b..545c17586 100644 --- a/internal/p2p/peermanager.go +++ b/internal/p2p/peermanager.go @@ -649,9 +649,11 @@ func (m *PeerManager) Dialed(address NodeAddress) error { } } if address.NodeID == m.selfID { + m.dialWaker.Wake() return fmt.Errorf("rejecting connection to self (%v)", address.NodeID) } if m.isConnected(address.NodeID) { + m.dialWaker.Wake() return fmt.Errorf("peer %v is already connected", address.NodeID) } if m.options.MaxConnected > 0 && len(m.connected) >= int(m.options.MaxConnected) { @@ -662,6 +664,7 @@ func (m *PeerManager) Dialed(address NodeAddress) error { peer, ok := m.store.Get(address.NodeID) if !ok { + m.dialWaker.Wake() return fmt.Errorf("peer %q was removed while dialing", address.NodeID) } now := time.Now().UTC() diff --git a/internal/p2p/router.go b/internal/p2p/router.go index ff90e8c21..9a97844b4 100644 --- a/internal/p2p/router.go +++ b/internal/p2p/router.go @@ -634,7 +634,6 @@ func (r *Router) connectPeer(ctx context.Context, address NodeAddress) { if err := r.runWithPeerMutex(func() error { return r.peerManager.Dialed(address) }); err != nil { r.logger.Error("failed to dial peer", "op", "outgoing/dialing", "peer", address.NodeID, "err", err) - r.peerManager.dialWaker.Wake() conn.Close() return }