Index: deluge/ui/client.py =================================================================== --- deluge/ui/client.py (revision 2816) +++ deluge/ui/client.py (working copy) @@ -83,22 +83,30 @@ def do_multicall(self, block=False): if len(self._callbacks) == 0: return True + + def invoke_callbacks(callbacks, value): + try: + for callback in callbacks: + if block == False: + gobject.idle_add(callback, value) + else: + callback(value) + except: + pass if self._multi is not None and self._core is not None: try: try: for i, ret in enumerate(self._multi()): - try: - for callback in self._callbacks[i]: - if block == False: - gobject.idle_add(callback, ret) - else: - callback(ret) - except: - pass + invoke_callbacks(self._callbacks[i], ret) except socket.error, e: log.warning("Could not contact daemon: %s", e) self.set_core_uri(None) + except deluge.xmlrpclib.Fault, e: + try: + deluge.error.from_xmlrpc_fault(e) + except deluge.error.DelugeError, e: + invoke_callbacks(self._callbacks[i], e) finally: self._callbacks = []