summaryrefslogtreecommitdiffstats
path: root/rtkit-daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtkit-daemon.c')
-rw-r--r--rtkit-daemon.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/rtkit-daemon.c b/rtkit-daemon.c
index 6a9f4ff..bdfb598 100644
--- a/rtkit-daemon.c
+++ b/rtkit-daemon.c
@@ -500,6 +500,20 @@ fail:
return r;
}
+static const char *translate_error(int error) {
+ switch (error) {
+ case -EPERM:
+ case -EACCES:
+ return DBUS_ERROR_ACCESS_DENIED;
+
+ case -ENOMEM:
+ return DBUS_ERROR_NO_MEMORY;
+
+ default:
+ return DBUS_ERROR_FAILED;
+ }
+}
+
static DBusHandlerResult dbus_handler(DBusConnection *c, DBusMessage *m, void *userdata) {
DBusError error;
DBusMessage *r = NULL;
@@ -525,12 +539,12 @@ static DBusHandlerResult dbus_handler(DBusConnection *c, DBusMessage *m, void *u
}
if ((ret = process_fill(&p, c, m)) < 0) {
- assert_se(r = dbus_message_new_error_printf(m, DBUS_ERROR_FAILED, strerror(-ret)));
+ assert_se(r = dbus_message_new_error_printf(m, translate_error(ret), strerror(-ret)));
goto finish;
}
if ((ret = process_set_realtime(&p, (pid_t) thread, priority))) {
- assert_se(r = dbus_message_new_error_printf(m, DBUS_ERROR_FAILED, strerror(-ret)));
+ assert_se(r = dbus_message_new_error_printf(m, translate_error(ret), strerror(-ret)));
goto finish;
}
@@ -555,12 +569,12 @@ static DBusHandlerResult dbus_handler(DBusConnection *c, DBusMessage *m, void *u
}
if ((ret = process_fill(&p, c, m)) < 0) {
- assert_se(r = dbus_message_new_error_printf(m, DBUS_ERROR_FAILED, strerror(-ret)));
+ assert_se(r = dbus_message_new_error_printf(m, translate_error(ret), strerror(-ret)));
goto finish;
}
if ((ret = process_set_high_priority(&p, (pid_t) thread, priority))) {
- assert_se(r = dbus_message_new_error_printf(m, DBUS_ERROR_FAILED, strerror(-ret)));
+ assert_se(r = dbus_message_new_error_printf(m, translate_error(ret), strerror(-ret)));
goto finish;
}