diff --git a/runtime/el_runtime.c b/runtime/el_runtime.c index 4d2874e..1356ae8 100644 --- a/runtime/el_runtime.c +++ b/runtime/el_runtime.c @@ -1961,6 +1961,13 @@ el_val_t http_response(el_val_t status, el_val_t headers_json, el_val_t body) { const char* b = EL_CSTR(body); if (!b) b = ""; + /* Clear the fs_read binary-length hint: the envelope we're about to build + * is a fresh JSON string, not the raw file bytes. Without this reset, + * http_worker would use the stale _tl_fs_read_len (= original file size) + * to copy the response — truncating the larger envelope before it reaches + * http_send_response and http_parse_envelope. */ + _tl_fs_read_len = 0; + JsonBuf out; jb_init(&out); jb_puts(&out, EL_HTTP_RESPONSE_TAG); /* {"el_http_response":1 */ jb_puts(&out, ",\"status\":");