From 88d0fceb2a2512077b81c1ca83c1702b9fb856e0 Mon Sep 17 00:00:00 2001 From: Goffi Date: Mon, 7 Nov 2011 22:27:07 +0100 Subject: [PATCH] bridge: added check that synchronous method does not return a deferred --- src/bridge/DBus.py | 6 ++++++ src/bridge/bridge_constructor/dbus_core_template.py | 6 ++++++ 2 files changed, 12 insertions(+) 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 ###