From b5c61deec62c9fbde62ee285429a32949cc1734c Mon Sep 17 00:00:00 2001 From: Avi Date: Fri, 25 Sep 2026 16:39:18 -0500 Subject: [PATCH] fix(nip46): give the auto-naming kind-0 fetch a 30s budget, not 10s MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fetch_profile_metadata itself waits up to 10s for the relay pool to connect before it fetches at all, and the user's relay list includes relay.nostr.band whose handshake hangs past that. The outer 10s timeout therefore killed the enrichment task before the first REQ went out — live Sep 25: nos.lol served the account's kind-0 ('web5osint') within 2s of an anonymous probe, yet the profile row kept the seed label. 30s outer > 10s connect-wait + per-relay fetches. --- src/signer/nip46_client.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/signer/nip46_client.rs b/src/signer/nip46_client.rs index 94e011f..198b3c4 100644 --- a/src/signer/nip46_client.rs +++ b/src/signer/nip46_client.rs @@ -2333,8 +2333,15 @@ impl Nip46ClientSigner { let app = app.lock().await; crate::relays::enabled_urls(&app.settings) }; + // Outer budget must exceed the inner worst case: + // fetch_profile_metadata waits up to 10s for the pool to + // connect (relay.nostr.band is a known handshake-hanger and + // sits in the user's relay list), then fetches per relay. + // A 10s outer timeout killed the task during the connect + // wait — live Sep 25: nos.lol held the account's kind-0 + // ('web5osint') but the profile kept the seed label. let meta = match tokio::time::timeout( - Duration::from_secs(10), + Duration::from_secs(30), tokio::task::spawn_blocking(move || { profiles::fetch_profile_metadata(&identity, &relays_for_meta) }),