diff --git a/data/static/app.js.gz b/data/static/app.js.gz index ce89d1f..3e85d83 100644 Binary files a/data/static/app.js.gz and b/data/static/app.js.gz differ diff --git a/lib/BufferedWebServer/BufferedWebServer.h b/lib/BufferedWebServer/BufferedWebServer.h index 0960052..e289e8e 100644 --- a/lib/BufferedWebServer/BufferedWebServer.h +++ b/lib/BufferedWebServer/BufferedWebServer.h @@ -16,18 +16,21 @@ public: this->webServer->send(505, F("text/html"), F("HTTP1.1 required")); return; } - #else - this->webServer->send(code, contentType, ""); - #endif this->webServer->setContentLength(measureJson(content)); + #else + this->webServer->setContentLength(CONTENT_LENGTH_UNKNOWN); + this->webServer->sendHeader(F("Content-Length"), String(measureJson(content))); + this->webServer->send(code, contentType, emptyString); + #endif + serializeJson(content, *this); this->flush(); #ifdef ARDUINO_ARCH_ESP8266 this->webServer->chunkedResponseFinalize(); #else - this->webServer->sendContent(""); + this->webServer->sendContent(emptyString); #endif } diff --git a/lib/WebServerHandlers/DynamicPage.h b/lib/WebServerHandlers/DynamicPage.h index 34c9cbb..c455d45 100644 --- a/lib/WebServerHandlers/DynamicPage.h +++ b/lib/WebServerHandlers/DynamicPage.h @@ -72,7 +72,8 @@ public: return true; } #else - server.send(200, F("text/html"), ""); + server.setContentLength(CONTENT_LENGTH_UNKNOWN); + server.send(200, "text/html", emptyString); #endif uint8_t* argStartPos = nullptr; @@ -209,7 +210,7 @@ public: #ifdef ARDUINO_ARCH_ESP8266 server.chunkedResponseFinalize(); #else - server.sendContent(""); + server.sendContent(emptyString); #endif return true; diff --git a/src/PortalTask.h b/src/PortalTask.h index bf2a5f1..133f415 100644 --- a/src/PortalTask.h +++ b/src/PortalTask.h @@ -349,19 +349,11 @@ protected: auto apCount = WiFi.scanComplete(); if (apCount <= 0) { - WiFi.scanNetworks(true, true); - - if (apCount == WIFI_SCAN_RUNNING || apCount == WIFI_SCAN_FAILED) { - this->webServer->send(202); - - } else if (apCount == 0) { - this->webServer->send(200, "application/json", "[]"); - - } else { - this->webServer->send(500); + if (apCount != WIFI_SCAN_RUNNING) { + WiFi.scanNetworks(true, true); } - + this->webServer->send(404); return; } @@ -374,11 +366,11 @@ protected: doc[i]["hidden"] = !ssid.length(); doc[i]["encryptionType"] = WiFi.encryptionType(i); } - - WiFi.scanDelete(); doc.shrinkToFit(); this->bufferedWebServer->send(200, "application/json", doc); + + WiFi.scanDelete(); }); @@ -522,7 +514,7 @@ protected: void loop() { // web server - if (!this->stateWebServer()) { + if (!this->stateWebServer() && (network->isApEnabled() || network->isStaEnabled())) { this->startWebServer(); Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Started")); diff --git a/src_data/static/app.js b/src_data/static/app.js index 1656029..e53c12e 100644 --- a/src_data/static/app.js +++ b/src_data/static/app.js @@ -171,26 +171,33 @@ function setupNetworkScanForm(formSelector, tableSelector) { } }; - let attempts = 5; - let timer = setInterval(async () => { + let attempts = 6; + let attemptFn = async () => { attempts--; try { let response = await fetch(url, { cache: 'no-cache' }); if (response.status == 200) { - clearInterval(timer); await onSuccess(response); } else if (attempts <= 0) { await onFailed(response); + + } else { + setTimeout(attemptFn, 5000); } } catch (err) { - clearInterval(timer); - onFailed(err); + if (attempts <= 0) { + onFailed(err); + + } else { + setTimeout(attemptFn, 10000); + } } - }, 2000); + }; + attemptFn(); }; form.addEventListener('submit', onSubmitFn);