From 908fc538050bbafbc5ff147baad099c77447d709 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Wed, 2 Sep 2026 07:56:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(panel):=20/api/overview=20=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=AB=AF=E8=87=AA=E6=A0=A1=E9=AA=8C=E2=80=94=E2=80=94?= =?UTF-8?q?jv=5Fparse=20=E5=8F=91=E5=87=BA=E5=89=8D=E8=87=AA=E6=9F=A5?= =?UTF-8?q?=EF=BC=8C=E5=9D=8F=E5=88=99=20dump=20/tmp/overview=5Fbad.json?= =?UTF-8?q?=20+=20500=EF=BC=88=E8=BF=BD=E6=9F=A5=E9=97=B4=E6=AD=87?= =?UTF-8?q?=E6=80=A7=E9=9D=9E=20JSON=20=E7=A0=B4=E9=A1=B5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/meowpanel/meowpanel.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/patch_v2/meowpanel/meowpanel.c b/patch_v2/meowpanel/meowpanel.c index 0459168..df9e5c0 100644 --- a/patch_v2/meowpanel/meowpanel.c +++ b/patch_v2/meowpanel/meowpanel.c @@ -1682,6 +1682,16 @@ static int api_overview(int sock) sA(&s, ",\"svcd\":"); svcd_fill(&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 : "{}"); sbuf_free(&s); return rc;