TDLS: Use existing peer entry if available when processing discovery
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>
This commit is contained in:
parent
2b79164f12
commit
cd22fbf85c
1 changed files with 11 additions and 4 deletions
|
@ -1281,10 +1281,17 @@ wpa_tdls_process_discovery_request(struct wpa_sm *sm, const u8 *addr,
|
|||
" 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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue