Changeset 78:137726cdcd67

Show
Ignore:
Timestamp:
09/26/08 07:59:47 (1 year ago)
Author:
Allan Saddi <allan@saddi.com>
branch:
default
Message:

Re-seed random module after each fork.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • flup/server/preforkserver.py

    r61 r78  
    3434import errno 
    3535import signal 
     36import random 
     37import time 
    3638 
    3739try: 
     
    311313        """Main loop for children.""" 
    312314        requestCount = 0 
    313          
     315 
     316        # Re-seed random module 
     317        preseed = '' 
     318        # urandom only exists in Python >= 2.4 
     319        if hasattr(os, 'urandom'): 
     320            try: 
     321                preseed = os.urandom(16) 
     322            except NotImplementedError: 
     323                pass 
     324        # Have doubts about this. random.seed will just hash the string 
     325        random.seed('%s%s%s' % (preseed, os.getpid(), time.time())) 
     326        del preseed 
     327 
    314328        while True: 
    315329            # Wait for any activity on the main socket or parent socket.