X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=wireless.c;h=a4d7c26e71763c2cfb60b57fd79cf136831434fb;hp=1f7fc5d6c56d3bc3d1654147d435f8e34f5a1064;hb=c48a6457f851f24b07c384007bb471dafcd0ef14;hpb=93124d96594415563f68bda0ca24c3307e014efd diff --git a/wireless.c b/wireless.c index 1f7fc5d..a4d7c26 100644 --- a/wireless.c +++ b/wireless.c @@ -270,9 +270,10 @@ __wireless_device_set_up(struct wireless_device *wdev) static void wireless_device_free(struct wireless_device *wdev) { - vlist_flush_all(&wdev->interfaces); - free(wdev->config); - free(wdev); + vlist_flush_all(&wdev->interfaces); + avl_delete(&wireless_devices.avl, &wdev->node.avl); + free(wdev->config); + free(wdev); } static void @@ -280,10 +281,10 @@ wdev_handle_config_change(struct wireless_device *wdev) { enum interface_config_state state = wdev->config_state; - wdev->config_state = IFC_NORMAL; switch(state) { case IFC_NORMAL: case IFC_RELOAD: + wdev->config_state = IFC_NORMAL; if (wdev->autostart) __wireless_device_set_up(wdev); break; @@ -394,12 +395,10 @@ wireless_device_set_down(struct wireless_device *wdev) static void wdev_set_config_state(struct wireless_device *wdev, enum interface_config_state s) { - enum interface_config_state old_state = wdev->config_state; - - wdev->config_state = s; - if (old_state != IFC_NORMAL) + if (wdev->config_state != IFC_NORMAL) return; + wdev->config_state = s; if (wdev->state == IFS_DOWN) wdev_handle_config_change(wdev); else