From aeb6cc475e14c9b4c4455111f6dfb54672507006 Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Fri, 7 Feb 2020 16:31:46 +0100 Subject: [PATCH] lite2: return if there are no headers in RemoveNoLongerTrustedHeaders (#4378) --- lite2/client.go | 8 +++++++- lite2/client_test.go | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lite2/client.go b/lite2/client.go index 509f50534..5dc1878eb 100644 --- a/lite2/client.go +++ b/lite2/client.go @@ -960,11 +960,14 @@ func (c *Client) removeNoLongerTrustedHeadersRoutine() { // Exposed for testing. func (c *Client) RemoveNoLongerTrustedHeaders(now time.Time) { // 1) Get the oldest height. - oldestHeight, err := c.trustedStore.FirstSignedHeaderHeight() + oldestHeight, err := c.FirstTrustedHeight() if err != nil { c.logger.Error("can't get first trusted height", "err", err) return } + if oldestHeight == -1 { // no headers yet => wait + return + } // 2) Get the latest height. latestHeight, err := c.LastTrustedHeight() @@ -972,6 +975,9 @@ func (c *Client) RemoveNoLongerTrustedHeaders(now time.Time) { c.logger.Error("can't get last trusted height", "err", err) return } + if latestHeight == -1 { // no headers yet => wait + return + } // 3) Remove all headers that are outside of the trusting period. for height := oldestHeight; height <= latestHeight; height++ { diff --git a/lite2/client_test.go b/lite2/client_test.go index c5cfcd957..3f7038e89 100644 --- a/lite2/client_test.go +++ b/lite2/client_test.go @@ -307,6 +307,12 @@ func TestClientRemovesNoLongerTrustedHeaders(t *testing.T) { dbs.New(dbm.NewMemDB(), chainID), Logger(log.TestingLogger()), ) + + assert.NotPanics(t, func() { + now := bTime.Add(4 * time.Hour).Add(1 * time.Second) + c.RemoveNoLongerTrustedHeaders(now) + }) + require.NoError(t, err) err = c.Start() require.NoError(t, err)