From 2e70b700b6fe5cad62326f22ee294e0c18b5634d Mon Sep 17 00:00:00 2001 From: Brannon Dorsey Date: Wed, 6 Mar 2019 21:27:23 -0500 Subject: [PATCH] Close #24. Fix unhandled exception when receiving non-chattervox AX.25 packets. --- src/Messenger.ts | 2 +- src/Packet.ts | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Messenger.ts b/src/Messenger.ts index 69a6469..ed43b0c 100644 --- a/src/Messenger.ts +++ b/src/Messenger.ts @@ -93,7 +93,7 @@ export class Messenger extends EventEmitter { }) } - private async _onAX25DataRecieved(data: any) { + private async _onAX25DataRecieved(data: any): Promise { let packet: Packet try { diff --git a/src/Packet.ts b/src/Packet.ts index 82a56e0..3737f1e 100644 --- a/src/Packet.ts +++ b/src/Packet.ts @@ -163,20 +163,29 @@ export class Packet { } static async FromAX25Packet(ax25Buffer: Buffer): Promise { - + const ax25Packet = new AX25.Packet() try { ax25Packet.disassemble(ax25Buffer) } catch (err) { - const error = TypeError(err.message) - error.name = 'InvalidPacket' - throw error + throwInvalidPacketError(err) } const packet = new Packet() packet.from = ax25Packet.source packet.to = ax25Packet.destination - await packet.disassemble(ax25Packet.payload) + try { + await packet.disassemble(ax25Packet.payload) + } catch (err) { + throwInvalidPacketError(err) + } + return packet } } + +function throwInvalidPacketError(err: Error): TypeError { + const error = TypeError(err.message) + error.name = 'InvalidPacket' + throw error +}