WPS ER: Move STA entry unlinking into a separate function

This commit is contained in:
Jouni Malinen 2009-11-21 12:18:03 +02:00
parent 7c04d5ec6c
commit 6a1e492a81

View file

@ -159,6 +159,26 @@ static void wps_er_sta_free(struct wps_er_sta *sta)
} }
static void wps_er_sta_unlink(struct wps_er_sta *sta)
{
struct wps_er_sta *prev, *tmp;
struct wps_er_ap *ap = sta->ap;
tmp = ap->sta;
prev = NULL;
while (tmp) {
if (tmp == sta) {
if (prev)
prev->next = sta->next;
else
ap->sta = sta->next;
return;
}
prev = tmp;
tmp = tmp->next;
}
}
static void wps_er_sta_remove_all(struct wps_er_ap *ap) static void wps_er_sta_remove_all(struct wps_er_ap *ap)
{ {
struct wps_er_sta *prev, *sta; struct wps_er_sta *prev, *sta;
@ -695,22 +715,9 @@ static void wps_er_http_resp_ok(struct http_request *req)
static void wps_er_sta_timeout(void *eloop_data, void *user_ctx) static void wps_er_sta_timeout(void *eloop_data, void *user_ctx)
{ {
struct wps_er_sta *prev, *tmp, *sta = eloop_data; struct wps_er_sta *sta = eloop_data;
wpa_printf(MSG_DEBUG, "WPS ER: STA entry timed out"); wpa_printf(MSG_DEBUG, "WPS ER: STA entry timed out");
tmp = sta->ap->sta; wps_er_sta_unlink(sta);
prev = NULL;
while (tmp) {
if (tmp == sta)
break;
prev = tmp;
tmp = tmp->next;
}
if (tmp) {
if (prev)
prev->next = sta->next;
else
sta->ap->sta = sta->next;
}
wps_er_sta_free(sta); wps_er_sta_free(sta);
} }