From 86296db16ac7fe09572f104672e32618b07b4414 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 4 Jun 2009 02:04:44 +0200 Subject: properly pass error codes to the client --- rtkit-daemon.c | 22 ++++++++++++++++++---- 1 file 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; } -- cgit