summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvram Lubkin <git_hub@avram.us>2016-07-26 10:11:10 -0400
committerGitHub <noreply@github.com>2016-07-26 10:11:10 -0400
commitbb64f4481a8d8c8d278a32e478338ec74c479107 (patch)
treee605eb15f808e66bd0dd27e2e99debf95c4f38bb
parent5ea92537d776687e1718a3fba11ff5509166f6e8 (diff)
downloaddnspython-bb64f4481a8d8c8d278a32e478338ec74c479107.tar.gz
Reseed entropy pool after forking
-rw-r--r--dns/entropy.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/dns/entropy.py b/dns/entropy.py
index e340928..2211457 100644
--- a/dns/entropy.py
+++ b/dns/entropy.py
@@ -46,8 +46,10 @@ class EntropyPool(object):
if seed is not None:
self.stir(bytearray(seed))
self.seeded = True
+ self.seed_pid = os.getpid()
else:
self.seeded = False
+ self.seed_pid = 0
def stir(self, entropy, already_locked=False):
if not already_locked:
@@ -64,7 +66,7 @@ class EntropyPool(object):
self.lock.release()
def _maybe_seed(self):
- if not self.seeded:
+ if not self.seeded or self.seed_pid != os.getpid():
try:
seed = os.urandom(16)
except:
@@ -77,6 +79,8 @@ class EntropyPool(object):
except:
seed = str(time.time())
self.seeded = True
+ self.seed_pid = os.getpid()
+ self.digest = None
seed = bytearray(seed)
self.stir(seed, True)