diff options
author | Adam Babik <a.babik@designfortress.com> | 2018-08-29 18:56:13 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2018-08-29 18:56:13 +0800 |
commit | 75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d (patch) | |
tree | b4bfd05a88e02a103f4847546a084be31cbae223 /whisper/whisperv5 | |
parent | 957496811627d6ef33b9b4232e4d42353d376f1d (diff) | |
download | dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar.gz dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar.bz2 dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar.lz dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar.xz dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.tar.zst dexon-75ae5af62a8dbbc4fc547d2b3b4cce192d783b2d.zip |
whisper: fix loop in expire() (#17532)
Diffstat (limited to 'whisper/whisperv5')
-rw-r--r-- | whisper/whisperv5/whisper.go | 2 | ||||
-rw-r--r-- | whisper/whisperv5/whisper_test.go | 33 |
2 files changed, 21 insertions, 14 deletions
diff --git a/whisper/whisperv5/whisper.go b/whisper/whisperv5/whisper.go index 8e0662327..465545821 100644 --- a/whisper/whisperv5/whisper.go +++ b/whisper/whisperv5/whisper.go @@ -717,7 +717,7 @@ func (w *Whisper) expire() { w.stats.messagesCleared++ w.stats.memoryCleared += sz w.stats.memoryUsed -= sz - return true + return false }) w.expirations[expiry].Clear() delete(w.expirations, expiry) diff --git a/whisper/whisperv5/whisper_test.go b/whisper/whisperv5/whisper_test.go index 8af085292..a7bd17e4d 100644 --- a/whisper/whisperv5/whisper_test.go +++ b/whisper/whisperv5/whisper_test.go @@ -487,27 +487,34 @@ func TestExpiry(t *testing.T) { if err != nil { t.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) } - params.TTL = 1 - msg, err := NewSentMessage(params) - if err != nil { - t.Fatalf("failed to create new message with seed %d: %s.", seed, err) - } - env, err := msg.Wrap(params) - if err != nil { - t.Fatalf("failed Wrap with seed %d: %s.", seed, err) - } - err = w.Send(env) - if err != nil { - t.Fatalf("failed to send envelope with seed %d: %s.", seed, err) + messagesCount := 5 + + // Send a few messages one after another. Due to low PoW and expiration buckets + // with one second resolution, it covers a case when there are multiple items + // in a single expiration bucket. + for i := 0; i < messagesCount; i++ { + msg, err := NewSentMessage(params) + if err != nil { + t.Fatalf("failed to create new message with seed %d: %s.", seed, err) + } + env, err := msg.Wrap(params) + if err != nil { + t.Fatalf("failed Wrap with seed %d: %s.", seed, err) + } + + err = w.Send(env) + if err != nil { + t.Fatalf("failed to send envelope with seed %d: %s.", seed, err) + } } // wait till received or timeout var received, expired bool for j := 0; j < 20; j++ { time.Sleep(100 * time.Millisecond) - if len(w.Envelopes()) > 0 { + if len(w.Envelopes()) == messagesCount { received = true break } |