From 9a89b48c261c1793d07abdad63c04fcff40035be Mon Sep 17 00:00:00 2001 From: xengineering Date: Thu, 17 Apr 2025 17:22:21 +0200 Subject: WIP: fw: app: Fix empty HTTP response This was caused by a body_len set to 0 because of changed semantics in the return value of settings_to_json(). --- fw/app/src/http.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'fw/app/src') diff --git a/fw/app/src/http.c b/fw/app/src/http.c index eb3d695..1c24490 100644 --- a/fw/app/src/http.c +++ b/fw/app/src/http.c @@ -5,6 +5,7 @@ */ +#include #include #include @@ -101,16 +102,24 @@ static int settings_handler( ) { static char buffer[100]; - int ret = settings_to_json(buffer, sizeof(buffer)); + int ret = settings_to_json(buffer, sizeof(buffer) - 1); if (ret < 0) { LOG_ERR("Could not serialize payload for settings request"); return ret; } - LOG_INF("Encoded: '%s'", buffer); + size_t len = strnlen(buffer, sizeof(buffer)); + if (len + 2 > sizeof(buffer)) { + LOG_ERR("Settings JSON requires %d octets but buffer has only %d", + len + 2, sizeof(buffer)); + return -ENOMEM; + } + + buffer[len] = '\n'; + buffer[len + 1] = '\0'; response_ctx->body = (const uint8_t *)buffer; - response_ctx->body_len = ret; + response_ctx->body_len = len + 1; response_ctx->final_chunk = true; response_ctx->status = HTTP_200_OK; -- cgit v1.2.3-70-g09d2