summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Ciocaltea2020-01-21 14:43:24 +0000
committerPetr Štetiar2020-01-21 15:56:08 +0000
commit236b7a0aef2189ee49d6ca82ebc3bf2e06fd623d (patch)
treefc1116a9bc14bca08587dd72970ed1449d27c090
parent40f939d57c67bbe2987a863500cca02e91d34b90 (diff)
Fix blocked entropy generation
The OpenWrt Jitter RNG daemon is currently unable to continuously provide entropy, except once on process startup. This patch brings the following fixes: - poll /dev/random for unblocking write operations, instead of read - register the low entropy callback after uloop initialization, not before Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@gmail.com> [commit subject tweak, uloop_done cleanup] Signed-off-by: Petr Štetiar <ynezz@true.cz>
-rw-r--r--urngd.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/urngd.c b/urngd.c
index d8ed159..35ccdec 100644
--- a/urngd.c
+++ b/urngd.c
@@ -180,7 +180,7 @@ static bool urngd_init(struct urngd *u)
return false;
}
- uloop_fd_add(&u->rnd_fd, ULOOP_READ);
+ uloop_fd_add(&u->rnd_fd, ULOOP_WRITE);
return true;
}
@@ -227,14 +227,16 @@ int main(int argc, char **argv)
ulog_open(ulog_channels, LOG_DAEMON, "urngd");
- if (!urngd_init(&urngd_service))
+ uloop_init();
+ if (!urngd_init(&urngd_service)) {
+ uloop_done();
return -1;
+ }
LOG("v%s started.\n", URNGD_VERSION);
gather_entropy(&urngd_service);
- uloop_init();
uloop_run();
uloop_done();