diff --git a/src/usb/lwip/rest.c b/src/usb/lwip/rest.c index fdcdfe0..6f468f0 100644 --- a/src/usb/lwip/rest.c +++ b/src/usb/lwip/rest.c @@ -207,7 +207,8 @@ int rest_execute_route_handler(const rest_request_t *request, rest_route_handler response->json = NULL; return -1; } - if (response->status_code == 0 || response->status_code == 200 || response->status_code == 201 || response->status_code == 204) { + bool is_json_response = (response->content_type != NULL && strcmp(response->content_type, "application/json") == 0); + if (is_json_response && (response->status_code == 0 || response->status_code == 200 || response->status_code == 201 || response->status_code == 204)) { char *body = cJSON_PrintUnformatted(response->json); cJSON_Delete(response->json); response->json = NULL; @@ -222,6 +223,7 @@ int rest_execute_route_handler(const rest_request_t *request, rest_route_handler } } response->body = body; + response->body_len = 0; } if (response->json != NULL) { cJSON_Delete(response->json); @@ -395,4 +397,4 @@ rest_route_handler_t rest_background_job_pop(void) { } } return NULL; -} \ No newline at end of file +} diff --git a/src/usb/lwip/rest_server.c b/src/usb/lwip/rest_server.c index 51ae3d5..ac88fc4 100644 --- a/src/usb/lwip/rest_server.c +++ b/src/usb/lwip/rest_server.c @@ -754,7 +754,7 @@ void rest_handle_request(rest_conn_t *conn) { rest_debug_dump_payload("request-body", request->body, request->body_len); if (request->method == REST_HTTP_POST || request->method == REST_HTTP_PUT) { - if (!rest_content_type_is_json(request->content_type)) { + if (!rest_content_type_is_json(request->content_type) && strncasecmp(request->content_type, "application/x-pem-file", 22) != 0) { send_json_error(conn, 415, "content_type_must_be_application_json"); return; }