From a370643cc606bbb4e6653e94dfd96788b61f6f75 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 20 May 2013 14:12:52 -0400 Subject: [PATCH 5/8] daemon: don't exclude system users This client already handles filtering system users from the cached user list, so there's no point in doing it daemon side. Furthermore, it's harmful since then clients never get informed when a user account type changes from a system account to a user account. Let the client do the filtering. https://bugs.freedesktop.org/show_bug.cgi?id=64769 --- src/daemon.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/daemon.c b/src/daemon.c index 264434e..5087145 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -1022,65 +1022,60 @@ list_user_data_new (Daemon *daemon, data->context = context; return data; } static void list_user_data_free (ListUserData *data) { g_object_unref (data->daemon); g_free (data); } static gboolean finish_list_cached_users (gpointer user_data) { ListUserData *data = user_data; GPtrArray *object_paths; GHashTableIter iter; const gchar *name; User *user; uid_t uid; const gchar *shell; object_paths = g_ptr_array_new (); g_hash_table_iter_init (&iter, data->daemon->priv->users); while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&user)) { uid = user_get_uid (user); shell = user_get_shell (user); - if (user_get_system_account (user)) { - g_debug ("user %s %ld is system account, so excluded", name, (long) uid); - continue; - } - if (daemon_local_user_is_excluded (data->daemon, name, shell, NULL)) { g_debug ("user %s %ld excluded", name, (long) uid); continue; } g_debug ("user %s %ld not excluded", name, (long) uid); g_ptr_array_add (object_paths, (gpointer) user_get_object_path (user)); } g_ptr_array_add (object_paths, NULL); accounts_accounts_complete_list_cached_users (NULL, data->context, (const gchar * const *) object_paths->pdata); g_ptr_array_free (object_paths, TRUE); list_user_data_free (data); return FALSE; } static gboolean daemon_list_cached_users (AccountsAccounts *accounts, GDBusMethodInvocation *context) { Daemon *daemon = (Daemon*)accounts; ListUserData *data; data = list_user_data_new (daemon, context); if (daemon->priv->reload_id > 0) { /* reload in progress, wait a bit */ -- 1.8.2.1