summaryrefslogtreecommitdiff
path: root/src/up-daemon.c
diff options
context:
space:
mode:
authorMatthias Clasen <matthias.clasen@gmail.com>2010-08-19 13:04:38 +0200
committerMartin Pitt <martin.pitt@ubuntu.com>2010-08-19 13:04:38 +0200
commit3967e062ef5a58c4f3f283f34d591c6e8a5d8788 (patch)
tree99ba577a7f76857c5871267077c0da86d7c6e556 /src/up-daemon.c
parentd815c491eb105c49a7dbcb29c355ca9aaa8d92c4 (diff)
downloadupower-3967e062ef5a58c4f3f283f34d591c6e8a5d8788.tar.gz
Fix double D-BUS return in up_daemon_*_allowed
Do not send a D-BUS return message any more in up_polkit_is_allowed(), since this makes it hard for callers to ensure that they return exactly one result to the D-BUS caller. Instead, just pass a GError to the caller. Update up_daemon_suspend_allowed() and up_daemon_hibernate_allowed() accordingly, to always return either a result or an error. Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
Diffstat (limited to 'src/up-daemon.c')
-rw-r--r--src/up-daemon.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/up-daemon.c b/src/up-daemon.c
index 40bab80..532ebe8 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -511,13 +511,21 @@ up_daemon_suspend_allowed (UpDaemon *daemon, DBusGMethodInvocation *context)
gboolean ret;
PolkitSubject *subject = NULL;
UpDaemonPrivate *priv = daemon->priv;
+ GError *error;
subject = up_polkit_get_subject (priv->polkit, context);
if (subject == NULL)
goto out;
- ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", context);
- dbus_g_method_return (context, ret);
+ error = NULL;
+ ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", &error);
+ if (error) {
+ dbus_g_method_return_error (context, error);
+ g_error_free (error);
+ }
+ else {
+ dbus_g_method_return (context, ret);
+ }
out:
if (subject != NULL)
@@ -627,13 +635,21 @@ up_daemon_hibernate_allowed (UpDaemon *daemon, DBusGMethodInvocation *context)
gboolean ret;
PolkitSubject *subject = NULL;
UpDaemonPrivate *priv = daemon->priv;
+ GError *error;
subject = up_polkit_get_subject (priv->polkit, context);
if (subject == NULL)
goto out;
- ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", context);
- dbus_g_method_return (context, ret);
+ error = NULL;
+ ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", &error);
+ if (error) {
+ dbus_g_method_return_error (context, error);
+ g_error_free (error);
+ }
+ else {
+ dbus_g_method_return (context, ret);
+ }
out:
if (subject != NULL)