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)
downloadurngd-236b7a0aef2189ee49d6ca82ebc3bf2e06fd623d.tar.gz
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();