diff --git a/src/Connection.cpp b/src/Connection.cpp index db8df9b0..2a51bd58 100644 --- a/src/Connection.cpp +++ b/src/Connection.cpp @@ -587,20 +587,20 @@ std::vector Connection::to_strv(const std::vector& return strv; } -int Connection::sdbus_match_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error */*retError*/) +int Connection::sdbus_match_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError) { auto* matchInfo = static_cast(userData); auto message = Message::Factory::create(sdbusMessage, &matchInfo->connection.getSdBusInterface()); - matchInfo->callback(message); - return 0; + auto ok = invokeHandlerAndCatchErrors([&](){ matchInfo->callback(message); }, retError); + return ok ? 0 : -1; } -int Connection::sdbus_match_install_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error */*retError*/) +int Connection::sdbus_match_install_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError) { auto* matchInfo = static_cast(userData); auto message = Message::Factory::create(sdbusMessage, &matchInfo->connection.getSdBusInterface()); - matchInfo->installCallback(message); - return 0; + auto ok = invokeHandlerAndCatchErrors([&](){ matchInfo->installCallback(message); }, retError); + return ok ? 0 : -1; } Connection::EventFd::EventFd()