diff options
-rw-r--r-- | rpkid/rpki/x509.py | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/rpkid/rpki/x509.py b/rpkid/rpki/x509.py index 7e0e37ea..8883f3ce 100644 --- a/rpkid/rpki/x509.py +++ b/rpkid/rpki/x509.py @@ -233,6 +233,7 @@ class DER_object(object): setattr(self, a, None) self.filename = None self.timestamp = None + self.failures = 0 def __init__(self, **kw): """ @@ -287,19 +288,26 @@ class DER_object(object): """ if self.filename is None: return - filename = self.filename - timestamp = os.stat(self.filename).st_mtime - if self.timestamp is None or self.timestamp < timestamp: - rpki.log.debug("Updating %s, timestamp %s" % (filename, rpki.sundial.datetime.fromtimestamp(timestamp))) - f = open(filename, "rb") - value = f.read() - f.close() - if self.pem_converter.looks_like_PEM(value): - value = self.pem_converter.to_DER(value) - self.clear() - self.DER = value - self.filename = filename - self.timestamp = timestamp + try: + filename = self.filename + timestamp = os.stat(self.filename).st_mtime + if self.timestamp is None or self.timestamp < timestamp: + rpki.log.debug("Updating %s, timestamp %s" % (filename, rpki.sundial.datetime.fromtimestamp(timestamp))) + f = open(filename, "rb") + value = f.read() + f.close() + if self.pem_converter.looks_like_PEM(value): + value = self.pem_converter.to_DER(value) + self.clear() + self.DER = value + self.filename = filename + self.timestamp = timestamp + except (IOError, OSError), e: + self.failures += 1 + if self.failures % 100 == 1: + rpki.log.warn("Could not auto_update %r (failures %d): %s" % (self, self.failures, e)) + else: + self.failures = 0 def check(self): """ |