mirror of
https://github.com/meshtastic/web.git
synced 2025-12-24 00:00:01 -05:00
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user