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);
::DBusHandlerResult onLibdbusSignalFilter(::DBusMessage* libdbusMessage);
- static void onLibdbusPendingCallNotifyThunk(::DBusPendingCall* libdbusPendingCall, void *userData);
+ static void onLibdbusPendingCallNotifyThunk(::DBusPendingCall* libdbusPendingCall, void* userData);
static void onLibdbusDataCleanup(void* userData);
static ::DBusHandlerResult onLibdbusObjectPathMessageThunk(::DBusConnection* libdbusConnection,