Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9e7b13e

Browse files
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

‎libraries/WebServer/src/WebServer.cpp‎

Lines changed: 9 additions & 0 deletions
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
}

‎libraries/WebServer/src/WebServer.h‎

Lines changed: 2 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /