Peer entries were getting added on every discover request from the peer,
thus resulting in multiple entries with the same MAC address. Ensures
that a check is done for the presence of the peer entry and reuse the
existing entry instead of adding a new one.
Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
" BSS " MACSTR, MAC2STR(lnkid->bssid));
return -1;
}
-
- peer = wpa_tdls_add_peer(sm, addr);
- if (peer == NULL)
- return -1;
+ /* Find existing entry and if found, use that instead of adding
+ * a new one */
+ for (peer = sm->tdls; peer; peer = peer->next) {
+ if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0)
+ break;
+ }
+ if (peer == NULL) {
+ peer = wpa_tdls_add_peer(sm, addr);
+ if (peer == NULL)
+ return -1;
+ }
return wpa_tdls_send_discovery_response(sm, peer, dialog_token);
}