From ec158382152b89194265824cfaa930dda691c284 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 17 Jan 2020 11:18:23 -0600 Subject: [PATCH] wsc: Rework wsc_enrollee_destroy Our design preference is to not call any callbacks in the _free/_destroy method of a class (with the exception of explicit destroy callbacks provided, if any). Invoking the callback in this case was unnecessary: wsc_dbus_free was already replying to pending connect / cancel messages. The only other thing the callback would attempt to do is to set station back into autoconnect mode. This was unnecessary as well since the netdev is already down. This change removes the callback invocation. Since wsc_enrollee_destroy is now just calling wsc_enrollee_free, remove this from the API and expose wsc_enrollee_free instead. --- src/wsc.c | 22 +++++----------------- src/wsc.h | 2 +- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/wsc.c b/src/wsc.c index eeeb6cf2..2f2a6ecd 100644 --- a/src/wsc.c +++ b/src/wsc.c @@ -101,13 +101,6 @@ static struct l_dbus_message *wsc_error_time_expired(struct l_dbus_message *msg) "the alloted time"); } -static void wsc_enrollee_free(struct wsc_enrollee *wsce) -{ - l_settings_free(wsce->eap_settings); - explicit_bzero(wsce->creds, sizeof(wsce->creds)); - l_free(wsce); -} - static void wsc_enrollee_connect_cb(struct netdev *netdev, enum netdev_result result, void *event_data, void *user_data) @@ -448,16 +441,11 @@ void wsc_enrollee_cancel(struct wsc_enrollee *wsce, bool defer_cb) } } -/* To be called instead of wsc_enrollee_cancel if we know the netdev is gone */ -void wsc_enrollee_destroy(struct wsc_enrollee *wsce) +void wsc_enrollee_free(struct wsc_enrollee *wsce) { - /* - * Note: wsc_enrollee_cancel(wsce, true) may have been called before - * but since the netdev is going away wsc_enrollee_disconnect_cb - * is not happening anymore. - */ - wsce->done_cb(-ECANCELED, NULL, 0, wsce->done_data); - wsc_enrollee_free(wsce); + l_settings_free(wsce->eap_settings); + explicit_bzero(wsce->creds, sizeof(wsce->creds)); + l_free(wsce); } struct wsc_station_dbus { @@ -1140,7 +1128,7 @@ static void wsc_station_dbus_remove(struct wsc_dbus *super) } if (wsc->enrollee) - wsc_enrollee_destroy(wsc->enrollee); + wsc_enrollee_free(wsc->enrollee); l_free(wsc); } diff --git a/src/wsc.h b/src/wsc.h index 6596bb00..35ce9199 100644 --- a/src/wsc.h +++ b/src/wsc.h @@ -42,7 +42,7 @@ struct wsc_enrollee *wsc_enrollee_new(struct netdev *netdev, struct iovec *ies, unsigned int ies_num, wsc_done_cb_t done_cb, void *user_data); void wsc_enrollee_cancel(struct wsc_enrollee *wsce, bool defer_cb); -void wsc_enrollee_destroy(struct wsc_enrollee *wsce); +void wsc_enrollee_free(struct wsc_enrollee *wsce); struct wsc_dbus { struct l_dbus_message *pending_connect;