connectd: don't log at INFO level for known issue.
What changed, and why it matters
This change simply reduces how often one routine log message is printed. It does not fix a security bug or change how the program handles money or network connections. The underlying behavior—occasionally missing channel close notifications—remains unchanged, only the logging level is quieter for one specific known message.
No security action required; treat as routine log-hygiene cleanup. If the missed channel closes are operationally concerning, track them separately as a reliability issue, not a security issue.
Security signals we found
No security signal: change is purely logging-level adjustment
No memory safety, cryptographic, or authorization change
No input validation or protocol behavior change
Evidence from the diff
In connectd/multiplex.c, messages of type WIRE_ERROR or WIRE_WARNING are logged via status_peer_info. The patch demotes the log entry to status_peer_debug only when the error description contains the literal string “no unspent txout”. This is a log-noise reduction for a known, pre-existing condition where the node sometimes does not learn about closed channels. No protocol handling, validation, or state-machine logic is altered.
Changed components
connectd/multiplex.cInspect captured patch +11 / −3
diff --git a/connectd/multiplex.c b/connectd/multiplex.c
index 31f71bb9..1cbc98f1 100644
--- a/connectd/multiplex.c
+++ b/connectd/multiplex.c
@@ -1280,9 +1280,17 @@ static struct io_plan *read_body_from_peer_done(struct io_conn *peer_conn,
* more verbose: hang up on error. */
if (type == WIRE_ERROR || type == WIRE_WARNING) {
char *desc = sanitize_error(tmpctx, decrypted, NULL);
- status_peer_info(&peer->id,
- "Received %s: %s",
- peer_wire_name(type), desc);
+ /* FIXME: We should check old gossip, since we get many of
+ * these "no unspent txout" for closed channels which we
+ * somehow missed. */
+ if (strstr(desc, "no unspent txout"))
+ status_peer_debug(&peer->id,
+ "Received %s: %s",
+ peer_wire_name(type), desc);
+ else
+ status_peer_info(&peer->id,
+ "Received %s: %s",
+ peer_wire_name(type), desc);
if (type == WIRE_WARNING)
return next_read(peer_conn, peer);
return io_close(peer_conn);
Why this scored 12/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.