From e7481b7e434546d666232ce3063e446aa68b1226 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 27 Oct 2026 18:03:06 -0700 Subject: names: a payment for a released name with no key to follow is parked, not retried (and paged on) forever Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01QjVvE4YAcK3AGwV7kZXeN4 --- names/server.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/names/server.js b/names/server.js index a9ade90..118f7fe 100644 --- a/names/server.js +++ b/names/server.js @@ -440,7 +440,10 @@ async function forwardOnce(name, sat, hash, pubkey) { const now = keyed.find((n) => n.endsWith('@' + name.split('@')[1])) || keyed[0]; if (now) { log(`forward: ${name} is gone — ${sat} sat goes to ${now}, the same key's name now`); name = now; rec = state.names[now]; } } - const dest = rec && arkParamOf(rec.uri); + // released and no key to follow it by: nothing will ever answer, so it + // waits for a person in the parked ledger instead of paging every 30 min + if (!rec) throw Object.assign(new Error(`${name} was released and no key holds a name now`), { permanent: true }); + const dest = arkParamOf(rec.uri); const clink = clinkDest(rec); // stays queued (and loud): a returned "success" here once dropped a payment if (!dest && !clink) throw new Error(`nowhere to send ${sat} sat for ${name}`); -- cgit v1.2.3