WebServer.handleClient delay (#4350)

* If WebServer.handleClient is run in a tight loop, it will starve other processes.  So, if there is no connection, throw in a delay(1).  Fixes #4348

* Made a variable to control the delay behavior
This commit is contained in:
lbernstone
2020-10-01 06:42:23 -06:00
committed by GitHub
parent 2243081f85
commit 9e7b13e46d
2 changed files with 11 additions and 0 deletions

View File

@ -45,6 +45,7 @@ WebServer::WebServer(IPAddress addr, int port)
, _currentVersion(0)
, _currentStatus(HC_NONE)
, _statusChange(0)
, _nullDelay(true)
, _currentHandler(nullptr)
, _firstHandler(nullptr)
, _lastHandler(nullptr)
@ -66,6 +67,7 @@ WebServer::WebServer(int port)
, _currentVersion(0)
, _currentStatus(HC_NONE)
, _statusChange(0)
, _nullDelay(true)
, _currentHandler(nullptr)
, _firstHandler(nullptr)
, _lastHandler(nullptr)
@ -280,6 +282,9 @@ void WebServer::handleClient() {
if (_currentStatus == HC_NONE) {
WiFiClient client = _server.available();
if (!client) {
if (_nullDelay) {
delay(1);
}
return;
}
@ -370,6 +375,10 @@ void WebServer::setContentLength(const size_t contentLength) {
_contentLength = contentLength;
}
void WebServer::enableDelay(boolean value) {
_nullDelay = value;
}
void WebServer::enableCORS(boolean value) {
_corsEnabled = value;
}