diff options
| author | Cristian Ciocaltea | 2020-01-21 14:43:24 +0000 |
|---|---|---|
| committer | Petr Štetiar | 2020-01-21 15:56:08 +0000 |
| commit | 236b7a0aef2189ee49d6ca82ebc3bf2e06fd623d (patch) | |
| tree | fc1116a9bc14bca08587dd72970ed1449d27c090 | |
| parent | 40f939d57c67bbe2987a863500cca02e91d34b90 (diff) | |
| download | urngd-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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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(); |