Browse Source

Catch packet decoding errors (#809)

* Catch decoding errors, refs #808

* Catch packet handling errors

* Add missing type
pull/815/head
Henri Bergius 9 months ago
committed by GitHub
parent
commit
b87fad23d8
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 28
      packages/core/src/utils/transform/decodePacket.ts

28
packages/core/src/utils/transform/decodePacket.ts

@ -24,16 +24,34 @@ export const decodePacket = (device: MeshDevice) =>
break;
}
case "packet": {
const decodedMessage = fromBinary(
Protobuf.Mesh.FromRadioSchema,
chunk.data,
);
let decodedMessage: Protobuf.Mesh.FromRadio;
try {
decodedMessage = fromBinary(
Protobuf.Mesh.FromRadioSchema,
chunk.data,
);
} catch (e) {
device.log.error(
Types.Emitter[Types.Emitter.HandleFromRadio],
"⚠️ Received undecodable packet",
e,
);
break;
}
device.events.onFromRadio.dispatch(decodedMessage);
/** @todo Add map here when `all=true` gets fixed. */
switch (decodedMessage.payloadVariant.case) {
case "packet": {
device.handleMeshPacket(decodedMessage.payloadVariant.value);
try {
device.handleMeshPacket(decodedMessage.payloadVariant.value);
} catch (e) {
device.log.error(
Types.Emitter[Types.Emitter.HandleFromRadio],
"⚠️ Unable to handle mesh packet",
e,
);
}
break;
}

Loading…
Cancel
Save