Skip to content

Commit

Permalink
Avoid 507, reduce buffer stepwise until it fits
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDvP committed Dec 27, 2022
1 parent 28de5bb commit a41de7e
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 21 deletions.
12 changes: 5 additions & 7 deletions src/web/WebAPIService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,12 @@ void WebAPIService::parse(AsyncWebServerRequest * request, JsonObject & input) {
}

// output json buffer
auto * response = new PrettyAsyncJsonResponse(false, EMSESP_JSON_SIZE_XXLARGE_DYN);
if (!response->getSize()) {
size_t buffer = EMSESP_JSON_SIZE_XXLARGE_DYN;
auto * response = new PrettyAsyncJsonResponse(false, buffer);
while (!response->getSize()) {
delete response;
response = new PrettyAsyncJsonResponse(false, 256);
response->setCode(507); // Insufficient Storage
response->setLength();
request->send(response);
return;
buffer -= 1024;
response = new PrettyAsyncJsonResponse(false, buffer);
}
JsonObject output = response->getRoot();

Expand Down
12 changes: 5 additions & 7 deletions src/web/WebCustomizationService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,14 +200,12 @@ void WebCustomizationService::devices(AsyncWebServerRequest * request) {
// send back list of device entities
void WebCustomizationService::device_entities(AsyncWebServerRequest * request, JsonVariant & json) {
if (json.is<JsonObject>()) {
auto * response = new MsgpackAsyncJsonResponse(true, EMSESP_JSON_SIZE_XXXLARGE_DYN);
if (!response->getSize()) {
size_t buffer = EMSESP_JSON_SIZE_XXXLARGE_DYN;
auto * response = new PrettyAsyncJsonResponse(true, buffer);
while (!response->getSize()) {
delete response;
response = new MsgpackAsyncJsonResponse(true, 256);
response->setCode(507); // Insufficient Storage
response->setLength();
request->send(response);
return;
buffer -= 1024;
response = new PrettyAsyncJsonResponse(true, buffer);
}
for (const auto & emsdevice : EMSESP::emsdevices) {
if (emsdevice->unique_id() == json["id"]) {
Expand Down
12 changes: 5 additions & 7 deletions src/web/WebDataService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,14 +165,12 @@ void WebDataService::sensor_data(AsyncWebServerRequest * request) {
// Compresses the JSON using MsgPack https://msgpack.org/index.html
void WebDataService::device_data(AsyncWebServerRequest * request, JsonVariant & json) {
if (json.is<JsonObject>()) {
auto * response = new MsgpackAsyncJsonResponse(false, EMSESP_JSON_SIZE_XXXLARGE_DYN);
if (!response->getSize()) {
size_t buffer = EMSESP_JSON_SIZE_XXXLARGE_DYN;
auto * response = new PrettyAsyncJsonResponse(false, buffer);
while (!response->getSize()) {
delete response;
response = new MsgpackAsyncJsonResponse(false, 256);
response->setCode(507); // Insufficient Storage
response->setLength();
request->send(response);
return;
buffer -= 1024;
response = new PrettyAsyncJsonResponse(false, buffer);
}
for (const auto & emsdevice : EMSESP::emsdevices) {
if (emsdevice->unique_id() == json["id"]) {
Expand Down

0 comments on commit a41de7e

Please sign in to comment.