From: Chris Duncan Date: Sun, 9 Aug 2026 23:27:10 +0000 (-0700) Subject: Post data parsing errors back to worker host if possible. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=78a9998d3344d83a55a20dab9c705b8bd1606ca5;p=libnemo.git Post data parsing errors back to worker host if possible. --- diff --git a/src/lib/vault/vault-worker.ts b/src/lib/vault/vault-worker.ts index 6ca1568..95c5441 100644 --- a/src/lib/vault/vault-worker.ts +++ b/src/lib/vault/vault-worker.ts @@ -35,12 +35,24 @@ const listener = (event: MessageEvent): void => { BROWSER: if (taskUrl !== location.href) return NODE: if (taskUrl !== dec.toString(threadId)) return NODE: if (parentPort == null) return void setTimeout(() => listener(event), 0) - const action = parseAction(data) - const keySalt = parseKeySalt(action, data) - const type = parseType(action, data) - const id = parseId(action, data) - const iv = parseIv(action, data) - const parsed = parseData(action, data) + let action: ReturnType + let keySalt: ArrayBuffer + let type: ReturnType + let id: UUID | undefined + let iv: ArrayBuffer | undefined + let parsed: ReturnType + try { + action = parseAction(data) + keySalt = parseKeySalt(action, data) + type = parseType(action, data) + id = parseId(action, data) + iv = parseIv(action, data) + parsed = parseData(action, data) + } catch (err) { + BROWSER: self.postMessage({ taskUrl, taskId, error: new Error('Failed to process Vault request', { cause: err }) }) + NODE: parentPort?.postMessage({ data: { taskUrl, taskId, error: new Error('Failed to process Vault request', { cause: err }) } }) + return + } const { seed, mnemonicPhrase, mnemonicSalt, index, encrypted, message, timeout } = parsed passkey(action, keySalt, data) .then((key: CryptoKey | undefined): Promise | void> => {