From ed7729a41226af3ceb99474dcde3015487218927 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Wed, 30 Sep 2020 15:02:47 -0600 Subject: [PATCH] fix(cosmic-swingset): make REPL history numbers more robust --- packages/cosmic-swingset/lib/ag-solo/vats/captp.js | 10 ++++++---- packages/cosmic-swingset/lib/ag-solo/vats/repl.js | 8 +++++--- packages/cosmic-swingset/lib/ag-solo/web.js | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/cosmic-swingset/lib/ag-solo/vats/captp.js b/packages/cosmic-swingset/lib/ag-solo/vats/captp.js index c3962c3bf0d..e840bfe5683 100644 --- a/packages/cosmic-swingset/lib/ag-solo/vats/captp.js +++ b/packages/cosmic-swingset/lib/ag-solo/vats/captp.js @@ -9,10 +9,12 @@ export const getCapTPHandler = ( fallback = undefined, ) => { const chans = new Map(); - const doFallback = (method, ...args) => - E(fallback) - [method](...args) - .catch(_ => {}); + const doFallback = async (method, ...args) => { + if (!fallback) { + return {}; + } + return E(fallback)[method](...args); + }; const handler = harden({ onOpen(obj, meta) { const { channelHandle, origin = 'unknown' } = meta || {}; diff --git a/packages/cosmic-swingset/lib/ag-solo/vats/repl.js b/packages/cosmic-swingset/lib/ag-solo/vats/repl.js index 320b7067763..0e58eeebc40 100644 --- a/packages/cosmic-swingset/lib/ag-solo/vats/repl.js +++ b/packages/cosmic-swingset/lib/ag-solo/vats/repl.js @@ -3,6 +3,7 @@ import { isPromise } from '@agoric/promise-kit'; import { E } from '@agoric/eventual-send'; +import Nat from '@agoric/nat'; import makeUIAgentMakers from './ui-agent'; // A REPL-specific JSON stringify. @@ -190,6 +191,7 @@ export function getReplHandler(replObjects, send, vatPowers) { doEval(obj, _meta) { const { number: histnum, body } = obj; console.debug(`doEval`, histnum, body); + Nat(histnum); if (histnum <= highestHistory) { throw new Error( `histnum ${histnum} is not larger than highestHistory ${highestHistory}`, @@ -250,10 +252,10 @@ export function getReplHandler(replObjects, send, vatPowers) { }, onMessage(obj, meta) { - if (handler[obj.type]) { - return handler[obj.type](obj, meta); + if (!handler[obj.type]) { + return false; } - return false; + return handler[obj.type](obj, meta); }, }); diff --git a/packages/cosmic-swingset/lib/ag-solo/web.js b/packages/cosmic-swingset/lib/ag-solo/web.js index e451a4d44c8..e2d91d35ce7 100644 --- a/packages/cosmic-swingset/lib/ag-solo/web.js +++ b/packages/cosmic-swingset/lib/ag-solo/web.js @@ -66,7 +66,7 @@ export async function makeHTTPListener(basedir, port, host, rawInboundCommand) { 'from', JSON.stringify(obj, undefined, 2), ); - throw (err && err.message) || JSON.stringify(err); + throw (err && err.message) || err; }); };