Send Mac policy parameters in CreateInterface dbus call.
[platform/upstream/connman.git] / gdbus / mainloop.c
old mode 100644 (file)
new mode 100755 (executable)
index 435fb93..b90a844
@@ -88,16 +88,22 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data)
        struct watch_info *info = data;
        unsigned int flags = 0;
        DBusDispatchStatus status;
+       DBusConnection *conn;
 
        if (cond & G_IO_IN)  flags |= DBUS_WATCH_READABLE;
        if (cond & G_IO_OUT) flags |= DBUS_WATCH_WRITABLE;
        if (cond & G_IO_HUP) flags |= DBUS_WATCH_HANGUP;
        if (cond & G_IO_ERR) flags |= DBUS_WATCH_ERROR;
 
+       /* Protect connection from being destroyed by dbus_watch_handle */
+       conn = dbus_connection_ref(info->conn);
+
        dbus_watch_handle(info->watch, flags);
 
-       status = dbus_connection_get_dispatch_status(info->conn);
-       queue_dispatch(info->conn, status);
+       status = dbus_connection_get_dispatch_status(conn);
+       queue_dispatch(conn, status);
+
+       dbus_connection_unref(conn);
 
        return TRUE;
 }
@@ -316,6 +322,7 @@ DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name,
                return NULL;
 
        if (setup_bus(conn, name, error) == FALSE) {
+               dbus_connection_close(conn);
                dbus_connection_unref(conn);
                return NULL;
        }