diff --git a/src/fst/fst_ctrl_iface.c b/src/fst/fst_ctrl_iface.c index cb18c5e6f..06bba5a55 100644 --- a/src/fst/fst_ctrl_iface.c +++ b/src/fst/fst_ctrl_iface.c @@ -78,12 +78,11 @@ static Boolean format_session_state_extra(const union fst_event_extra *extra, } -static void fst_ctrl_iface_notify(u32 session_id, +static void fst_ctrl_iface_notify(struct fst_iface *f, u32 session_id, enum fst_event_type event_type, const union fst_event_extra *extra) { struct fst_group *g; - struct fst_iface *f; char extra_str[128] = ""; const struct fst_event_extra_session_state *ss; const struct fst_event_extra_iface_state *is; @@ -94,13 +93,15 @@ static void fst_ctrl_iface_notify(u32 session_id, * on global Control Interface, so we just pick the 1st one. */ - g = fst_first_group(); - if (!g) - return; - - f = fst_group_first_iface(g); - if (!f) - return; + if (!f) { + foreach_fst_group(g) { + f = fst_group_first_iface(g); + if (f) + break; + } + if (!f) + return; + } WPA_ASSERT(f->iface_obj.ctx); @@ -702,7 +703,7 @@ static void fst_ctrl_iface_on_iface_state_changed(struct fst_iface *i, os_strlcpy(extra.iface_state.group_id, fst_iface_get_group_id(i), sizeof(extra.iface_state.group_id)); - fst_ctrl_iface_notify(FST_INVALID_SESSION_ID, + fst_ctrl_iface_notify(i, FST_INVALID_SESSION_ID, EVENT_FST_IFACE_STATE_CHANGED, &extra); } @@ -726,7 +727,7 @@ static void fst_ctrl_iface_on_event(enum fst_event_type event_type, { u32 session_id = s ? fst_session_get_id(s) : FST_INVALID_SESSION_ID; - fst_ctrl_iface_notify(session_id, event_type, extra); + fst_ctrl_iface_notify(i, session_id, event_type, extra); }