Skip to content

Commit 07717bc

Browse files
committed
Simplify reseeding erro logic
1 parent 4d10328 commit 07717bc

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

src/reseeding.rs

+8-14
Original file line numberDiff line numberDiff line change
@@ -55,36 +55,30 @@ impl<R: Rng, Rsdr: Reseeder<R>> ReseedingRng<R, Rsdr> {
5555
}
5656
}
5757

58-
/// Reseed the internal RNG if the number of bytes that have been
59-
/// generated exceed the threshold.
60-
///
58+
/// Reseed the internal RNG.
6159
/// On error, this may delay reseeding or not reseed at all.
6260
#[inline(never)]
6361
pub fn reseed(&mut self) {
62+
self.bytes_until_reseed = self.threshold;
6463
let mut err_count = 0;
6564
loop {
6665
if let Err(e) = self.reseeder.reseed(&mut self.rng) {
6766
// TODO: log?
6867
if e.kind.should_wait() {
6968
// Delay reseeding
7069
self.bytes_until_reseed = self.threshold >> 8;
71-
break;
7270
} else if e.kind.should_retry() {
73-
if err_count > 4 { // arbitrary limit
74-
// TODO: log details & cause?
75-
break; // give up trying to reseed
76-
}
7771
err_count += 1;
78-
continue; // immediate retry
79-
} else {
80-
break; // give up trying to reseed
72+
if err_count <= 5 { // arbitrary limit
73+
continue; // retry immediately
74+
}
8175
}
82-
} else {
83-
break; // no reseeding
76+
// give up trying to reseed
8477
}
78+
break; // successfully reseeded, delayed, or given up.
8579
}
86-
self.bytes_until_reseed = self.threshold;
8780
}
81+
8882
/// Reseed the internal RNG if the number of bytes that have been
8983
/// generated exceed the threshold.
9084
///

0 commit comments

Comments
 (0)