Skip to content

Commit 75ae5af

Browse files
adambabikkaralabe
authored andcommitted
whisper: fix loop in expire() (#17532)
1 parent 9574968 commit 75ae5af

File tree

4 files changed

+42
-28
lines changed

4 files changed

+42
-28
lines changed

whisper/whisperv5/whisper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ func (w *Whisper) expire() {
717717
w.stats.messagesCleared++
718718
w.stats.memoryCleared += sz
719719
w.stats.memoryUsed -= sz
720-
return true
720+
return false
721721
})
722722
w.expirations[expiry].Clear()
723723
delete(w.expirations, expiry)

whisper/whisperv5/whisper_test.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -487,27 +487,34 @@ func TestExpiry(t *testing.T) {
487487
if err != nil {
488488
t.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
489489
}
490-
491490
params.TTL = 1
492-
msg, err := NewSentMessage(params)
493-
if err != nil {
494-
t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
495-
}
496-
env, err := msg.Wrap(params)
497-
if err != nil {
498-
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
499-
}
500491

501-
err = w.Send(env)
502-
if err != nil {
503-
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
492+
messagesCount := 5
493+
494+
// Send a few messages one after another. Due to low PoW and expiration buckets
495+
// with one second resolution, it covers a case when there are multiple items
496+
// in a single expiration bucket.
497+
for i := 0; i < messagesCount; i++ {
498+
msg, err := NewSentMessage(params)
499+
if err != nil {
500+
t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
501+
}
502+
env, err := msg.Wrap(params)
503+
if err != nil {
504+
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
505+
}
506+
507+
err = w.Send(env)
508+
if err != nil {
509+
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
510+
}
504511
}
505512

506513
// wait till received or timeout
507514
var received, expired bool
508515
for j := 0; j < 20; j++ {
509516
time.Sleep(100 * time.Millisecond)
510-
if len(w.Envelopes()) > 0 {
517+
if len(w.Envelopes()) == messagesCount {
511518
received = true
512519
break
513520
}

whisper/whisperv6/whisper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,7 @@ func (whisper *Whisper) expire() {
900900
whisper.stats.messagesCleared++
901901
whisper.stats.memoryCleared += sz
902902
whisper.stats.memoryUsed -= sz
903-
return true
903+
return false
904904
})
905905
whisper.expirations[expiry].Clear()
906906
delete(whisper.expirations, expiry)

whisper/whisperv6/whisper_test.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -465,27 +465,34 @@ func TestExpiry(t *testing.T) {
465465
if err != nil {
466466
t.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
467467
}
468-
469468
params.TTL = 1
470-
msg, err := NewSentMessage(params)
471-
if err != nil {
472-
t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
473-
}
474-
env, err := msg.Wrap(params)
475-
if err != nil {
476-
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
477-
}
478469

479-
err = w.Send(env)
480-
if err != nil {
481-
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
470+
messagesCount := 5
471+
472+
// Send a few messages one after another. Due to low PoW and expiration buckets
473+
// with one second resolution, it covers a case when there are multiple items
474+
// in a single expiration bucket.
475+
for i := 0; i < messagesCount; i++ {
476+
msg, err := NewSentMessage(params)
477+
if err != nil {
478+
t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
479+
}
480+
env, err := msg.Wrap(params)
481+
if err != nil {
482+
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
483+
}
484+
485+
err = w.Send(env)
486+
if err != nil {
487+
t.Fatalf("failed to send envelope with seed %d: %s.", seed, err)
488+
}
482489
}
483490

484491
// wait till received or timeout
485492
var received, expired bool
486493
for j := 0; j < 20; j++ {
487494
time.Sleep(100 * time.Millisecond)
488-
if len(w.Envelopes()) > 0 {
495+
if len(w.Envelopes()) == messagesCount {
489496
received = true
490497
break
491498
}

0 commit comments

Comments
 (0)