fix(network): bound frame size and per-peer packet queues on the TCP/UDP servers
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- bun, typescript
- Bereich
- backend, networking
Rechercherichtung
Start with the TCP and UDP server entry points at modules/network/src/server/tcp.server.network.ts and modules/network/src/server/udp.server.network.ts, then trace the packet and candidate queues in peer-host.ts and packet.ts. Read how the existing signaling server sets maxPayloadLength and check for network tests covering frames and queue behavior. Done means frame size and per-peer queues, including pendingCandidates, are bounded, with tests demonstrating the limits.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Which package is this bug report for?
network
Issue description
The TCP and UDP Bun.serve calls keep Bun's default maxPayloadLength (about 16 MB); only SignalingServer sets one (signaling.server.network.ts:77). Per-client packet queues and pendingCandidates have no cap on count or bytes, and there is no rate limit. Each frame is copied twice and every typed packet is JSON.parsed even when nothing listens. One connected peer can exhaust server memory and CPU.
Where:
modules/network/src/server/tcp.server.network.ts:98modules/network/src/server/tcp.server.network.ts:134modules/network/src/server/udp.server.network.ts:174modules/network/src/server/peer-host.ts:315modules/network/src/shared/packet.ts:238
Evidence:
client.packets.get(frame.channel)?.push(frame.data);
webSocket.data.pendingCandidates.push(data.candidate);
if (payload) state.packets.push(payload);
grep -rn maxPayloadLength modules/network/src → only signaling.server.network.ts:77.
Suggested fix: Set maxPayloadLength (e.g. 64 KiB) on TCP and UDP, and cap per-peer queue length or bytes (drop the oldest or close the peer) and pendingCandidates.
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
High (immediate attention needed)
I have tested this issue on a development release
be72076
- Vorherrschende Sprache
- TypeScript
- Sterne
- 7
- Forks
- 2
- Ø Merge
- 1 T. 17 Std.
- Gemergte PRs (30 T.)
- 17
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NanoForge-dev/Engine
-
dependencies enhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NanoForge-dev/Engine#513 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug chore tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
NanoForge-dev/Engine#511 ·
Maintainer antworten meist innerhalb von 1 Tag
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversOffendocumentation good first issue modules:network
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
NanoForge-dev/Engine#509 ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation modules:ecs packages:asset packages:core
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
NanoForge-dev/Engine#508 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug good first issue modules:music modules:sound
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NanoForge-dev/Engine#505 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in NanoForge-dev/Engine
Ähnliche Issues
-
Mend: dependency security vulnerability
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 65/100
fdm-monster/fdm-monster#5563 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
Maintainer antworten meist innerhalb von 1 Tag
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
growilabs/growi#12246 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
SSWConsulting/SSW.Rules#2809 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag