# HG changeset patch # User Goffi # Date 1320701227 -3600 # Node ID 72c13313b6d68ccb0cd6cee6b2f349320ae7041e # Parent 6c20c76abdcc5c55098ed3efda40f3084d6fdbb1 bridge: added check that synchronous method does not return a deferred diff -r 6c20c76abdcc -r 72c13313b6d6 src/bridge/DBus.py --- a/src/bridge/DBus.py Mon Nov 07 00:09:22 2011 +0100 +++ b/src/bridge/DBus.py Mon Nov 07 22:27:07 2011 +0100 @@ -42,6 +42,9 @@ 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 @@ 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 -r 6c20c76abdcc -r 72c13313b6d6 src/bridge/bridge_constructor/dbus_core_template.py --- a/src/bridge/bridge_constructor/dbus_core_template.py Mon Nov 07 00:09:22 2011 +0100 +++ b/src/bridge/bridge_constructor/dbus_core_template.py Mon Nov 07 22:27:07 2011 +0100 @@ -42,6 +42,9 @@ 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 @@ 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 ###