aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/certutils.py11
-rw-r--r--netlib/debug.py2
2 files changed, 12 insertions, 1 deletions
diff --git a/netlib/certutils.py b/netlib/certutils.py
index 9eb41d03..bdc2b77e 100644
--- a/netlib/certutils.py
+++ b/netlib/certutils.py
@@ -169,6 +169,7 @@ class CertStore(object):
"""
Implements an in-memory certificate store.
"""
+ STORE_CAP = 100
def __init__(
self,
@@ -181,6 +182,15 @@ class CertStore(object):
self.default_chain_file = default_chain_file
self.dhparams = dhparams
self.certs = dict()
+ self.expire_queue = []
+
+ def expire(self, entry):
+ self.expire_queue.append(entry)
+ if len(self.expire_queue) > self.STORE_CAP:
+ d = self.expire_queue.pop(0)
+ for k, v in list(self.certs.items()):
+ if v == d:
+ del self.certs[k]
@staticmethod
def load_dhparam(path):
@@ -342,6 +352,7 @@ class CertStore(object):
privatekey=self.default_privatekey,
chain_file=self.default_chain_file)
self.certs[(commonname, tuple(sans))] = entry
+ self.expire(entry)
return entry.cert, entry.privatekey, entry.chain_file
diff --git a/netlib/debug.py b/netlib/debug.py
index 657d4465..450b058a 100644
--- a/netlib/debug.py
+++ b/netlib/debug.py
@@ -91,7 +91,7 @@ def dump_info(signal=None, frame=None, file=sys.stdout, testing=False): # pragm
itms = list(d.items())
itms.sort(key=lambda x: x[1])
for i in itms[-20:]:
- print(i[1], i[0])
+ print(i[1], i[0], file=file)
print("****************************************************", file=file)
if not testing: