From 9f4bc29025287e8e12a7ef31c9918c1adfdfff5d Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 26 Jun 2026 13:50:23 -0700 Subject: Fix broadcast hanging forever on a stalled response MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Esplora broadcast cleared its abort timer right after fetch() resolved, so the subsequent res.text() body read had no timeout — a stalled response body hung the whole broadcast (and the send spinner) indefinitely, with the tx never reaching the network. Keep the abort timer active through the body read, and add a hard 30s outer timeout in the send handler so a wedged broadcast always surfaces as 'timed out — try again' instead of spinning forever. (The silent-payment tx itself is valid — verified structure + BIP143 signature over the real outputs.) Co-Authored-By: Claude Opus 4.8 (1M context) --- src/i18n.js | 1 + 1 file changed, 1 insertion(+) (limited to 'src/i18n.js') diff --git a/src/i18n.js b/src/i18n.js index 2752ea8..1a85014 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -179,6 +179,7 @@ const STR = { bumpInsufficient: 'Not enough funds to bump at this rate. Try a lower rate.', scanOffline: 'You’re offline — reconnect to broadcast this transaction.', broadcastFailed: 'Broadcast failed: {msg}', + broadcastTimeout: 'Timed out reaching the network. The payment was not sent — try again.', signingFailed: 'Signing failed: {msg}', done: 'Done', txSignedNote: 'Signed, but not sent yet. To actually send it, broadcast the code below from any online device (e.g. mempool.space → Broadcast). It will not send on its own.', -- cgit v1.2.3