static void eloop_remove_timeout(struct eloop_timeout *timeout)
{
+ dl_list_del(&timeout->list);
wpa_trace_remove_ref(timeout, eloop, timeout->eloop_data);
wpa_trace_remove_ref(timeout, user, timeout->user_data);
os_free(timeout);
eloop_data == ELOOP_ALL_CTX) &&
(timeout->user_data == user_data ||
user_data == ELOOP_ALL_CTX)) {
- dl_list_del(&timeout->list);
eloop_remove_timeout(timeout);
removed++;
}
if (timeout) {
os_get_time(&now);
if (!os_time_before(&now, &timeout->time)) {
- dl_list_del(&timeout->list);
- timeout->handler(timeout->eloop_data,
- timeout->user_data);
+ void *eloop_data = timeout->eloop_data;
+ void *user_data = timeout->user_data;
eloop_remove_timeout(timeout);
+ timeout->handler(eloop_data,
+ user_data);
}
}
wpa_trace_dump_funcname("eloop unregistered timeout handler",
timeout->handler);
wpa_trace_dump("eloop timeout", timeout);
- dl_list_del(&timeout->list);
eloop_remove_timeout(timeout);
}
eloop_sock_table_destroy(&eloop.readers);