From 2808ccc149a7ad3e18c8b221f424555193fc3d14 Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Wed, 15 Oct 2025 00:05:50 +0200 Subject: [PATCH] Fix MSP callback on crc error --- src/js/msp/MSPHelper.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js index be31840a98..f175d04950 100644 --- a/src/js/msp/MSPHelper.js +++ b/src/js/msp/MSPHelper.js @@ -1779,13 +1779,17 @@ MspHelper.prototype.process_data = function (dataHandler) { // remove object from array dataHandler.callbacks.splice(i, 1); - if (!crcError) { - // fire callback - if (callback) { - callback({ command: code, data: data, length: data.byteLength, crcError: crcError }); + // Always invoke callback and pass crcError flag. Callbacks expect to + // receive the original DataView so they can choose how to handle CRC + // errors; don't replace the data with null here to avoid breaking + // existing consumers that dereference response.data before checking + // crcError. + if (callback) { + try { + callback({ command: code, data: data, length: data ? data.byteLength : 0, crcError: crcError }); + } catch (e) { + console.error(`callback for code ${code} threw:`, e); } - } else { - console.warn(`code: ${code} - crc failed. No callback`); } } }