From: Chris Duncan Date: Wed, 12 Aug 2026 00:17:16 +0000 (-0700) Subject: Restore try-catch on unexpectedly-invalid batch responses. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=616b59481ad73764e12c69a11457ef47ec0e3959;p=libnemo.git Restore try-catch on unexpectedly-invalid batch responses. --- diff --git a/src/lib/rpc/accounts_balances.ts b/src/lib/rpc/accounts_balances.ts index 7a0a9b2..0704c4e 100644 --- a/src/lib/rpc/accounts_balances.ts +++ b/src/lib/rpc/accounts_balances.ts @@ -33,7 +33,13 @@ export function accounts_balances (body: unknown): AccountsBalancesResponse { response.balances = balances for (const [address, data] of Object.entries(body.balances) as [string, unknown][]) { if (Account.isValid(address)) { - balances[address] = account_balance(data) + try { + balances[address] = account_balance(data) + } catch (err: any) { + const errors = response.errors ?? Object.create(null) + response.errors = errors + errors[address] = err?.message ?? 'Invalid account balance' + } } } } diff --git a/src/lib/rpc/accounts_frontiers.ts b/src/lib/rpc/accounts_frontiers.ts index 9eb6fc7..7d1aa5b 100644 --- a/src/lib/rpc/accounts_frontiers.ts +++ b/src/lib/rpc/accounts_frontiers.ts @@ -33,7 +33,13 @@ export function accounts_frontiers (body: unknown): AccountsFrontiersResponse { response.frontiers = frontiers for (const [address, frontier] of Object.entries(body.frontiers) as [string, unknown][]) { if (Account.isValid(address) && hex.is(frontier, 64)) { - frontiers[address] = frontier + try { + frontiers[address] = frontier + } catch (err: any) { + const errors = response.errors ?? Object.create(null) + response.errors = errors + errors[address] = err?.message ?? 'Invalid account balance' + } } } } diff --git a/src/lib/rpc/blocks_info.ts b/src/lib/rpc/blocks_info.ts index 7d59f61..94ae905 100644 --- a/src/lib/rpc/blocks_info.ts +++ b/src/lib/rpc/blocks_info.ts @@ -56,7 +56,13 @@ export function blocks_info (body: unknown): BlocksInfoResponse { response.blocks = blocks for (const [hash, data] of Object.entries(body.blocks) as [string, unknown][]) { if (hex.is(hash, 64)) { - blocks[hash] = block_info(data) + try { + blocks[hash] = block_info(data) + } catch (err: any) { + const errors = response.errors ?? Object.create(null) + response.errors = errors + errors[hash] = err?.message ?? 'Invalid block' + } } } }