diff --git a/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml b/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml
index ab142e21f..f1ba08953 100644
--- a/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml
+++ b/dnf5daemon-server/dbus/interfaces/org.rpm.dnf.v0.Goal.xml
@@ -106,6 +106,13 @@ along with libdnf. If not, see .
+
+
+
+
diff --git a/dnf5daemon-server/services/goal/goal.cpp b/dnf5daemon-server/services/goal/goal.cpp
index 0052441b8..3aa1c6a7d 100644
--- a/dnf5daemon-server/services/goal/goal.cpp
+++ b/dnf5daemon-server/services/goal/goal.cpp
@@ -114,6 +114,10 @@ void Goal::dbus_register() {
[this](sdbus::MethodCall call) -> void {
session.get_threads_manager().handle_method(*this, &Goal::cancel, call, session.session_locale);
});
+ dbus_object->registerMethod(
+ dnfdaemon::INTERFACE_GOAL, "reset", "", {}, "", {}, [this](sdbus::MethodCall call) -> void {
+ session.get_threads_manager().handle_method(*this, &Goal::reset, call, session.session_locale);
+ });
}
sdbus::MethodReply Goal::resolve(sdbus::MethodCall & call) {
@@ -346,3 +350,9 @@ sdbus::MethodReply Goal::cancel(sdbus::MethodCall & call) {
reply << error_msg;
return reply;
}
+
+sdbus::MethodReply Goal::reset(sdbus::MethodCall & call) {
+ session.reset_goal();
+ auto reply = call.createReply();
+ return reply;
+}
diff --git a/dnf5daemon-server/services/goal/goal.hpp b/dnf5daemon-server/services/goal/goal.hpp
index d19b6001e..bbf3d9086 100644
--- a/dnf5daemon-server/services/goal/goal.hpp
+++ b/dnf5daemon-server/services/goal/goal.hpp
@@ -37,6 +37,7 @@ class Goal : public IDbusSessionService {
sdbus::MethodReply get_transaction_problems(sdbus::MethodCall & call);
sdbus::MethodReply do_transaction(sdbus::MethodCall & call);
sdbus::MethodReply cancel(sdbus::MethodCall & call);
+ sdbus::MethodReply reset(sdbus::MethodCall & call);
};
#endif