Moved FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET into config-system

This commit is contained in:
CommanderRedYT
2022-01-17 11:23:22 +01:00
parent cb11ca3c9e
commit 9125a968d5
8 changed files with 141 additions and 121 deletions

View File

@ -51,10 +51,11 @@ httpd_handle_t httpdHandle;
void initWebserver() void initWebserver()
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
webserver_lock.construct(); {
webserver_lock->take(portMAX_DELAY); webserver_lock.construct();
#endif webserver_lock->take(portMAX_DELAY);
}
{ {
httpd_config_t httpConfig HTTPD_DEFAULT_CONFIG(); httpd_config_t httpConfig HTTPD_DEFAULT_CONFIG();
@ -100,11 +101,12 @@ void initWebserver()
void handleWebserver() void handleWebserver()
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
webserver_lock->give(); {
vTaskDelay(1); webserver_lock->give();
webserver_lock->take(portMAX_DELAY); vTaskDelay(1);
#endif webserver_lock->take(portMAX_DELAY);
}
} }
namespace { namespace {
@ -165,16 +167,19 @@ bool menuDisplayChanged()
esp_err_t webserver_status_handler(httpd_req_t *req) esp_err_t webserver_status_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");
std::string wants_json_query; std::string wants_json_query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))
wants_json_query = *result; wants_json_query = *result;

View File

@ -36,15 +36,16 @@ constexpr const char * const TAG = "BOBBYWEB";
esp_err_t webserver_root_handler(httpd_req_t *req) esp_err_t webserver_root_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string body; std::string body;
@ -288,15 +289,16 @@ esp_err_t webserver_root_handler(httpd_req_t *req)
esp_err_t webserver_triggerRawButton_handler(httpd_req_t *req) esp_err_t webserver_triggerRawButton_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))
@ -362,15 +364,16 @@ esp_err_t webserver_triggerRawButton_handler(httpd_req_t *req)
esp_err_t webserver_triggerButton_handler(httpd_req_t *req) esp_err_t webserver_triggerButton_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))
@ -436,15 +439,17 @@ esp_err_t webserver_triggerButton_handler(httpd_req_t *req)
esp_err_t webserver_triggerItem_handler(httpd_req_t *req) esp_err_t webserver_triggerItem_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");
std::string query; std::string query;
@ -525,15 +530,16 @@ esp_err_t webserver_triggerItem_handler(httpd_req_t *req)
esp_err_t webserver_setValue_handler(httpd_req_t *req) esp_err_t webserver_setValue_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");

View File

@ -135,16 +135,16 @@ showInputForSetting(std::string_view key, T value, JsonObject &body)
esp_err_t webserver_dump_nvs_handler(httpd_req_t *req) esp_err_t webserver_dump_nvs_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
DynamicJsonDocument doc(6144); DynamicJsonDocument doc(6144);
const auto profile = settingsPersister.currentlyOpenProfileIndex(); const auto profile = settingsPersister.currentlyOpenProfileIndex();
const auto switchBackProfile = profile ? int(*profile) : 0; const auto switchBackProfile = profile ? int(*profile) : 0;

View File

@ -1,5 +1,3 @@
#include "webserver_lock.h" #include "webserver_lock.h"
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET
cpputils::DelayedConstruction<espcpputils::mutex_semaphore> webserver_lock; cpputils::DelayedConstruction<espcpputils::mutex_semaphore> webserver_lock;
#endif

View File

@ -4,6 +4,4 @@
#include <delayedconstruction.h> #include <delayedconstruction.h>
#include <wrappers/mutex_semaphore.h> #include <wrappers/mutex_semaphore.h>
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET
extern cpputils::DelayedConstruction<espcpputils::mutex_semaphore> webserver_lock; extern cpputils::DelayedConstruction<espcpputils::mutex_semaphore> webserver_lock;
#endif

View File

@ -262,16 +262,17 @@ showInputForSetting(std::string_view key, T value, std::string &body)
esp_err_t webserver_newSettings_handler(httpd_req_t *req) esp_err_t webserver_newSettings_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
ESP_LOGI(TAG, "trying to lock...");
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; ESP_LOGI(TAG, "trying to lock...");
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); if (!helper.locked())
{
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string body; std::string body;
@ -507,15 +508,16 @@ saveSetting(ConfigWrapper<T> &config, std::string_view newValue)
esp_err_t webserver_saveNewSettings_handler(httpd_req_t *req) esp_err_t webserver_saveNewSettings_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))
@ -576,15 +578,16 @@ esp_err_t webserver_saveNewSettings_handler(httpd_req_t *req)
esp_err_t webserver_resetNewSettings_handler(httpd_req_t *req) esp_err_t webserver_resetNewSettings_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))

View File

@ -34,16 +34,19 @@ constexpr const char * const TAG = "BOBBYWEB";
esp_err_t webserver_ota_percentage_handler(httpd_req_t *req) esp_err_t webserver_ota_percentage_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");
std::string body; std::string body;
std::string wants_json_query; std::string wants_json_query;
@ -93,16 +96,19 @@ esp_err_t webserver_ota_percentage_handler(httpd_req_t *req)
esp_err_t webserver_ota_handler(httpd_req_t *req) esp_err_t webserver_ota_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");
std::string body; std::string body;
std::string wants_json_query; std::string wants_json_query;
@ -361,16 +367,19 @@ esp_err_t webserver_ota_handler(httpd_req_t *req)
esp_err_t webserver_trigger_ota_handler(httpd_req_t *req) esp_err_t webserver_trigger_ota_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud"); CALL_AND_EXIT_ON_ERROR(httpd_resp_set_hdr, req, "Access-Control-Allow-Origin", "http://web.bobbycar.cloud");
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))
query = *result; query = *result;

View File

@ -89,16 +89,16 @@ showInputForSetting(std::string_view key, T value, std::string &body)
esp_err_t webserver_settings_handler(httpd_req_t *req) esp_err_t webserver_settings_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string body; std::string body;
{ {
@ -257,15 +257,16 @@ saveSetting(T &value, std::string_view newValue, std::string &body)
esp_err_t webserver_saveSettings_handler(httpd_req_t *req) esp_err_t webserver_saveSettings_handler(httpd_req_t *req)
{ {
#ifndef FEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET if (!configs.feature.webserver_disable_lock.value)
espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
if (!helper.locked())
{ {
constexpr const std::string_view msg = "could not lock webserver_lock"; espcpputils::LockHelper helper{webserver_lock->handle, std::chrono::ceil<espcpputils::ticks>(5s).count()};
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data()); if (!helper.locked())
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg); {
constexpr const std::string_view msg = "could not lock webserver_lock";
ESP_LOGE(TAG, "%.*s", msg.size(), msg.data());
CALL_AND_EXIT(esphttpdutils::webserver_resp_send, req, esphttpdutils::ResponseStatus::BadRequest, "text/plain", msg);
}
} }
#endif
std::string query; std::string query;
if (auto result = esphttpdutils::webserver_get_query(req)) if (auto result = esphttpdutils::webserver_get_query(req))