diff --git a/tasmota/tasmota_support/support_wifi.ino b/tasmota/tasmota_support/support_wifi.ino index c7218a505..a64d9b974 100644 --- a/tasmota/tasmota_support/support_wifi.ino +++ b/tasmota/tasmota_support/support_wifi.ino @@ -211,7 +211,7 @@ void WifiBegin(uint8_t flag, uint8_t channel) { WiFi.persistent(false); // Solve possible wifi init errors (re-add at 6.2.1.16 #4044, #4083) #ifdef USE_WIFI_RANGE_EXTENDER - if (WiFi.getMode() != WIFI_AP_STA) { // Preserve range extender connections (#17103) + if (WiFi.getMode() != WIFI_AP_STA || !RgxApUp()) { // Preserve range extender connections (#17103) WiFi.disconnect(true); // Delete SDK wifi config delay(200); WifiSetMode(WIFI_STA); // Disable AP mode diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index 88631bb27..3868dde46 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -149,6 +149,12 @@ typedef struct TRgxSettings RgxSettings; +// externalize to be able to protect Rgx AP from teardown +bool RgxApUp() +{ + return RgxSettings.status == RGX_CONFIGURED || RgxSettings.status == RGX_SETUP_NAPT; +} + // Check the current configuration is complete, updating RgxSettings.status void RgxCheckConfig(void) {