diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index f1d76ddfda827e6a7fe5cc8ca49c81bd5acb4743..50e03b58a6b40ab6356d14b2a9e36af440436134 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -297,15 +297,15 @@ DLLEXPORT void DLLCALL sbbs_srand()
 
 	xp_randomize();
 #if defined(HAS_DEV_RANDOM) && defined(RANDOM_DEV)
-	int     rf;
+	int     rf,rd=0;
 
-	if((rf=open(RANDOM_DEV, O_RDONLY))!=-1) {
-		read(rf, &seed, sizeof(seed));
+	if((rf=open(RANDOM_DEV, O_RDONLY|O_NONBLOCK))!=-1) {
+		rd=read(rf, &seed, sizeof(seed));
 		close(rf);
 	}
-#else
-	seed = time32(NULL) ^ (DWORD)GetCurrentThreadId();
+	if(rd != sizeof(seed))
 #endif
+		seed = time32(NULL) ^ (DWORD)GetCurrentThreadId();
 
  	srand(seed);
 	sbbs_random(10);	/* Throw away first number */