eldbus: Call dbus_bus_register() for TYPE_ADDRESS connections
authorEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Thu, 27 Jun 2013 20:24:46 +0000 (17:24 -0300)
committerJosé Roberto de Souza <jose.souza@intel.com>
Mon, 5 Aug 2013 16:25:25 +0000 (13:25 -0300)
From D-Bus documentation:

http://dbus.freedesktop.org/doc/api/html/group__DBusBus.html

dbus_bus_register():

    If you open a bus connection with dbus_connection_open() or
    dbus_connection_open_private() you will have to dbus_bus_register()
    yourself, or make the appropriate registration method calls yourself.

Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
src/lib/eldbus_core.c

index a7af40f..f47d440 100644 (file)
@@ -989,13 +989,22 @@ _connection_get(Eldbus_Connection_Type type, const char *address)
    else
       conn->dbus_conn = dbus_bus_get_private(type - 1, &err);
 
-   if (dbus_error_is_set(&err))
+   if (!conn->dbus_conn || dbus_error_is_set(&err))
      {
         free(conn);
         ERR("Error connecting to bus: %s", err.message);
         return NULL;
      }
 
+   if (type == ELDBUS_CONNECTION_TYPE_ADDRESS &&
+       !dbus_bus_register(conn->dbus_conn, &err))
+     {
+        dbus_connection_close(conn->dbus_conn);
+        free(conn);
+        ERR("Error registering with bus: %s", err.message);
+        return NULL;
+     }
+
    eldbus_connection_setup(conn);
    conn->type = type;
    conn->refcount = 1;