diff --git a/src/ap/ap_list.c b/src/ap/ap_list.c index 165cb16a0..933b15850 100644 --- a/src/ap/ap_list.c +++ b/src/ap/ap_list.c @@ -318,7 +318,7 @@ void ap_list_process_beacon(struct hostapd_iface *iface, #endif /* CONFIG_IEEE80211N */ if (set_beacon) - ieee802_11_set_beacons(iface); + ieee802_11_update_beacons(iface); } @@ -373,7 +373,7 @@ static void ap_list_timer(void *eloop_ctx, void *timeout_ctx) } if (set_beacon) - ieee802_11_set_beacons(iface); + ieee802_11_update_beacons(iface); } diff --git a/src/ap/beacon.c b/src/ap/beacon.c index 5efa4cdf9..0253663d0 100644 --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -700,4 +700,14 @@ void ieee802_11_set_beacons(struct hostapd_iface *iface) ieee802_11_set_beacon(iface->bss[i]); } + +/* only update beacons if started */ +void ieee802_11_update_beacons(struct hostapd_iface *iface) +{ + size_t i; + for (i = 0; i < iface->num_bss; i++) + if (iface->bss[i]->beacon_set_done) + ieee802_11_set_beacon(iface->bss[i]); +} + #endif /* CONFIG_NATIVE_WINDOWS */ diff --git a/src/ap/beacon.h b/src/ap/beacon.h index a944f5f35..0dd6021a8 100644 --- a/src/ap/beacon.h +++ b/src/ap/beacon.h @@ -22,5 +22,6 @@ void handle_probe_req(struct hostapd_data *hapd, const struct ieee80211_mgmt *mgmt, size_t len); void ieee802_11_set_beacon(struct hostapd_data *hapd); void ieee802_11_set_beacons(struct hostapd_iface *iface); +void ieee802_11_update_beacons(struct hostapd_iface *iface); #endif /* BEACON_H */