diff --git a/packages/SwingSet/src/vats/network/network.js b/packages/SwingSet/src/vats/network/network.js index d3549039bec..d999a2ef733 100644 --- a/packages/SwingSet/src/vats/network/network.js +++ b/packages/SwingSet/src/vats/network/network.js @@ -71,7 +71,7 @@ export const ENDPOINT_SEPARATOR = '/'; /** * @typedef {Object} ConnectionHandler A handler for a given Connection - * @property {(connection: Connection, c: ConnectionHandler) => void} [onOpen] The connection has been opened + * @property {(connection: Connection, localAddr: Endpoint, remoteAddr: Endpoint, c: ConnectionHandler) => void} [onOpen] The connection has been opened * @property {(connection: Connection, packetBytes: Bytes, c: ConnectionHandler) => Promise} [onReceive] The connection received a packet * @property {(connection: Connection, reason?: CloseReason, c: ConnectionHandler) => Promise} [onClose] The connection has been closed * @@ -185,7 +185,7 @@ export const makeConnection = ( current.add(connection); E(handler) - .onOpen(connection, handler) + .onOpen(connection, localAddr, remoteAddr, handler) .catch(rethrowUnlessMissing); return connection; }; @@ -257,15 +257,19 @@ export function crossoverConnection( makeHalfConnection(0, 1); makeHalfConnection(1, 0); - function openHalfConnection(l) { + /** + * @param {number} l local side of the connection + * @param {number} r remote side of the connection + */ + function openHalfConnection(l, r) { current.add(conns[l]); E(handlers[l]) - .onOpen(conns[l], handlers[l]) + .onOpen(conns[l], addrs[l], addrs[r], handlers[l]) .catch(rethrowUnlessMissing); } - openHalfConnection(0); - openHalfConnection(1); + openHalfConnection(0, 1); + openHalfConnection(1, 0); const [conn0, conn1] = conns; return [conn0, conn1]; diff --git a/packages/SwingSet/test/test-network.js b/packages/SwingSet/test/test-network.js index fbc10ff08af..093cf0f74ed 100644 --- a/packages/SwingSet/test/test-network.js +++ b/packages/SwingSet/test/test-network.js @@ -86,7 +86,7 @@ test('handled protocol', async t => { await port.connect( '/ibc/*/ordered/echo', harden({ - async onOpen(connection) { + async onOpen(connection, _localAddr, _remoteAddr) { const ack = await connection.send('ping'); // log(ack); t.equals(`${ack}`, 'ping', 'received pong'); @@ -138,7 +138,7 @@ test('protocol connection listen', async t => { ); let handler; return harden({ - async onOpen(connection, connectionHandler) { + async onOpen(connection, _localAddr, _remoteAddr, connectionHandler) { t.assert( connectionHandler, `connectionHandler is tracked in onOpen`, @@ -198,9 +198,14 @@ test('protocol connection listen', async t => { '/net/ordered/ordered/some-portname', harden({ ...connectionHandler, - async onOpen(connection, c) { + async onOpen(connection, localAddr, remoteAddr, c) { if (connectionHandler.onOpen) { - await connectionHandler.onOpen(connection, c); + await connectionHandler.onOpen( + connection, + localAddr, + remoteAddr, + c, + ); } connection.send('ping'); }, @@ -245,7 +250,7 @@ test('loopback protocol', async t => { await port2.connect( port.getLocalAddress(), harden({ - async onOpen(c, _connectionHandler) { + async onOpen(c, _localAddr, _remoteAddr, _connectionHandler) { t.equals(`${await c.send('ping')}`, 'pingack', 'expected pingack'); closed.resolve(); }, diff --git a/packages/cosmic-swingset/lib/ag-solo/vats/ibc.js b/packages/cosmic-swingset/lib/ag-solo/vats/ibc.js index 12a18d2add0..954d4d386df 100644 --- a/packages/cosmic-swingset/lib/ag-solo/vats/ibc.js +++ b/packages/cosmic-swingset/lib/ag-solo/vats/ibc.js @@ -223,8 +223,14 @@ export function makeIBCProtocolHandler( } return harden({ - async onOpen(conn, _handler) { - console.info('onOpen Remote IBC Connection', channelID, portID); + async onOpen(conn, localAddr, remoteAddr, _handler) { + console.info( + 'onOpen Remote IBC Connection', + channelID, + portID, + localAddr, + remoteAddr, + ); const connP = /** @type {Promise} */ (E.when(conn)); channelKeyToConnP.init(channelKey, connP); },