From 4dbc93b1fa0f9e827bc14fcb59339a1cb7faa8b3 Mon Sep 17 00:00:00 2001 From: John Garland Date: Thu, 7 Jan 2010 00:45:47 +0000 Subject: [PATCH] Rewrote call to use maybeDeferred (this handles methods that return deferreds). Fixes #1114. --- deluge/ui/client.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/deluge/ui/client.py b/deluge/ui/client.py index 3cd73a4ad..7a3cde372 100644 --- a/deluge/ui/client.py +++ b/deluge/ui/client.py @@ -422,22 +422,15 @@ class DaemonClassicProxy(DaemonProxy): def call(self, method, *args, **kwargs): #log.debug("call: %s %s %s", method, args, kwargs) - d = defer.Deferred() + import copy + try: m = self.__daemon.rpcserver.get_object_method(method) except Exception, e: log.exception(e) - d.errback(e) - return d - - try: - import copy - result = m(*copy.deepcopy(args), **copy.deepcopy(kwargs)) - except Exception, e: - d.errback(e) + return defer.fail(e) else: - d.callback(result) - return d + return defer.maybeDeferred(m, *copy.deepcopy(args), **copy.deepcopy(kwargs)) def register_event_handler(self, event, handler): """