From 19b0128e11df9f08d287ea44eb4fde4cbb4521e1 Mon Sep 17 00:00:00 2001 From: Allan Saddi Date: Fri, 26 Sep 2008 07:59:47 -0700 Subject: Re-seed random module after each fork. --- flup/server/preforkserver.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/flup/server/preforkserver.py b/flup/server/preforkserver.py index 449284c..128293b 100644 --- a/flup/server/preforkserver.py +++ b/flup/server/preforkserver.py @@ -33,6 +33,8 @@ import socket import select import errno import signal +import random +import time try: import fcntl @@ -310,7 +312,19 @@ class PreforkServer(object): def _child(self, sock, parent): """Main loop for children.""" requestCount = 0 - + + # Re-seed random module + preseed = '' + # urandom only exists in Python >= 2.4 + if hasattr(os, 'urandom'): + try: + preseed = os.urandom(16) + except NotImplementedError: + pass + # Have doubts about this. random.seed will just hash the string + random.seed('%s%s%s' % (preseed, os.getpid(), time.time())) + del preseed + while True: # Wait for any activity on the main socket or parent socket. r, w, e = select.select([sock, parent], [], []) -- cgit v1.2.1