summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@play-bow.org>2016-08-04 05:58:22 -0700
committerGitHub <noreply@github.com>2016-08-04 05:58:22 -0700
commit6a6d2af0dcc94867f6b518d453aeaa7c05fb3352 (patch)
treee605eb15f808e66bd0dd27e2e99debf95c4f38bb
parent5ea92537d776687e1718a3fba11ff5509166f6e8 (diff)
parentbb64f4481a8d8c8d278a32e478338ec74c479107 (diff)
downloaddnspython-6a6d2af0dcc94867f6b518d453aeaa7c05fb3352.tar.gz
Merge pull request #194 from avylove/entropy_a
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)