chick 0f983f046a fix(agent): 读上限要容得下整批轮询结果
同一类缺陷的第四处,也是最难发现的一处,因为它在最繁忙那条接缝的另一侧。agent
限制自己从中继读多少,而那个上限必须容得下中继**合法能发**的最大东西:一整批
轮询结果,即每个邮箱槽一个信封。原值 1 MiB 是"给宽一点"拍出来的,没有任何推导;
而按策略上限算,满邮箱的一批约 4 MiB。于是 agent 会拒掉一个中继答得好好的轮询,
然后重试进同一个拒绝——表现为持续的连接抖动,日志说"relay response exceeds
1048576 bytes",而中继那边一切正常。

现在取 8 MiB,并把推导写清楚:中继信封上限 × 邮箱深度,留一档余量。两侧的关系由
test/limits.test.js 钉住(常量从 Go 源码读出),因为这是跨语言、跨进程的一对数字,
任何一侧单独都看不到。

变异验证:改回 1 MiB,测试失败。

Node 119 项、Go 全包、Swift 101 项通过。
2026-09-17 07:21:29 +08:00
S
Description
Outbound-only node agent for SimAdmin nodes: long-polls a relay, verifies signed envelopes, and forwards to the local SimAdmin on loopback. Static Go binary, no third-party modules.
268 KiB
2026-09-18 12:39:58 +08:00
Languages
Go 96.8%
Shell 2.4%
Makefile 0.8%