From: Johannes Berg <johannes.berg@xxxxxxxxx> When strict group rekeying is in effect, every station that leaves will cause a rekeying to happen 0.5s after leaving. However, if a lot of stations join/leave, the current code can postponing this rekeying forever, since it always re-registers the handling with a 0.5s timeout. Use eloop_deplete_timeout() to address that, only registering the timeout from scratch if it wasn't pending. Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- src/ap/wpa_auth.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c index 8265fa1ca6d9..713bee068ac2 100644 --- a/src/ap/wpa_auth.c +++ b/src/ap/wpa_auth.c @@ -698,9 +698,10 @@ void wpa_auth_sta_deinit(struct wpa_state_machine *sm) wpa_auth_logger(sm->wpa_auth, sm->addr, LOGGER_DEBUG, "strict rekeying - force GTK rekey since STA " "is leaving"); - eloop_cancel_timeout(wpa_rekey_gtk, sm->wpa_auth, NULL); - eloop_register_timeout(0, 500000, wpa_rekey_gtk, sm->wpa_auth, - NULL); + if (eloop_deplete_timeout(0, 500000, wpa_rekey_gtk, + sm->wpa_auth, NULL) == -1) + eloop_register_timeout(0, 500000, wpa_rekey_gtk, sm->wpa_auth, + NULL); } eloop_cancel_timeout(wpa_send_eapol_timeout, sm->wpa_auth, sm); -- 2.14.2 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap