diff options
author | Rob Austein <sra@hactrn.net> | 2010-05-31 03:24:15 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2010-05-31 03:24:15 +0000 |
commit | 72a37fa08a82f972f23b817f7a4671765def710b (patch) | |
tree | 372e630d771e150943642885e4c6cb92327bdef4 /rpkid/rpki/async.py | |
parent | 1f95c1ecd843f99257774a51d355477b3a819065 (diff) |
Better fix for timer.cancel().
svn path=/rpkid/rpki/async.py; revision=3268
Diffstat (limited to 'rpkid/rpki/async.py')
-rw-r--r-- | rpkid/rpki/async.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/rpkid/rpki/async.py b/rpkid/rpki/async.py index faf8e991..e0f9f84c 100644 --- a/rpkid/rpki/async.py +++ b/rpkid/rpki/async.py @@ -137,10 +137,10 @@ class timer(object): assert isinstance(self.when, rpki.sundial.datetime), "%r: Expecting a datetime, got %r" % (self, self.when) if self not in self.queue: self.queue.append(self) - self.queue.sort() + self.queue.sort(key = lambda x: x.when) def __cmp__(self, other): - return cmp(self.when, other.when) + return cmp(id(self), id(other)) if gc_debug: def __del__(self): @@ -152,9 +152,11 @@ class timer(object): """ if self.gc_debug: self.trace("Canceling %r" % self) - for i in xrange(len(self.queue) - 1, -1, -1): - if self.queue[i] is self: - del self.queue[i] + try: + while True: + self.queue.remove(self) + except ValueError: + pass def is_set(self): """Test whether this timer is currently set.""" |