@@ -364,7 +364,7 @@ def do_remote(self):
364364 """
365365 Load a JWKS from a webpage.
366366
367- :return: True or False if load was successful
367+ :return: True if load was successful or False if remote hasn't been modified
368368 """
369369 # if self.verify_ssl is not None:
370370 # self.httpc_params["verify"] = self.verify_ssl
@@ -408,10 +408,12 @@ def do_remote(self):
408408 if hasattr (_http_resp , "headers" ):
409409 headers = getattr (_http_resp , "headers" )
410410 self .last_remote = headers .get ("last-modified" ) or headers .get ("date" )
411+ res = True
411412
412413 elif _http_resp .status_code == 304 : # Not modified
413414 LOGGER .debug ("%s not modified since %s" , self .source , self .last_remote )
414415 self .time_out = time .time () + self .cache_time
416+ res = False
415417
416418 else :
417419 LOGGER .warning (
@@ -424,7 +426,7 @@ def do_remote(self):
424426
425427 self .last_updated = time .time ()
426428 self .ignore_errors_until = None
427- return True
429+ return res
428430
429431 def _parse_remote_response (self , response ):
430432 """
@@ -465,7 +467,6 @@ def update(self):
465467 This is a forced update, will happen even if cache time has not elapsed.
466468 Replaced keys will be marked as inactive and not removed.
467469 """
468- res = True # An update was successful
469470 if self .source :
470471 _old_keys = self ._keys # just in case
471472
@@ -478,21 +479,25 @@ def update(self):
478479 self .do_local_jwk (self .source )
479480 elif self .fileformat == "der" :
480481 self .do_local_der (self .source , self .keytype , self .keyusage )
482+ updated = True
481483 elif self .remote :
482- res = self .do_remote ()
484+ updated = self .do_remote ()
483485 except Exception as err :
484486 LOGGER .error ("Key bundle update failed: %s" , err )
485487 self ._keys = _old_keys # restore
486488 return False
487489
488- now = time .time ()
489- for _key in _old_keys :
490- if _key not in self ._keys :
491- if not _key .inactive_since : # If already marked don't mess
492- _key .inactive_since = now
493- self ._keys .append (_key )
490+ if updated :
491+ now = time .time ()
492+ for _key in _old_keys :
493+ if _key not in self ._keys :
494+ if not _key .inactive_since : # If already marked don't mess
495+ _key .inactive_since = now
496+ self ._keys .append (_key )
497+ else :
498+ self ._keys = _old_keys
494499
495- return res
500+ return True
496501
497502 def get (self , typ = "" , only_active = True ):
498503 """
0 commit comments