summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2025-10-31 18:33:21 +0000
committerFelix Fietkau2025-10-31 20:22:35 +0000
commite373a32a7c919989989f7e552774a7ba1d937833 (patch)
tree49b6d6a65e7cb6fb7f3b11c54476941791350d8d
parent3ab2f32006514549525e4d29136eab813017d96e (diff)
downloadopenwrt-e373a32a7c919989989f7e552774a7ba1d937833.tar.gz
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 <nbd@nbd.name>
-rw-r--r--package/network/services/hostapd/files/wpa_supplicant.uc3
1 files changed, 2 insertions, 1 deletions
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()