fix(network): a text message on a UDP data channel throws inside the native callback

Aberta Para iniciantes
#477 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
78/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
node.js, typescript
Domínio
networking

Direção de pesquisa

Leia modules/network/src/server/udp.server.network.ts por volta das linhas 421-424 e modules/network/src/server/utils.ts por volta da linha 37 para rastrear como as mensagens do canal são convertidas. Comece verificando o tratamento existente de PeerHost em peer-host.ts:312, depois encontre os testes do canal do pacote de rede e adicione cobertura para uma mensagem do tipo string. O trabalho estará concluído quando os dados do tipo string forem tratados sem uma exceção não capturada e o teste passar.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug modules:network
Which package is this bug report for?

network

Issue description

message.data is cast to ArrayBuffer, but a peer can send a string. rawDataToUint8Array matches none of its branches and throws Unsupported WebSocket RawData type inside a node-datachannel event callback, with no try/catch, which can surface as an uncaught exception on the server. PeerHost handles this correctly (peer-host.ts:312, instanceof ArrayBuffer).

Where:

Evidence:

channel.onmessage = (message) => {
  const packet = rawDataToUint8Array(message.data as ArrayBuffer);

Suggested fix: Return early unless message.data is an ArrayBuffer or a view. Add a test that sends a string over the channel.

Found during a code audit of main at be72076.

Code sample

No response

Versions
  • Engine main at 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

Linguagem predominante
TypeScript
Estrelas
7
Forks
2
Merge médio
1d 17h
PRs com merge (30d)
17

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de NanoForge-dev/Engine

Todas as issues de NanoForge-dev/Engine

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.