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; break;
} }
case "packet": { case "packet": {
const decodedMessage = fromBinary( let decodedMessage: Protobuf.Mesh.FromRadio;
Protobuf.Mesh.FromRadioSchema, try {
chunk.data, 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); device.events.onFromRadio.dispatch(decodedMessage);
/** @todo Add map here when `all=true` gets fixed. */ /** @todo Add map here when `all=true` gets fixed. */
switch (decodedMessage.payloadVariant.case) { switch (decodedMessage.payloadVariant.case) {
case "packet": { 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; break;
} }

Loading…
Cancel
Save