Skip to content

Commit 69eee53

Browse files
committed
Add logging to EntropyRng
1 parent 88c4a53 commit 69eee53

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

src/lib.rs

+24-9
Original file line numberDiff line numberDiff line change
@@ -1067,26 +1067,41 @@ impl Rng for EntropyRng {
10671067
switch_rng = Some(EntropySource::Os(os_rng));
10681068
}
10691069
Err(os_rng_error) => {
1070-
if let Ok(jitter_rng) = try_jitter_new(dest) {
1071-
switch_rng = Some(EntropySource::Jitter(jitter_rng));
1072-
} else {
1073-
return Err(os_rng_error);
1070+
warn!("EntropyRng: OsRng failed [falling back to JitterRng]: {}",
1071+
os_rng_error);
1072+
match try_jitter_new(dest) {
1073+
Ok(jitter_rng) => {
1074+
switch_rng = Some(EntropySource::Jitter(jitter_rng));
1075+
}
1076+
Err(jitter_error) => {
1077+
warn!("EntropyRng: JitterRng failed: {}",
1078+
jitter_error);
1079+
return Err(os_rng_error);
1080+
}
10741081
}
10751082
}
10761083
}
10771084
}
10781085
EntropySource::Os(ref mut rng) => {
10791086
let os_rng_result = rng.try_fill_bytes(dest);
1080-
if os_rng_result.is_err() {
1081-
if let Ok(jitter_rng) = try_jitter_new(dest) {
1082-
switch_rng = Some(EntropySource::Jitter(jitter_rng));
1083-
} else {
1084-
return os_rng_result;
1087+
if let Err(os_rng_error) = os_rng_result {
1088+
warn!("EntropyRng: OsRng failed [falling back to JitterRng]: {}",
1089+
os_rng_error);
1090+
match try_jitter_new(dest) {
1091+
Ok(jitter_rng) => {
1092+
switch_rng = Some(EntropySource::Jitter(jitter_rng));
1093+
}
1094+
Err(jitter_error) => {
1095+
warn!("EntropyRng: JitterRng failed: {}",
1096+
jitter_error);
1097+
return Err(os_rng_error);
1098+
}
10851099
}
10861100
}
10871101
}
10881102
EntropySource::Jitter(ref mut rng) => {
10891103
if let Ok(os_rng) = try_os_new(dest) {
1104+
info!("EntropyRng: OsRng available [switching back from JitterRng]");
10901105
switch_rng = Some(EntropySource::Os(os_rng));
10911106
} else {
10921107
return rng.try_fill_bytes(dest); // use JitterRng

0 commit comments

Comments
 (0)