From e373a32a7c919989989f7e552774a7ba1d937833 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 31 Oct 2025 18:33:21 +0000 Subject: [PATCH] wpa_supplicant: use a timer to defer starting interfaces This allows wpa_supplicant to process pending netlink socket messages first. Without this change, there is a race condition where the newly created interface processes netlink events from the removal of the previous interface. Signed-off-by: Felix Fietkau --- package/network/services/hostapd/files/wpa_supplicant.uc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/network/services/hostapd/files/wpa_supplicant.uc b/package/network/services/hostapd/files/wpa_supplicant.uc index 20613ae702..2f0279d069 100644 --- a/package/network/services/hostapd/files/wpa_supplicant.uc +++ b/package/network/services/hostapd/files/wpa_supplicant.uc @@ -1,4 +1,5 @@ let libubus = require("ubus"); +import * as uloop from "uloop"; import { open, readfile } from "fs"; import { wdev_create, wdev_set_mesh_params, wdev_remove, is_equal, wdev_set_up, vlist_new, phy_open } from "common"; @@ -549,7 +550,7 @@ let main_obj = { set_config(phy, req.args.phy, req.args.radio, req.args.num_global_macaddr, req.args.macaddr_base, req.args.config); if (!req.args.defer) - start_pending(phy); + uloop.timer(100, () => start_pending(phy)); return { pid: wpas.getpid()