]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
DBus: Improve error reporting
authorJohannes Berg <johannes.berg@intel.com>
Wed, 2 Feb 2011 15:03:32 +0000 (17:03 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 2 Feb 2011 15:03:32 +0000 (17:03 +0200)
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
wpa_supplicant/dbus/dbus_new_helpers.c

index 06749dbe99657c684b7d4e8c5f736309b76ca6a7..6e6e842c8fdb88cb91e8e0bf044569853452b9ab 100644 (file)
@@ -552,6 +552,7 @@ int wpa_dbus_register_object_per_iface(
        struct wpa_dbus_object_desc *obj_desc)
 {
        DBusConnection *con;
+       DBusError error;
 
        DBusObjectPathVTable vtable = {
                &free_dbus_object_desc_cb, &message_handler,
@@ -566,14 +567,24 @@ int wpa_dbus_register_object_per_iface(
        obj_desc->connection = con;
        obj_desc->path = os_strdup(path);
 
+       dbus_error_init(&error);
        /* Register the message handler for the interface functions */
-       if (!dbus_connection_register_object_path(con, path, &vtable,
-                                                 obj_desc)) {
-               wpa_printf(MSG_ERROR, "dbus: Could not set up message "
-                          "handler for interface %s object %s", ifname, path);
+       if (!dbus_connection_try_register_object_path(con, path, &vtable,
+                                                     obj_desc, &error)) {
+               if (!os_strcmp(error.name, DBUS_ERROR_OBJECT_PATH_IN_USE)) {
+                       wpa_printf(MSG_DEBUG, "dbus: %s", error.message);
+               } else {
+                       wpa_printf(MSG_ERROR, "dbus: Could not set up message "
+                                  "handler for interface %s object %s",
+                                  ifname, path);
+                       wpa_printf(MSG_ERROR, "dbus error: %s", error.name);
+                       wpa_printf(MSG_ERROR, "dbus: %s", error.message);
+               }
+               dbus_error_free(&error);
                return -1;
        }
 
+       dbus_error_free(&error);
        return 0;
 }