Fixed WPS with open and shared WEP networks
authorJouni Malinen <jouni.malinen@atheros.com>
Wed, 21 Jan 2009 12:18:14 +0000 (14:18 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 21 Jan 2009 12:18:14 +0000 (14:18 +0200)
Do not initialize EAPOL state machine for the STA when hostapd is
configured to use WPS with open or shared WEP networks. This allows the
STA to use EAPOL-Start to indicate it wants to start WPS in such a case
and hostapd does not end up running through EAPOL authentication timeout
and disconnecting the STA if WPS is not used.

There was already code for starting EAPOL state machines based on
received EAPOL packets, but that was not working properly since
portEnabled was not set to TRUE on that code path. This is now fixed,
too.

hostapd/ieee802_1x.c

index 4256534..3430f2d 100644 (file)
@@ -747,6 +747,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf,
                        sta->eapol_sm->flags |= EAPOL_SM_WAIT_START;
                }
 #endif /* CONFIG_WPS */
+
+               sta->eapol_sm->eap_if->portEnabled = TRUE;
        }
 
        /* since we support version 1, we can ignore version field and proceed
@@ -829,7 +831,7 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta)
        int force_1x = 0;
 
 #ifdef CONFIG_WPS
-       if (hapd->conf->wps_state &&
+       if (hapd->conf->wps_state && hapd->conf->wpa &&
            (sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
                /*
                 * Need to enable IEEE 802.1X/EAPOL state machines for possible