diff --git a/internal/p2p/peermanager.go b/internal/p2p/peermanager.go index 4e596a965..f2e7f3f54 100644 --- a/internal/p2p/peermanager.go +++ b/internal/p2p/peermanager.go @@ -1376,22 +1376,19 @@ func (p *peerInfo) LastDialed() (time.Time, bool) { if addr.LastDialFailure.IsZero() { continue } - if last.Before(addr.LastDialSuccess) { - last = addr.LastDialSuccess - success = true + if last.After(addr.LastDialSuccess) { + continue } + success = true + last = addr.LastDialSuccess } - if addr.LastDialSuccess.After(addr.LastDialFailure) { - if last.Before(addr.LastDialSuccess) { - last = addr.LastDialSuccess - success = true - } + if addr.LastDialFailure.After(last) { + success = false + last = addr.LastDialFailure } - if addr.LastDialFailure.After(addr.LastDialSuccess) { - if last.Before(addr.LastDialFailure) { - last = addr.LastDialFailure - success = false - } + if addr.LastDialSuccess.After(last) || last.Equal(addr.LastDialSuccess) { + success = true + last = addr.LastDialSuccess } } diff --git a/internal/p2p/peermanager_scoring_test.go b/internal/p2p/peermanager_scoring_test.go index 4ab979eb2..02aa3a32e 100644 --- a/internal/p2p/peermanager_scoring_test.go +++ b/internal/p2p/peermanager_scoring_test.go @@ -200,6 +200,9 @@ func TestLastDialed(t *testing.T) { FailTime time.Time ExpectedSuccess bool }{ + { + Name: "Zero", + }, { Name: "Success", SuccessTime: base.Add(time.Hour),