diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 8f82f93..4fba355 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -157,6 +157,14 @@ boolean WiFiManager::autoConnect(char const *apName, char const *apPassword) { return startConfigPortal(apName, apPassword); } +boolean WiFiManager::configPortalHasTimeout(){ + if(_configPortalTimeout == 0 || wifi_softap_get_station_num() > 0){ + _configPortalStart = millis(); // kludge, bump configportal start time to skew timeouts + return false; + } + return (millis() > _configPortalStart + _configPortalTimeout); +} + boolean WiFiManager::startConfigPortal() { String ssid = "ESP" + String(ESP.getChipId()); return startConfigPortal(ssid.c_str(), NULL); @@ -180,11 +188,8 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo while(1){ - // do timeout if configPortalTimeout set and ap does not have client - if(_configPortalTimeout!= 0 - && millis() > _configPortalStart + _configPortalTimeout - && wifi_softap_get_station_num() == 0 - ) break; + // check if timeout + if(configPortalHasTimeout()) break; //DNS dnsServer->processNextRequest(); diff --git a/WiFiManager.h b/WiFiManager.h index bd67c05..d86b904 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -160,6 +160,7 @@ class WiFiManager void handleNotFound(); void handle204(); boolean captivePortal(); + boolean configPortalHasTimeout(); // DNS server const byte DNS_PORT = 53;