network-manager-applet r888 - in trunk: . src/gconf-helpers



Author: dcbw
Date: Mon Sep 15 05:06:30 2008
New Revision: 888
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=888&view=rev

Log:
2008-09-15  Dan Williams  <dcbw redhat com>

	* src/gconf-helpers/gconf-helpers.c
		- (nm_gconf_write_connection, write_one_secret_to_keyring): split out
			writing of secrets into it's own function for clarity.  Fixes a
			regression introduced in r875 where secrets wouldn't get saved.



Modified:
   trunk/ChangeLog
   trunk/src/gconf-helpers/gconf-helpers.c

Modified: trunk/src/gconf-helpers/gconf-helpers.c
==============================================================================
--- trunk/src/gconf-helpers/gconf-helpers.c	(original)
+++ trunk/src/gconf-helpers/gconf-helpers.c	Mon Sep 15 05:06:30 2008
@@ -1176,6 +1176,36 @@
 } CopyOneSettingValueInfo;
 
 static void
+write_one_secret_to_keyring (NMSetting *setting,
+                             const char *key,
+                             const GValue *value,
+                             gboolean is_secret,
+                             gpointer user_data)
+{
+	CopyOneSettingValueInfo *info = (CopyOneSettingValueInfo *) user_data;
+	GType type = G_VALUE_TYPE (value);
+	const char *secret;
+
+	if (!is_secret)
+		return;
+
+	if (type != G_TYPE_STRING) {
+		g_warning ("Unhandled setting secret type (write) '%s/%s' : '%s'", 
+				 setting->name, key, g_type_name (type));
+		return;
+	}
+
+	secret = g_value_get_string (value);
+	if (secret && strlen (secret)) {
+		nm_gconf_add_keyring_item (info->connection_uuid,
+		                           info->connection_name,
+		                           setting->name,
+		                           key,
+		                           secret);
+	}
+}
+
+static void
 copy_one_setting_value_to_gconf (NMSetting *setting,
                                  const char *key,
                                  const GValue *value,
@@ -1422,9 +1452,13 @@
 	nm_connection_for_each_setting_value (connection,
 	                                      copy_one_setting_value_to_gconf,
 	                                      &info);
-
 	remove_leftovers (&info);
 
+	/* write secrets */
+	nm_connection_for_each_setting_value (connection,
+	                                      write_one_secret_to_keyring,
+	                                      &info);
+
 	write_applet_private_values_to_gconf (&info);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]