From 1f221889196c2baf58e8e62603de3faf03432a2f Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Tue, 28 Jan 2025 14:33:33 +0000 Subject: [PATCH] time.Until the zero time is very wrong --- spv/sync.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spv/sync.go b/spv/sync.go index 8f84602eb..6904f4f2c 100644 --- a/spv/sync.go +++ b/spv/sync.go @@ -521,6 +521,7 @@ var errBreaksMinVersionTarget = errors.New("peer uses too low version to satisif // peer. It blocks until the peer disconnects and logs any errors. func (s *Syncer) connectAndRunPeer(ctx context.Context, backoff time.Duration, raddr string, persistent bool) (connected bool) { if backoff > 0 { + log.Tracef("connectAndRunPeer(%v): sleeping backoff %v", raddr, backoff) select { case <-time.After(backoff): case <-ctx.Done(): @@ -702,7 +703,12 @@ func (s *Syncer) connectToCandidates(ctx context.Context) error { raddr := na.String() b := s.backoff(raddr) jitter := backoffJitter() - delay := time.Until(b.time) + jitter + var delay time.Duration + if b.time.IsZero() { + delay = jitter + } else { + delay = time.Until(b.time) + jitter + } connected := s.connectAndRunPeer(ctx, delay, raddr, false) if connected { s.setBackoff(raddr, backoff{})