daemon fix: bus_context_new function failure behavior fixed:
authorLukasz Stempien <l.stempien@samsung.com>
Wed, 2 Oct 2013 11:35:25 +0000 (13:35 +0200)
committerLukasz Stempien <l.stempien@samsung.com>
Wed, 2 Oct 2013 11:35:25 +0000 (13:35 +0200)
- dbus_daemon_as_client: connection type changed to private
- dbus_server_init_mini: vtable, refcount, watches, timeouts init added.

Change-Id: Iaeb7476888f5f5774d0d4943cf39bb8368513035
Signed-off-by: Lukasz Stempien <l.stempien@samsung.com>
bus/kdbus-d.c
dbus/dbus-server.c

index bd4832b..e3202e5 100644 (file)
@@ -103,7 +103,7 @@ DBusConnection* daemon_as_client(DBusBusType type, char* address, DBusError *err
 
        dbus_bus_set_bus_connection_address(type, address);
 
-       connection = dbus_bus_get(type, error);  /*todo possibly could be optimised by using lower functions*/
+       connection = dbus_bus_get_private(type, error);  /*todo possibly could be optimised by using lower functions*/
        if(connection == NULL)
                return NULL;
 
index a607605..f969403 100644 (file)
@@ -183,11 +183,23 @@ _dbus_server_init_base (DBusServer             *server,
   return FALSE;
 }
 
+static void mini_vtable_dummy_func(DBusServer *server)
+{
+    // Used to prevent assert errors. Pointer to function is passed to
+    // DBusServerVTable which is passed to server->vtable in
+    // dbus_server_init_mini function.
+}
+
 DBusServer*
 dbus_server_init_mini (char* address)
 {
        DBusServer *server;
 
+    static const DBusServerVTable dbus_server_init_mini_vtable = {
+        mini_vtable_dummy_func,
+        mini_vtable_dummy_func
+    };
+
        server = dbus_new0(struct DBusServer, 1);
        if(server == NULL)
                return NULL;
@@ -198,6 +210,18 @@ dbus_server_init_mini (char* address)
            goto failed;
        server->address = address;
 
+    server->vtable = &dbus_server_init_mini_vtable;
+
+    _dbus_atomic_inc (&server->refcount);
+
+    server->watches = _dbus_watch_list_new ();
+    if (server->watches == NULL)
+        goto failed;
+
+    server->timeouts = _dbus_timeout_list_new();
+    if (server->timeouts == NULL)
+        goto failed;
+
        return server;
 
 failed: