Hi there, I'm investigating a case where a customer's prngd service was blocking, which by itself is not supposed to happen AFAIK. This was causing a hard-to-diagnose startup hang for our code that uses OpenSSL. The call to RAND_egd() was blocking in a call to read().
I would like to address this issue so that even with a misbehaving prngd, our code will fail reliably rather than hanging. The documentation for RAND_egd() states specifically that non-blocking I/O is used to read from the EGD; analysis of the code leads me to believe otherwise, but I'm not particularly familiar with networking code. Can anyone confirm my suspicions that the reads are indeed taking place using blocking sockets and that the documentation is wrong? I believe the code in question is in rand_egd.c and the documentation is in the RAND_egd.pod (the "Notes" section, second paragraph). Thanks! Ben