diff --git a/src/bridge/DBus.py b/src/bridge/DBus.py index d53531a4..5bbffdf8 100755 --- a/src/bridge/DBus.py +++ b/src/bridge/DBus.py @@ -42,6 +42,9 @@ class InternalError(dbus.DBusException): class AsyncNotDeferred(dbus.DBusException): _dbus_error_name = const_ERROR_PREFIX + ".AsyncNotDeferred" +class DeferredNotAsync(dbus.DBusException): + _dbus_error_name = const_ERROR_PREFIX + ".DeferredNotAsync" + class GenericException(dbus.DBusException): def __init__(self, twisted_error): super(GenericException,self).__init__() @@ -82,6 +85,9 @@ class DbusObject(dbus.service.Object): result.addCallback(callback) result.addErrback(lambda err:errback(GenericException(err))) else: + if isinstance(result, Deferred): + error("Synchrone method [%s] return a Deferred." % name) + raise DeferredNotAsync return result ### signals ### diff --git a/src/bridge/bridge_constructor/dbus_core_template.py b/src/bridge/bridge_constructor/dbus_core_template.py index 9097d672..da5c6942 100644 --- a/src/bridge/bridge_constructor/dbus_core_template.py +++ b/src/bridge/bridge_constructor/dbus_core_template.py @@ -42,6 +42,9 @@ class InternalError(dbus.DBusException): class AsyncNotDeferred(dbus.DBusException): _dbus_error_name = const_ERROR_PREFIX + ".AsyncNotDeferred" +class DeferredNotAsync(dbus.DBusException): + _dbus_error_name = const_ERROR_PREFIX + ".DeferredNotAsync" + class GenericException(dbus.DBusException): def __init__(self, twisted_error): super(GenericException,self).__init__() @@ -82,6 +85,9 @@ class DbusObject(dbus.service.Object): result.addCallback(callback) result.addErrback(lambda err:errback(GenericException(err))) else: + if isinstance(result, Deferred): + error("Synchrone method [%s] return a Deferred." % name) + raise DeferredNotAsync return result ### signals ###