mirror of
https://github.com/wled/WLED.git
synced 2025-07-19 00:36:36 +00:00
Defer web requests if JSON lock contended
Use the web server's queuing mechanism to call us back later.
This commit is contained in:
parent
dc317220b3
commit
bec7e54f7f
@ -1060,7 +1060,7 @@ void serveJson(AsyncWebServerRequest* request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!requestJSONBufferLock(17)) {
|
if (!requestJSONBufferLock(17)) {
|
||||||
serveJsonError(request, 503, ERR_NOBUF);
|
request->deferResponse();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// releaseJSONBufferLock() will be called when "response" is destroyed (from AsyncWebServer)
|
// releaseJSONBufferLock() will be called when "response" is destroyed (from AsyncWebServer)
|
||||||
|
@ -628,7 +628,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
|||||||
//USERMODS
|
//USERMODS
|
||||||
if (subPage == SUBPAGE_UM)
|
if (subPage == SUBPAGE_UM)
|
||||||
{
|
{
|
||||||
if (!requestJSONBufferLock(5)) return;
|
if (!requestJSONBufferLock(5)) {
|
||||||
|
request->deferResponse();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// global I2C & SPI pins
|
// global I2C & SPI pins
|
||||||
int8_t hw_sda_pin = !request->arg(F("SDA")).length() ? -1 : (int)request->arg(F("SDA")).toInt();
|
int8_t hw_sda_pin = !request->arg(F("SDA")).length() ? -1 : (int)request->arg(F("SDA")).toInt();
|
||||||
|
@ -288,7 +288,7 @@ void initServer()
|
|||||||
bool isConfig = false;
|
bool isConfig = false;
|
||||||
|
|
||||||
if (!requestJSONBufferLock(14)) {
|
if (!requestJSONBufferLock(14)) {
|
||||||
serveJsonError(request, 503, ERR_NOBUF);
|
request->deferResponse();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user