From: Forrest Voight Date: Wed, 3 Oct 2012 01:55:42 +0000 (-0400) Subject: added cancellation support to util.deferral.GenericDeferrer X-Git-Tag: 8.0~19 X-Git-Url: https://git.novaco.in/?p=p2pool.git;a=commitdiff_plain;h=3a7f9ad217e6ae86a55fe4a78ca325d0ce22f4a4 added cancellation support to util.deferral.GenericDeferrer --- diff --git a/p2pool/util/deferral.py b/p2pool/util/deferral.py index dfc9515..71fe633 100644 --- a/p2pool/util/deferral.py +++ b/p2pool/util/deferral.py @@ -100,14 +100,17 @@ class GenericDeferrer(object): id = random.randrange(self.max_id) if id not in self.map: break - df = defer.Deferred() + def cancel(df): + df, timer = self.map.pop(id) + timer.cancel() + df = defer.Deferred(cancel) def timeout(): self.map.pop(id) df.errback(failure.Failure(defer.TimeoutError('in GenericDeferrer'))) self.on_timeout() timer = reactor.callLater(self.timeout, timeout) - self.func(id, *args, **kwargs) self.map[id] = df, timer + self.func(id, *args, **kwargs) return df def got_response(self, id, resp):