From 63b6aaf3c5f79548543cced36612c4df952d28f6 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Thu, 7 Jun 2007 17:11:37 +0000 Subject: [PATCH] - Fix ethernet link detection (gnome #354565, rh #194124) - Fix perpetual credentials request with private key passwords in the applet - Sleep a bit before activating wireless cards to work around driver bugs --- ...er-0.6.5-fix-ethernet-link-detection.patch | 54 +++++++++++++++++++ NetworkManager-0.6.5-wait-for-wireless.patch | 14 +++++ NetworkManager.spec | 13 ++++- ...ger-applet-0.6.5-fix-eap-key-request.patch | 33 ++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 NetworkManager-0.6.5-fix-ethernet-link-detection.patch create mode 100644 NetworkManager-0.6.5-wait-for-wireless.patch create mode 100644 network-manager-applet-0.6.5-fix-eap-key-request.patch diff --git a/NetworkManager-0.6.5-fix-ethernet-link-detection.patch b/NetworkManager-0.6.5-fix-ethernet-link-detection.patch new file mode 100644 index 0000000..9fc7974 --- /dev/null +++ b/NetworkManager-0.6.5-fix-ethernet-link-detection.patch @@ -0,0 +1,54 @@ +Index: src/nm-device-802-3-ethernet.c +=================================================================== +--- src/nm-device-802-3-ethernet.c (revision 2577) ++++ src/nm-device-802-3-ethernet.c (revision 2578) +@@ -108,18 +108,16 @@ + GObject *obj, + NMDevice8023Ethernet *self) + { ++ GSource * source; ++ + /* Make sure signal is for us */ + if (NM_DEVICE (self) != NM_DEVICE (obj)) + return; + +- if (!nm_device_has_active_link (NM_DEVICE (self))) +- { +- GSource * source = g_idle_source_new (); +- +- g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL); +- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self))); +- g_source_unref (source); +- } ++ source = g_idle_source_new (); ++ g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL); ++ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self))); ++ g_source_unref (source); + } + + +@@ -135,18 +133,16 @@ + GObject *obj, + NMDevice8023Ethernet *self) + { ++ GSource * source; ++ + /* Make sure signal is for us */ + if (NM_DEVICE (self) != NM_DEVICE (obj)) + return; + +- if (nm_device_has_active_link (NM_DEVICE (self))) +- { +- GSource * source = g_idle_source_new (); +- +- g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL); +- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self))); +- g_source_unref (source); +- } ++ source = g_idle_source_new (); ++ g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL); ++ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self))); ++ g_source_unref (source); + } + + static void diff --git a/NetworkManager-0.6.5-wait-for-wireless.patch b/NetworkManager-0.6.5-wait-for-wireless.patch new file mode 100644 index 0000000..90fe675 --- /dev/null +++ b/NetworkManager-0.6.5-wait-for-wireless.patch @@ -0,0 +1,14 @@ +Index: src/nm-device-802-11-wireless.c +=================================================================== +--- src/nm-device-802-11-wireless.c (revision 2577) ++++ src/nm-device-802-11-wireless.c (working copy) +@@ -2981,6 +2981,9 @@ + return NM_ACT_STAGE_RETURN_POSTPONE; + } + ++ /* Some cards are dumb. Wait a second */ ++ sleep (1); ++ + iface = nm_device_get_iface (dev); + if (!supplicant_exec (self)) + { diff --git a/NetworkManager.spec b/NetworkManager.spec index b123fcb..d7f5b6f 100644 --- a/NetworkManager.spec +++ b/NetworkManager.spec @@ -11,7 +11,7 @@ Name: NetworkManager Summary: Network connection manager and user applications Epoch: 1 Version: 0.6.5 -Release: 4%{?dist} +Release: 5%{?dist} Group: System Environment/Base License: GPL URL: http://www.gnome.org/projects/NetworkManager/ @@ -19,6 +19,9 @@ Source: %{name}-%{version}.tar.bz2 Source1: network-manager-applet-%{version}.tar.bz2 Patch0: NetworkManager-0.6.4-startup-dhcdbd.patch Patch1: NetworkManager-0.6.5-fixup-internal-applet-build.patch +Patch2: NetworkManager-0.6.5-fix-ethernet-link-detection.patch +Patch3: NetworkManager-0.6.5-wait-for-wireless.patch +Patch4: network-manager-applet-0.6.5-fix-eap-key-request.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) PreReq: chkconfig @@ -117,10 +120,13 @@ NetworkManager functionality from applications that use glib. %prep %setup -q %patch0 -p1 -b .startup-dhcdbd +%patch2 -p0 -b .fix-ethernet-link-detection +%patch3 -p0 -b .wait-for-wireless # unpack the applet tar -xjf %{SOURCE1} %patch1 -p1 -b .buildfix +%patch4 -p1 -b .fix-eap-key-request %build # Even though we don't require named, we still build with it @@ -245,6 +251,11 @@ fi %changelog +* Thu Jun 7 2007 Dan Williams 1:0.6.5-5 +- Fix ethernet link detection (gnome #354565, rh #194124) +- Fix perpetual credentials request with private key passwords in the applet +- Sleep a bit before activating wireless cards to work around driver bugs + * Mon Jun 4 2007 Dan Williams 1:0.6.5-4 - Don't spawn wpa_supplicant with -o diff --git a/network-manager-applet-0.6.5-fix-eap-key-request.patch b/network-manager-applet-0.6.5-fix-eap-key-request.patch new file mode 100644 index 0000000..d31edf2 --- /dev/null +++ b/network-manager-applet-0.6.5-fix-eap-key-request.patch @@ -0,0 +1,33 @@ +Index: NetworkManager-0.6.5/nm-applet-0.6.5/src/applet-dbus-info.c +=================================================================== +--- NetworkManager-0.6.5/nm-applet-0.6.5/src/applet-dbus-info.c (revision 78) ++++ NetworkManager-0.6.5/nm-applet-0.6.5/src/applet-dbus-info.c (revision 79) +@@ -152,6 +152,8 @@ + char * temp = NULL; + char * escaped_network; + int we_cipher = -1; ++ char * private_key_file = NULL; ++ gboolean have_priv_key_file = FALSE; + + g_return_val_if_fail (applet != NULL, NULL); + g_return_val_if_fail (message != NULL, NULL); +@@ -182,9 +184,18 @@ + || !temp) + new_key = TRUE; + ++ nm_gconf_get_string_helper (applet->gconf_client, ++ GCONF_PATH_WIRELESS_NETWORKS, ++ "wpa_eap_private_key_file", escaped_network, &private_key_file); ++ if (private_key_file) { ++ have_priv_key_file = TRUE; ++ g_free (private_key_file); ++ } ++ + /* Hack: 802.1x passwords are not stored in the keyring */ + if (!new_key && +- (we_cipher == NM_AUTH_TYPE_WPA_EAP || we_cipher == NM_AUTH_TYPE_LEAP)) ++ ((we_cipher == NM_AUTH_TYPE_WPA_EAP && !have_priv_key_file) || ++ we_cipher == NM_AUTH_TYPE_LEAP)) + { + NMGConfWSO *gconf_wso; + gconf_wso = nm_gconf_wso_new_deserialize_gconf (applet->gconf_client,