From eaee379e5348451ebbe06b252404a7fe27603e3f Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Tue, 11 Oct 2016 01:53:59 -0500 Subject: [PATCH] netdev: Allow disconnect_by_ap to be re-entrant --- src/netdev.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/netdev.c b/src/netdev.c index 3923f5b9..73487673 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -467,6 +467,8 @@ static void netdev_disconnect_event(struct l_genl_msg *msg, const void *data; uint16_t reason_code = 0; bool disconnect_by_ap = false; + netdev_event_func_t event_filter; + void *event_data; l_debug(""); @@ -497,11 +499,13 @@ static void netdev_disconnect_event(struct l_genl_msg *msg, l_info("Received Deauthentication event, reason: %hu, from_ap: %s", reason_code, disconnect_by_ap ? "true" : "false"); - if (disconnect_by_ap && netdev->event_filter) - netdev->event_filter(netdev, NETDEV_EVENT_DISCONNECT_BY_AP, - netdev->user_data); - + event_filter = netdev->event_filter; + event_data = netdev->user_data; netdev_connect_free(netdev); + + if (disconnect_by_ap && event_filter) + event_filter(netdev, NETDEV_EVENT_DISCONNECT_BY_AP, + event_data); } static void netdev_deauthenticate_event(struct l_genl_msg *msg,