From 721f583db1668407da3a6d07fcc40df3d5c4cbec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanislav=20Angelovi=C4=8D?= Date: Tue, 5 Dec 2023 19:06:41 +0100 Subject: [PATCH] refactor: handle exceptions correctly also in match callback handlers (#386) This is a follow-up to #375. It covers match callback handlers that were missed in #375. --- src/Connection.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Connection.cpp b/src/Connection.cpp index db8df9b..2a51bd5 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()