"Remote Errors" now are actually forwarded as such
authorPhilip Rauwolf <rauwolf@itestra.de>
Mon, 4 Mar 2013 17:44:33 +0000 (18:44 +0100)
committerPhilip Rauwolf <rauwolf@itestra.de>
Mon, 4 Mar 2013 17:44:33 +0000 (18:44 +0100)
src/CommonAPI/DBus/DBusConnection.cpp
src/CommonAPI/DBus/DBusConnection.h

index 1111cf5..4404d96 100644 (file)
@@ -180,12 +180,16 @@ void DBusConnection::onLibdbusPendingCallNotifyThunk(::DBusPendingCall* libdbusP
 
        auto dbusMessageReplyAsyncHandler = reinterpret_cast<DBusMessageReplyAsyncHandler*>(userData);
 
-       ::DBusMessage* libdbusMessage = dbus_pending_call_steal_reply(
-                       libdbusPendingCall);
+       ::DBusMessage* libdbusMessage = dbus_pending_call_steal_reply(libdbusPendingCall);
        const bool increaseLibdbusMessageReferenceCount = false;
        DBusMessage dbusMessage(libdbusMessage, increaseLibdbusMessageReferenceCount);
+       CallStatus callStatus = CallStatus::SUCCESS;
 
-       dbusMessageReplyAsyncHandler->onDBusMessageReply(CallStatus::SUCCESS, dbusMessage);
+       if (!dbusMessage.isMethodReturnType()) {
+               callStatus = CallStatus::REMOTE_ERROR;
+       }
+
+       dbusMessageReplyAsyncHandler->onDBusMessageReply(callStatus, dbusMessage);
 
        // libdbus calls the Cleanup method below
        dbus_pending_call_unref(libdbusPendingCall);
index 1c1e6a7..454d2b1 100644 (file)
@@ -120,7 +120,7 @@ class DBusConnection: public DBusProxyConnection, public std::enable_shared_from
 
        ::DBusHandlerResult onLibdbusSignalFilter(::DBusMessage* libdbusMessage);
 
-       static void onLibdbusPendingCallNotifyThunk(::DBusPendingCall* libdbusPendingCall, void *userData);
+       static void onLibdbusPendingCallNotifyThunk(::DBusPendingCall* libdbusPendingCall, voiduserData);
        static void onLibdbusDataCleanup(void* userData);
 
        static ::DBusHandlerResult onLibdbusObjectPathMessageThunk(::DBusConnection* libdbusConnection,