Skip to content

Commit 9e7b13e

Browse files
authored
WebServer.handleClient delay (espressif#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 espressif#4348 * Made a variable to control the delay behavior
1 parent 2243081 commit 9e7b13e

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

Diff for: libraries/WebServer/src/WebServer.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ WebServer::WebServer(IPAddress addr, int port)
4545
, _currentVersion(0)
4646
, _currentStatus(HC_NONE)
4747
, _statusChange(0)
48+
, _nullDelay(true)
4849
, _currentHandler(nullptr)
4950
, _firstHandler(nullptr)
5051
, _lastHandler(nullptr)
@@ -66,6 +67,7 @@ WebServer::WebServer(int port)
6667
, _currentVersion(0)
6768
, _currentStatus(HC_NONE)
6869
, _statusChange(0)
70+
, _nullDelay(true)
6971
, _currentHandler(nullptr)
7072
, _firstHandler(nullptr)
7173
, _lastHandler(nullptr)
@@ -280,6 +282,9 @@ void WebServer::handleClient() {
280282
if (_currentStatus == HC_NONE) {
281283
WiFiClient client = _server.available();
282284
if (!client) {
285+
if (_nullDelay) {
286+
delay(1);
287+
}
283288
return;
284289
}
285290

@@ -370,6 +375,10 @@ void WebServer::setContentLength(const size_t contentLength) {
370375
_contentLength = contentLength;
371376
}
372377

378+
void WebServer::enableDelay(boolean value) {
379+
_nullDelay = value;
380+
}
381+
373382
void WebServer::enableCORS(boolean value) {
374383
_corsEnabled = value;
375384
}

Diff for: libraries/WebServer/src/WebServer.h

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ class WebServer
123123
void send_P(int code, PGM_P content_type, PGM_P content);
124124
void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength);
125125

126+
void enableDelay(boolean value);
126127
void enableCORS(boolean value = true);
127128
void enableCrossOrigin(boolean value = true);
128129

@@ -176,6 +177,7 @@ class WebServer
176177
uint8_t _currentVersion;
177178
HTTPClientStatus _currentStatus;
178179
unsigned long _statusChange;
180+
boolean _nullDelay;
179181

180182
RequestHandler* _currentHandler;
181183
RequestHandler* _firstHandler;

0 commit comments

Comments
 (0)