From 56ee5de2bd6bfef3aa53d8984c02211c13dac360 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 29 Jun 2017 21:15:30 +0200 Subject: [PATCH] update: invalidate cache if allow_disabled_algorithms changes Since the cache contains implicitly the result of the jarsigner verify, if the allow_disabled_algorithms config changes, then the apkcache is invalid. --- fdroidserver/update.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 1e368f6e..6e77d88c 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -423,20 +423,35 @@ def get_cache_file(): def get_cache(): - """ + """Get the cached dict of the APK index + Gather information about all the apk files in the repo directory, - using cached data if possible. + using cached data if possible. Some of the index operations take a + long time, like calculating the SHA-256 and verifying the APK + signature. + + The cache is invalidated if the metadata version is different, or + the 'allow_disabled_algorithms' config/option is different. In + those cases, there is no easy way to know what has changed from + the cache, so just rerun the whole thing. + :return: apkcache + """ apkcachefile = get_cache_file() + ada = options.allow_disabled_algorithms or config['allow_disabled_algorithms'] if not options.clean and os.path.exists(apkcachefile): with open(apkcachefile, 'rb') as cf: apkcache = pickle.load(cf, encoding='utf-8') - if apkcache.get("METADATA_VERSION") != METADATA_VERSION: + if apkcache.get("METADATA_VERSION") != METADATA_VERSION \ + or apkcache.get('allow_disabled_algorithms') != ada: apkcache = {} else: apkcache = {} + apkcache["METADATA_VERSION"] = METADATA_VERSION + apkcache['allow_disabled_algorithms'] = ada + return apkcache @@ -445,7 +460,6 @@ def write_cache(apkcache): cache_path = os.path.dirname(apkcachefile) if not os.path.exists(cache_path): os.makedirs(cache_path) - apkcache["METADATA_VERSION"] = METADATA_VERSION with open(apkcachefile, 'wb') as cf: pickle.dump(apkcache, cf) -- 2.30.2