mesh: Do not force another peering exchange on driver event

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>
This commit is contained in:
Jouni Malinen 2016-01-06 17:20:20 +02:00
parent cc64fe7b9e
commit 27446e471c

View file

@ -669,10 +669,13 @@ void wpa_mesh_new_mesh_peer(struct wpa_supplicant *wpa_s, const u8 *addr,
return; return;
} }
if (conf->security == MESH_CONF_SEC_NONE) 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); mesh_mpm_plink_open(wpa_s, sta, PLINK_OPEN_SENT);
else } else {
mesh_rsn_auth_sae_sta(wpa_s, sta); mesh_rsn_auth_sae_sta(wpa_s, sta);
}
} }