aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/async.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2010-05-31 03:24:15 +0000
committerRob Austein <sra@hactrn.net>2010-05-31 03:24:15 +0000
commit72a37fa08a82f972f23b817f7a4671765def710b (patch)
tree372e630d771e150943642885e4c6cb92327bdef4 /rpkid/rpki/async.py
parent1f95c1ecd843f99257774a51d355477b3a819065 (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.py12
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."""