]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: Fix interface enabling/disabling and DFS
authorMichal Kazior <michal.kazior@tieto.com>
Tue, 19 Nov 2013 10:08:47 +0000 (11:08 +0100)
committerJouni Malinen <j@w1.fi>
Wed, 20 Nov 2013 20:29:35 +0000 (22:29 +0200)
The 'started' state was tracked incorrectly. It also broke DFS
as it was using hostapd_enable/disable_iface() functions.

Signed-hostap: Michal Kazior <michal.kazior@tieto.com>

src/ap/hostapd.c

index 51b1035b8cb7ab833472608c84d327bb80b2e9a2..69e8956659cf6b3fea47969133ed1ab742097b88 100644 (file)
@@ -243,6 +243,13 @@ static int hostapd_broadcast_wep_set(struct hostapd_data *hapd)
 
 static void hostapd_free_hapd_data(struct hostapd_data *hapd)
 {
+       if (!hapd->started) {
+               wpa_printf(MSG_ERROR, "%s: Interface %s wasn't started",
+                          __func__, hapd->conf->iface);
+               return;
+       }
+       hapd->started = 0;
+
        wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
        iapp_deinit(hapd->iapp);
        hapd->iapp = NULL;
@@ -306,7 +313,6 @@ static void hostapd_cleanup(struct hostapd_data *hapd)
            hapd->iface->interfaces->ctrl_iface_deinit)
                hapd->iface->interfaces->ctrl_iface_deinit(hapd);
        hostapd_free_hapd_data(hapd);
-       hapd->started = 0;
 }