Catch packet decoding errors (#809)
* Catch decoding errors, refs #808 * Catch packet handling errors * Add missing type
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user