commit e12773fa7974a2d37d8fedf6be8b5471a2296364
parent 0dfb7dc0a02d851fd4d9e9af0709e9998b3a9742
Author: William Casarin <jb55@jb55.com>
Date: Sun, 25 Jan 2026 22:34:50 -0800
dave: disconnects
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
1 file changed, 8 insertions(+), 0 deletions(-)
diff --git a/crates/notedeck_dave/src/backend/claude.rs b/crates/notedeck_dave/src/backend/claude.rs
@@ -176,11 +176,13 @@ impl AiBackend for ClaudeBackend {
if let Err(err) = client.connect().await {
tracing::error!("Claude Code connection error: {}", err);
let _ = tx.send(DaveApiResponse::Failed(err.to_string()));
+ let _ = client.disconnect().await;
return;
}
if let Err(err) = client.query(&prompt).await {
tracing::error!("Claude Code query error: {}", err);
let _ = tx.send(DaveApiResponse::Failed(err.to_string()));
+ let _ = client.disconnect().await;
return;
}
let mut stream = client.receive_response();
@@ -194,6 +196,8 @@ impl AiBackend for ClaudeBackend {
if let Err(err) = tx.send(DaveApiResponse::Token(text.clone()))
{
tracing::error!("Failed to send token to UI: {}", err);
+ drop(stream);
+ let _ = client.disconnect().await;
return;
}
ctx.request_repaint();
@@ -214,11 +218,15 @@ impl AiBackend for ClaudeBackend {
Err(err) => {
tracing::error!("Claude stream error: {}", err);
let _ = tx.send(DaveApiResponse::Failed(err.to_string()));
+ drop(stream);
+ let _ = client.disconnect().await;
return;
}
}
}
+ drop(stream);
+ let _ = client.disconnect().await;
tracing::debug!("Claude stream closed");
});