From 5f57d64912b39b546c724f79eb0a3a15ecce7b0a Mon Sep 17 00:00:00 2001 From: Cameron Dale Date: Mon, 18 Feb 2008 16:03:18 -0800 Subject: [PATCH] Don't add files to the DHT if a hash could not be found for them. --- TODO | 8 -------- apt_dht/CacheManager.py | 2 +- apt_dht/apt_dht.py | 6 ++++-- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index 5f9555b..9cef5c7 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,3 @@ -Files for which a hash cannot be found should not be added to the DHT. - -If the hash can't found, it stands to reason that other peers will not -be able to find the hash either. So adding those files to the DHT will -just clutter it with useless information. Examples include Release.gpg, -Release, Translation-de.bz2, and Contents.gz. - - Use python-debian for parsing RFC 822 files. There are already routines for parsing these files, so there is no need diff --git a/apt_dht/CacheManager.py b/apt_dht/CacheManager.py index 517a009..c70cee2 100644 --- a/apt_dht/CacheManager.py +++ b/apt_dht/CacheManager.py @@ -211,7 +211,7 @@ class CacheManager: if self.scanning[0] == self.cache_dir: url = 'http:/' + file.path[len(self.cache_dir.path):] self.db.storeFile(file, result.digest()) - df = self.manager.new_cached_file(file, result, url) + df = self.manager.new_cached_file(file, result, url, True) if df is None: reactor.callLater(0, self._scanDirectories, None, walker) else: diff --git a/apt_dht/apt_dht.py b/apt_dht/apt_dht.py index 9d0241d..fd7b73d 100644 --- a/apt_dht/apt_dht.py +++ b/apt_dht/apt_dht.py @@ -152,15 +152,17 @@ class AptDHT: return getDefer return response - def new_cached_file(self, file_path, hash, url = None): + def new_cached_file(self, file_path, hash, url = None, forceDHT = False): """Add a newly cached file to the DHT. If the file was downloaded, set url to the path it was downloaded for. + Don't add a file to the DHT unless a hash was found for it + (but do add it anyway if forceDHT is True). """ if url: self.mirrors.updatedFile(url, file_path) - if self.my_addr and hash: + if self.my_addr and hash and (hash.expected() is not None or forceDHT): site = self.my_addr + ':' + str(config.getint('DEFAULT', 'PORT')) key = hash.norm(bits = config.getint(config.get('DEFAULT', 'DHT'), 'HASH_LENGTH')) storeDefer = self.dht.storeValue(key, site) -- 2.39.2