network-manager-applet r944 - in trunk: . src



Author: dcbw
Date: Wed Oct 15 17:09:37 2008
New Revision: 944
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=944&view=rev

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

	* src/applet-device-wifi.c
		- (get_security_for_ap): fix the following case for cards that can't
			do WPA or RSN but can pass through the information elements, and
			where the AP has privacy turned on in the beacon



Modified:
   trunk/ChangeLog
   trunk/src/applet-device-wifi.c

Modified: trunk/src/applet-device-wifi.c
==============================================================================
--- trunk/src/applet-device-wifi.c	(original)
+++ trunk/src/applet-device-wifi.c	Wed Oct 15 17:09:37 2008
@@ -228,12 +228,26 @@
 		goto none;
 
 	/* Static WEP, Dynamic WEP, or LEAP */
-	if (   (flags & NM_802_11_AP_FLAGS_PRIVACY)
-	    && (wpa_flags == NM_802_11_AP_SEC_NONE)
-	    && (rsn_flags == NM_802_11_AP_SEC_NONE)) {
-		sec->key_mgmt = g_strdup ("none");
-		sec->wep_tx_keyidx = 0;
-		return sec;
+	if (flags & NM_802_11_AP_FLAGS_PRIVACY) {
+		if ((dev_caps & NM_WIFI_DEVICE_CAP_RSN) || (dev_caps & NM_WIFI_DEVICE_CAP_WPA)) {
+			/* If the device can do WPA/RSN but the AP has no WPA/RSN informatoin
+			 * elements, it must be LEAP or static/dynamic WEP.
+			 */
+			if ((wpa_flags == NM_802_11_AP_SEC_NONE) && (rsn_flags == NM_802_11_AP_SEC_NONE)) {
+				sec->key_mgmt = g_strdup ("none");
+				sec->wep_tx_keyidx = 0;
+				return sec;
+			}
+			/* Otherwise, the AP supports WPA or RSN, which is preferred */
+		} else {
+			/* Device can't do WPA/RSN, but can at least pass through the
+			 * WPA/RSN information elements from a scan.  Since Privacy was
+			 * advertised, LEAP or static/dynamic WEP must be in use.
+			 */
+			sec->key_mgmt = g_strdup ("none");
+			sec->wep_tx_keyidx = 0;
+			return sec;
+		}
 	}
 
 	/* Stuff after this point requires infrastructure */



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