summaryrefslogtreecommitdiff
path: root/config/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'config/config.c')
-rw-r--r--config/config.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/config/config.c b/config/config.c
index 9828091f4..4861d9ead 100644
--- a/config/config.c
+++ b/config/config.c
@@ -280,11 +280,6 @@ configMessage(DBusConnection *connection, DBusMessage *message, void *closure)
if (strcmp(dbus_message_get_interface(message),
"org.x.config.input") == 0) {
- if (!dbus_message_iter_init(message, &iter)) {
- ErrorF("[config] failed to init iterator\n");
- dbus_error_free(&error);
- return DBUS_HANDLER_RESULT_NEED_MEMORY; /* ?? */
- }
if (!(reply = dbus_message_new_method_return(message))) {
ErrorF("[config] failed to create the reply message\n");
@@ -292,18 +287,30 @@ configMessage(DBusConnection *connection, DBusMessage *message, void *closure)
return DBUS_HANDLER_RESULT_NEED_MEMORY;
}
dbus_message_iter_init_append(reply, &r_iter);
-
- if (strcmp(dbus_message_get_member(message), "add") == 0)
- ret = configAddDevice(message, &iter, reply, &r_iter, &error);
- else if (strcmp(dbus_message_get_member(message), "remove") == 0)
- ret = configRemoveDevice(message, &iter, &error);
- else if (strcmp(dbus_message_get_member(message), "listDevices") == 0)
- ret = configListDevices(message, &iter, reply, &r_iter, &error);
- if (ret != BadDrawable && ret != BadAlloc) {
+ /* listDevices doesn't take any arguments */
+ if (strcmp(dbus_message_get_member(message), "listDevices") == 0)
+ ret = configListDevices(message, NULL, reply, &r_iter, &error);
+ else
+ {
+ if (!dbus_message_iter_init(message, &iter)) {
+ ErrorF("[config] failed to init iterator\n");
+ dbus_message_unref(reply);
+ dbus_error_free(&error);
+ return DBUS_HANDLER_RESULT_NEED_MEMORY; /* ?? */
+ }
+
+ if (strcmp(dbus_message_get_member(message), "add") == 0)
+ ret = configAddDevice(message, &iter, reply, &r_iter, &error);
+ else if (strcmp(dbus_message_get_member(message), "remove") == 0)
+ ret = configRemoveDevice(message, &iter, &error);
+ }
+
+ if (ret != BadDrawable && ret != BadAlloc) {
if (!strlen(dbus_message_get_signature(reply)))
if (!dbus_message_iter_append_basic(&r_iter, DBUS_TYPE_INT32, &ret)) {
ErrorF("[config] couldn't append to iterator\n");
+ dbus_message_unref(reply);
dbus_error_free(&error);
return DBUS_HANDLER_RESULT_HANDLED;
}