diff --git a/ChangeLog b/ChangeLog index 0b8782eec..bd9be5f3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Deluge 1.0.3 (In Development) pause/resume. * Fix issue where fastresume files would be rejected when using FAT32. This would cause the torrent to be rechecked on every startup. + * Fix ip filtering Deluge 1.0.2 (10 October 2008) Core: diff --git a/deluge/core/core.py b/deluge/core/core.py index f70c55af8..7bebe46e6 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -223,6 +223,12 @@ class Core( self.settings.send_redundant_have = True self.session.set_settings(self.settings) + # Create an ip filter + self.ip_filter = lt.ip_filter() + # This keeps track of the timer to set the ip filter.. We do this a few + # seconds aftering adding a rule so that 'batch' adding of rules isn't slow. + self._set_ip_filter_timer = None + # Load metadata extension self.session.add_extension(lt.create_metadata_plugin) @@ -614,12 +620,13 @@ class Core( def export_block_ip_range(self, range): """Block an ip range""" - try: - self.ip_filter.add_rule(range[0], range[1], 1) - except AttributeError: - self.export_reset_ip_filter() - self.ip_filter.add_rule(range[0], range[1], 1) - + self.ip_filter.add_rule(range[0], range[1], 1) + + # Start a 2 second timer (and remove the previous one if it exists) + if self._set_ip_filter_timer: + gobject.source_remove(self._set_ip_filter_timer) + self._set_ip_filter_timer = gobject.timeout_add(2000, self.session.set_ip_filter, self.ip_filter) + def export_reset_ip_filter(self): """Clears the ip filter""" self.ip_filter = lt.ip_filter()