From 50dd8e2040c8d48b05bdb17bc28af388efbf5a50 Mon Sep 17 00:00:00 2001 From: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com> Date: Thu, 23 Jul 2026 10:01:45 +0900 Subject: [PATCH] fix: reap completed response send tasks (#1026) --- crates/rmcp/src/service.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/rmcp/src/service.rs b/crates/rmcp/src/service.rs index 75f34d3..18da427 100644 --- a/crates/rmcp/src/service.rs +++ b/crates/rmcp/src/service.rs @@ -1230,6 +1230,7 @@ where PeerMessage(RxJsonRpcMessage), ToSink(TxJsonRpcMessage), SendTaskResult(SendTaskResult), + ResponseSendTaskResult(Result<(), tokio::task::JoinError>), } let quit_reason = loop { @@ -1275,6 +1276,11 @@ where } } } + result = response_send_tasks.join_next(), if !response_send_tasks.is_empty() => { + Event::ResponseSendTaskResult( + result.expect("non-empty response send task set") + ) + } _ = serve_loop_ct.cancelled() => { tracing::info!("task cancelled"); break QuitReason::Cancelled @@ -1313,6 +1319,11 @@ where } } } + Event::ResponseSendTaskResult(result) => { + if let Err(error) = result { + tracing::error!(%error, "response send task failed"); + } + } // response and error Event::ToSink(m) => { if let Some(id) = match &m {