diff --git a/NetworkManager.spec b/NetworkManager.spec index bd67105..dd0116b 100644 --- a/NetworkManager.spec +++ b/NetworkManager.spec @@ -15,7 +15,7 @@ Name: NetworkManager Summary: Network connection manager and user applications Epoch: 1 Version: 0.8.9997 -Release: 6%{snapshot}%{?dist} +Release: 7%{snapshot}%{?dist} Group: System Environment/Base License: GPLv2+ URL: http://www.gnome.org/projects/NetworkManager/ @@ -28,6 +28,7 @@ Patch2: explain-dns1-dns2.patch Patch3: nm-applet-no-notifications.patch Patch4: nm-polkit-permissive.patch Patch5: nm-applet-wifi-dialog-ui-fixes.patch +Patch6: nm-controlled.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires(post): chkconfig @@ -164,6 +165,7 @@ tar -xjf %{SOURCE1} %patch3 -p1 -b .no-notifications %patch4 -p1 -b .polkit-permissive %patch5 -p1 -b .applet-wifi-ui +%patch6 -p1 -b .nm-controlled %build @@ -421,6 +423,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/gtk-doc/html/libnm-util/* %changelog +* Fri Aug 05 2011 Ray Strode 0.8.9997-7.git20110721 +- Add some patches for some blocker + Resolves: #727501 + * Thu Jul 21 2011 Dan Williams - 0.8.9997-6.git20110721 - core: updated Russian translation (rh #652904) - core: fix possible crash if secrets are missing diff --git a/nm-controlled.patch b/nm-controlled.patch new file mode 100644 index 0000000..6e2a182 --- /dev/null +++ b/nm-controlled.patch @@ -0,0 +1,123 @@ +From 312c7c952cbb3f20bcb1092db9bfbb51485fcebd Mon Sep 17 00:00:00 2001 +From: Jiří Klimeš +Date: Tue, 02 Aug 2011 07:15:37 +0000 +Subject: ifcfg-rh: emit "updated" signal when connection file is changed (rh #727501) + +Chain up to parent's commit_changes() even if in-memory and on-disk data are the +same; they are the same when another process changes the on-disk file. Just make +sure not to write out the data needlessly when same. + +This fixes a regression caused by 9cba854fa0a32022a44e922dd4e70aaaf3c00dd2. +It exhibits e.g. by not auto-activating connection when ONBOOT is changed from +"no" to "yes". Connection "updated" signal was not emitted and listeners like +NMPolicy was not prodded. +--- +diff --git a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c +index 534f44d..04d3d3e 100644 +--- a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c ++++ b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c +@@ -15,7 +15,7 @@ + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * +- * Copyright (C) 2008 - 2010 Red Hat, Inc. ++ * Copyright (C) 2008 - 2011 Red Hat, Inc. + */ + + #include +@@ -181,7 +181,7 @@ nm_ifcfg_connection_get_unmanaged_spec (NMIfcfgConnection *self) + static void + commit_changes (NMSettingsConnection *connection, + NMSettingsConnectionCommitFunc callback, +- gpointer user_data) ++ gpointer user_data) + { + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (connection); + GError *error = NULL; +@@ -208,9 +208,12 @@ commit_changes (NMSettingsConnection *connection, + NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS); + g_object_unref (reread); + +- /* Don't bother writing anything out if nothing really changed */ +- if (same == TRUE) ++ /* Don't bother writing anything out if in-memory and on-disk data are the same */ ++ if (same) { ++ /* But chain up to parent to handle success - emits updated signal */ ++ NM_SETTINGS_CONNECTION_CLASS (nm_ifcfg_connection_parent_class)->commit_changes (connection, callback, user_data); + return; ++ } + } + + if (writer_update_connection (NM_CONNECTION (connection), +@@ -227,7 +230,7 @@ commit_changes (NMSettingsConnection *connection, + } + } + +-static void ++static void + do_delete (NMSettingsConnection *connection, + NMSettingsConnectionDeleteFunc callback, + gpointer user_data) +-- +cgit v0.8.3-6-g21f6 +From adc7ec170d429b6b8cdeb302c8afa96fbd3ba907 Mon Sep 17 00:00:00 2001 +From: Jiří Klimeš +Date: Tue, 02 Aug 2011 08:45:43 +0000 +Subject: ifcfg-rh: make NM_CONTROLLED changes function properly (rh #727501) + +Changing NM_CONTROLED from "no" to "yes" worked just the first time. +Fix that by storing unmanaged spec when interface becomes unmanaged +and adjust condition identifying "no-change" updates to the ifcfg +file. +--- +diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c +index 7d27656..ed0dcec 100644 +--- a/src/settings/plugins/ifcfg-rh/plugin.c ++++ b/src/settings/plugins/ifcfg-rh/plugin.c +@@ -269,20 +269,24 @@ connection_new_or_changed (SCPluginIfcfg *self, + + /* Successfully read connection changes */ + +- /* When the connections are the same, nothing is done */ +- if (nm_connection_compare (NM_CONNECTION (existing), +- NM_CONNECTION (new), +- NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS | +- NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS)) { ++ old_unmanaged = nm_ifcfg_connection_get_unmanaged_spec (NM_IFCFG_CONNECTION (existing)); ++ new_unmanaged = nm_ifcfg_connection_get_unmanaged_spec (NM_IFCFG_CONNECTION (new)); ++ ++ /* When interface is unmanaged or the connections and unmanaged specs are the same ++ * there's nothing to do */ ++ if ( (g_strcmp0 (old_unmanaged, new_unmanaged) == 0 && new_unmanaged != NULL) ++ || ( nm_connection_compare (NM_CONNECTION (existing), ++ NM_CONNECTION (new), ++ NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS | ++ NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS) ++ && g_strcmp0 (old_unmanaged, new_unmanaged) == 0)) { ++ + g_object_unref (new); + return; + } + + PLUGIN_PRINT (IFCFG_PLUGIN_NAME, "updating %s", path); + +- old_unmanaged = nm_ifcfg_connection_get_unmanaged_spec (NM_IFCFG_CONNECTION (existing)); +- new_unmanaged = nm_ifcfg_connection_get_unmanaged_spec (NM_IFCFG_CONNECTION (new)); +- + if (new_unmanaged) { + if (!old_unmanaged) { + /* Unexport the connection by telling the settings service it's +@@ -290,6 +294,11 @@ connection_new_or_changed (SCPluginIfcfg *self, + * unmanaged specs have changed. + */ + nm_settings_connection_signal_remove (NM_SETTINGS_CONNECTION (existing)); ++ /* Remove the path so that claim_connection() doesn't complain later when ++ * interface gets managed and connection is re-added. */ ++ nm_connection_set_path (NM_CONNECTION (existing), NULL); ++ ++ g_object_set (existing, NM_IFCFG_CONNECTION_UNMANAGED, new_unmanaged, NULL); + g_signal_emit_by_name (self, NM_SYSTEM_CONFIG_INTERFACE_UNMANAGED_SPECS_CHANGED); + } + } else { +-- +cgit v0.8.3-6-g21f6