feat(panel): /api/overview 服务端自校验——jv_parse 发出前自查,坏则 dump /tmp/overview_bad.json + 500(追查间歇性非 JSON 破页)
This commit is contained in:
1 parent
44a790dc1d
commit
908fc53805
1 file changed
+10
@@ -1682,6 +1682,16 @@ static int api_overview(int sock)
|
|||||||
sA(&s, ",\"svcd\":");
|
sA(&s, ",\"svcd\":");
|
||||||
svcd_fill(&s);
|
svcd_fill(&s);
|
||||||
sA(&s, "}");
|
sA(&s, "}");
|
||||||
|
/* 服务端自校验:发出前 jv_parse 自查,坏了留证+回 500(防「非 JSON 响应」破页,2026-09-02 间歇性事故) */
|
||||||
|
jv_t *chk = jv_parse(s.b ? s.b : "{}", (int)(s.b ? s.n : 2));
|
||||||
|
if (!chk && s.b) {
|
||||||
|
FILE *df = fopen("/tmp/overview_bad.json", "w");
|
||||||
|
if (df) { fwrite(s.b, 1, s.n, df); fclose(df); }
|
||||||
|
panel_log("overview: SELF-CHECK json invalid, raw dumped /tmp/overview_bad.json (%zu bytes)", s.n);
|
||||||
|
sbuf_free(&s);
|
||||||
|
return send_err(sock, 500, "INTERNAL", "overview 聚合输出未通过 JSON 自校验(原始数据已留 /tmp/overview_bad.json)");
|
||||||
|
}
|
||||||
|
if (chk) jv_free(chk);
|
||||||
int rc = send_json(sock, 200, s.b ? s.b : "{}");
|
int rc = send_json(sock, 200, s.b ? s.b : "{}");
|
||||||
sbuf_free(&s);
|
sbuf_free(&s);
|
||||||
return rc;
|
return rc;
|
||||||
|
|||||||
Reference in new issue
Block a user