From 97ca55cc54aa6c771b2bd3255825ecd208e9e9df Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Nov 2025 16:26:12 +0000 Subject: [PATCH] Improve error handling in NostrTransport Add proper error logging for Bech32 decode failures instead of silently returning. This improves debuggability by making it clear when and why npub decoding fails for favorite notifications, delivery acks, and read receipts. The previous empty catch blocks made it difficult to diagnose issues with malformed or invalid npub addresses. Now all decoding errors are properly logged with context about which operation failed. --- bitchat/Services/NostrTransport.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/bitchat/Services/NostrTransport.swift b/bitchat/Services/NostrTransport.swift index 4490aa9c..4ffc20a3 100644 --- a/bitchat/Services/NostrTransport.swift +++ b/bitchat/Services/NostrTransport.swift @@ -113,7 +113,10 @@ final class NostrTransport: Transport { let (hrp, data) = try Bech32.decode(recipientNpub) guard hrp == "npub" else { return } recipientHex = data.hexEncodedString() - } catch { return } + } catch { + SecureLogger.error("NostrTransport: failed to decode recipient npub for favorite notification: \(error.localizedDescription)", category: .session) + return + } guard let embedded = NostrEmbeddedBitChat.encodePMForNostr(content: content, messageID: UUID().uuidString, recipientPeerID: peerID, senderPeerID: senderPeerID) else { SecureLogger.error("NostrTransport: failed to embed favorite notification", category: .session) return @@ -138,7 +141,10 @@ final class NostrTransport: Transport { let (hrp, data) = try Bech32.decode(recipientNpub) guard hrp == "npub" else { return } recipientHex = data.hexEncodedString() - } catch { return } + } catch { + SecureLogger.error("NostrTransport: failed to decode recipient npub for delivery ack: \(error.localizedDescription)", category: .session) + return + } guard let ack = NostrEmbeddedBitChat.encodeAckForNostr(type: .delivered, messageID: messageID, recipientPeerID: peerID, senderPeerID: senderPeerID) else { SecureLogger.error("NostrTransport: failed to embed DELIVERED ack", category: .session) return @@ -222,7 +228,11 @@ extension NostrTransport { let (hrp, data) = try Bech32.decode(recipientNpub) guard hrp == "npub" else { scheduleNextReadAck(); return } recipientHex = data.hexEncodedString() - } catch { scheduleNextReadAck(); return } + } catch { + SecureLogger.error("NostrTransport: failed to decode recipient npub for read ack: \(error.localizedDescription)", category: .session) + scheduleNextReadAck() + return + } guard let ack = NostrEmbeddedBitChat.encodeAckForNostr(type: .readReceipt, messageID: item.receipt.originalMessageID, recipientPeerID: item.peerID, senderPeerID: senderPeerID) else { SecureLogger.error("NostrTransport: failed to embed READ ack", category: .session) scheduleNextReadAck(); return