fix(network): one non-open data channel aborts a UDP broadcast for every client
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 82/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
- 领域
- networking
调研方向
阅读 modules/network/src/server/udp.server.network.ts 第244–248行和第402–407行附近的代码,然后将其发送处理方式与 peer-host.ts:203 中的 PeerHost.send 进行比较。检查数据通道未打开或发送抛出错误时,接收方迭代会如何表现。完成标准是:某个接收方的通道状态或发送错误不会阻止向后续客户端广播;运行相关的网络测试。
由索引模型根据 Issue 内容生成。
描述
Which package is this bug report for?
network
Issue description
The channel state is put into _clients in ondatachannel, before onopen. send calls channel.send with no readyState check, so an InvalidStateError (or an oversize SCTP message) escapes forEach: while one client connects or disconnects, every later client misses the broadcast and the error reaches the game loop. PeerHost.send (peer-host.ts:203) checks readyState.
Where:
modules/network/src/server/udp.server.network.ts:244-248modules/network/src/server/udp.server.network.ts:402-407
Evidence:
this._clients.forEach((channels) => { const state = channels.get(channel); if (state) this.send(state, data); });
private send(state, data) { state.channel.send(state.sequencer ? state.sequencer.wrap(data) : data); }
Suggested fix: Skip channels that are not "open", and catch and log send errors per recipient.
Found during a code audit of main at be72076.
Code sample
No response
Versions
- Engine
mainat be72076 - pnpm 12.0.0, Node.js 26, Bun 1.3.14
Issue priority
Medium (should be fixed soon)
I have tested this issue on a development release
be72076
- 主要语言
- TypeScript
- 星标
- 7
- 派生
- 2
- 平均合并
- 1 天 17 小时
- 30 天内合并 PR
- 17
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NanoForge-dev/Engine 的其他 Issue
-
dependencies enhancement good first issue
难度 2/5 1-3 小时 新手友好度 78/100
NanoForge-dev/Engine#513 ·
维护者通常 1 天内回复
-
bug chore tests
难度 2/5 1-3 小时 新手友好度 77/100
NanoForge-dev/Engine#511 ·
维护者通常 1 天内回复
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN servers未关闭documentation good first issue modules:network
难度 1/5 1 小时以内 新手友好度 88/100
NanoForge-dev/Engine#509 ·
维护者通常 1 天内回复
-
documentation modules:ecs packages:asset packages:core
难度 2/5 1-3 小时 新手友好度 82/100
NanoForge-dev/Engine#508 ·
维护者通常 1 天内回复
-
bug good first issue modules:music modules:sound
难度 2/5 1-3 小时 新手友好度 78/100
NanoForge-dev/Engine#505 ·
维护者通常 1 天内回复
查看 NanoForge-dev/Engine 的全部 Issue
相似的 Issue
-
Mend: dependency security vulnerability
难度 1/5 1-3 小时 新手友好度 65/100
fdm-monster/fdm-monster#5563 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
难度 2/5 1-3 小时 新手友好度 79/100
维护者通常 1 天内回复
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
难度 2/5 1-3 小时 新手友好度 65/100
growilabs/growi#12246 · 3 条评论 ·
维护者通常 1 天内回复
-
🐛 The Rulekeeper - An index run that gives up on the lock ends Succeeded可能已有人在做 @github-actions 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
SSWConsulting/SSW.Rules#2809 · 1 条评论 ·
维护者通常 1 天内回复