]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mesh: Do not force another peering exchange on driver event
authorJouni Malinen <j@w1.fi>
Wed, 6 Jan 2016 15:20:20 +0000 (17:20 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 6 Jan 2016 15:50:15 +0000 (17:50 +0200)
If the local driver indicated a peer candidate event when the peer had
already initiated peering exchange in open mesh case, we used to force a
new exchange to be started instead of allowing the previously started
exchange to complete. This is not desirable, so make this initiation of
the new exchange conditional on there not being an already started (or
successfully completed) exchange.

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/mesh_mpm.c

index def1c4030e578ed224effd7bf1df01d41939be3c..d509d7d750835a45523b50b119a9c33889c15637 100644 (file)
@@ -669,10 +669,13 @@ void wpa_mesh_new_mesh_peer(struct wpa_supplicant *wpa_s, const u8 *addr,
                return;
        }
 
-       if (conf->security == MESH_CONF_SEC_NONE)
-               mesh_mpm_plink_open(wpa_s, sta, PLINK_OPEN_SENT);
-       else
+       if (conf->security == MESH_CONF_SEC_NONE) {
+               if (sta->plink_state < PLINK_OPEN_SENT ||
+                   sta->plink_state > PLINK_ESTAB)
+                       mesh_mpm_plink_open(wpa_s, sta, PLINK_OPEN_SENT);
+       } else {
                mesh_rsn_auth_sae_sta(wpa_s, sta);
+       }
 }