Rewrote call to use maybeDeferred (this handles methods that return deferreds).

Fixes #1114.
This commit is contained in:
John Garland 2010-01-07 00:45:47 +00:00
parent 547cfa6339
commit 34b2ada0db
2 changed files with 5 additions and 11 deletions

View file

@ -11,6 +11,7 @@
==== GtkUI ====
* Fix #1104, #735 use path.utf-8 if available
* Fix #1114 test active port not working in classic mode
==== Console ====
* Fix #1115 not showing usage for the 'debug' command

View file

@ -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):
"""