| content |
{"Commits":[{"Sha1":"6c8e4bad4 {"Commits":[{"Sha1":"6c8e4bad40e933e2bf7e0e10e0c92b1dc34a747f","Message":"fix: 下载路径对非 ASCII 字节做百分号编码,修复 BunnyCDN 回源 400\n\nBunnyCDN 回源时对请求行里的原始 UTF-8 路径回 400,旧 openresty 不校验,\n所以新歌(缓存未命中)全部下载失败。WorkCoping 把 \u003e=0x80 的字节编成 %XX。\n版本号 2026.10.27.02。新增更新记录与根因分析文档。\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-27T15:24:05+08:00"},{"Sha1":"26b09bc9cc7155a444e2d786d374ce9880f3f97c","Message":"docs: 补充 E1 24 小时稳定性测试结果\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-10T16:25:37+08:00"},{"Sha1":"33ff78887d503b289af1ea0a3a6da01a0abb48ed","Message":"docs: 多主机镜像下载架构文档化,更新 CLAUDE.md 与验收报告\n\n新增 docs/multi-master.md(设计)和 docs/acceptance-multi-master.md(验收);\nCLAUDE.md、architecture.md 改为对等多主机描述,更正 MINDISK 为 8000MB;\nprotocol-udp.md 补充 2600 协议;旧主副机文档加架构变更警示。\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-09T17:06:20+08:00"},{"Sha1":"4e00e5564f5b2b45938f33f612bedd47b3b416d7","Message":"test: 新增多主机下载验收用的模拟包厢和对端状态注入工具\n\nfake_room.py:模拟安卓/Linux 包厢,发 1001/取消,记录各服务器回包的来源、端口、进度和结果并做判定\npeer_inject.py:向 2600 端口注入 1010/1011,用于墓碑、清理等场景\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-09T16:58:56+08:00"},{"Sha1":"ba3fa5f466255f62d22298795174ff2e24dbf11d","Message":"feat: 多主机镜像下载——每台服务器独立下载,由选出的汇报者统一回包\n\n背景:门店里所有服务器都是\"主机\",每首歌各自从云端下载,不再需要主辅机同步;\n但 1001 是广播,多台各自回包会让包厢进度乱跳、先成功后失败时删歌并弹网络异常。\n\n互报协议(UDP 2600,仅服务器之间):\n- 1010 任务状态、1011 心跳(5秒)、1013 重复点歌事件\n- 汇报者 = 在线且非失败的服务器里 IP 最小的一台;只有汇报者向包厢回 1002/1001/已存在/8015\n- 自愈:漏收 1001 的服务器按对端的 1010 补建静默下载任务\n- 墓碑与新一轮:终态清理后迟到的旧状态不再重复汇报;同一首歌可再次点歌\n- 全部失败有宽限期,并有 45 秒硬上限,避免汇报者反复切换导致迟迟不报失败\n- 删除主机/辅机角色及其同步代码(1003/1004/1005/2018、辅机拉歌、分发同步),\n \"主机\"、\"分发同步\"配置不再读取\n\n混合版本(新旧版同时在线,远程升级无法保证同步):\n- 旧版没有 2600 协议,会各自直接回包。用 2012 心跳(新旧版都发)加\"从未出现过 2600 心跳\"识别旧版\n- 有旧版\"主机\"在线时新版不发 1001 false,避免先成功后失败;旧版辅机不回房间,\n 通过它 8001 端口的 system.ini 探测\"主机=是/否\",辅机不算\n- 识别结果带有效期,同 IP 换成旧版或 2600 被隔离时也能识别\n\n修复:\n- 用户取消下载后 45 秒会收到 1001 false:汇报者识别\"已取消\",不回包,并允许立即重新点歌\n- 上一轮的 DONE/EXIST/FAILED 残留导致重新点歌时 true 比文件落盘早二十多秒:新一轮重置各主机状态\n- 终态后 60 秒内同一房间重新点同一首歌没有任何回包:用本机收到 1001 的到达时刻判断新一轮\n- 非汇报者的任务记录永远不清理:按最后活动时间清理,成功过的留墓碑\n- 2600 和 50003 端口 UDP 包字段类型不对(function 为数字等)会让进程段错误:统一用 PeerStr 校验\n- 歌名含空格/加号时已存在判断失败导致反复下载(FileExistDecoded)\n- DownLoadFile 取消(state=3)被 state=1 覆盖,且取消后临时文件不清理\n- 失败回包按任务自身机型选端口,不再用全局 cocosPort\n\n版本 2026.10.09.06。\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-09T16:58:56+08:00"}],"HeadCommit":{"Sha1":"6c8e4bad40e933e2bf7e0e10e0c92b1dc34a747f","Message":"fix: 下载路径对非 ASCII 字节做百分号编码,修复 BunnyCDN 回源 400\n\nBunnyCDN 回源时对请求行里的原始 UTF-8 路径回 400,旧 openresty 不校验,\n所以新歌(缓存未命中)全部下载失败。WorkCoping 把 \u003e=0x80 的字节编成 %XX。\n版本号 2026.10.27.02。新增更新记录与根因分析文档。\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"laiqiaojie@g-hi.com","AuthorName":"laiqiaojie","CommitterEmail":"laiqiaojie@g-hi.com","CommitterName":"laiqiaojie","Timestamp":"2026-10-27T15:24:05+08:00"},"CompareURL":"laiqiaojie/httpclient_x86/compare/e5cb0cb24826326208966c3ead539ae1d3e5d12a...6c8e4bad40e933e2bf7e0e10e0c92b1dc34a747f","Len":6}... |