From c45e4b2baeb7500002ad8a7c77ef76f86851d321 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Fri, 30 Oct 2020 15:01:30 +0100 Subject: [PATCH] mingw: Hack for missing /dev/urandom. * 8sync/systems/websocket/client.scm (open-entropy-port): Add hack for missing /dev/urandom. --- 8sync/systems/websocket/client.scm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/8sync/systems/websocket/client.scm b/8sync/systems/websocket/client.scm index 107aea9..4ae342d 100644 --- a/8sync/systems/websocket/client.scm +++ b/8sync/systems/websocket/client.scm @@ -308,9 +308,14 @@ KEY." (define (open-entropy-port) "Return an open input port to a reliable source of entropy for the current system." - ;; XXX: This works on GNU/Linux and OS X systems, but this isn't - ;; exactly portable. - (open-input-file "/dev/urandom")) + (if (file-exists? "/dev/urandom") + (open-input-file "/dev/urandom") + ;; XXX: This works as a fall back but this isn't exactly a + ;; reliable source of entropy. + (make-soft-port (vector (const #f) (const #f) (const #f) + (lambda _ (let ((r (random 256))) (integer->char r))) + (const #f) + (const #t)) "r"))) (define-method (websocket-close (websocket )) "Close the WebSocket connection for the client WEBSOCKET." -- 2.31.1