Fix mg_random() for ESP32

This commit is contained in:
Sergey Lyubka 2021-10-04 19:47:24 +01:00
parent a204c80308
commit 6d398bd5c7
2 changed files with 6 additions and 8 deletions

View File

@ -4215,6 +4215,7 @@ void mg_random(void *buf, size_t len) {
unsigned char *p = (unsigned char *) buf;
#if MG_ARCH == MG_ARCH_ESP32
while (len--) *p++ = (unsigned char) (esp_random() & 255);
done = true;
#elif MG_ARCH == MG_ARCH_WIN32
#elif MG_ARCH_UNIX
FILE *fp = fopen("/dev/urandom", "rb");
@ -4223,10 +4224,8 @@ void mg_random(void *buf, size_t len) {
fclose(fp);
}
#endif
// Fallback to a pseudo random gen
if (!done) {
while (len--) *p++ = (unsigned char) (rand() & 255);
}
// If everything above did not work, fallback to a pseudo random generator
while (!done && len--) *p++ = (unsigned char) (rand() & 255);
}
#endif

View File

@ -64,6 +64,7 @@ void mg_random(void *buf, size_t len) {
unsigned char *p = (unsigned char *) buf;
#if MG_ARCH == MG_ARCH_ESP32
while (len--) *p++ = (unsigned char) (esp_random() & 255);
done = true;
#elif MG_ARCH == MG_ARCH_WIN32
#elif MG_ARCH_UNIX
FILE *fp = fopen("/dev/urandom", "rb");
@ -72,10 +73,8 @@ void mg_random(void *buf, size_t len) {
fclose(fp);
}
#endif
// Fallback to a pseudo random gen
if (!done) {
while (len--) *p++ = (unsigned char) (rand() & 255);
}
// If everything above did not work, fallback to a pseudo random generator
while (!done && len--) *p++ = (unsigned char) (rand() & 255);
}
#endif