From ea5c725aa8eef190a990f6a8e80ec8c89fe8bd71 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Tue, 3 Mar 2026 11:56:16 -0500 Subject: [PATCH] fix(streaming): use iter instead of once for [DONE] marker --- src/server/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/mod.rs b/src/server/mod.rs index 0956f1c3..8ef3669e 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -283,10 +283,10 @@ async fn chat_completions( // Many OpenAI-compatible clients expect a terminal [DONE] marker. // Emit it when the upstream stream ends to avoid clients treating // the response as incomplete. - let done = futures::stream::once(async { - Ok::(Event::default().data("[DONE]")) - }); - let out = sse_stream.chain(done); + // Convert to a Vec first, then append [DONE], then stream it + let done_event = Ok::(Event::default().data("[DONE]")); + let done_stream = futures::stream::iter(vec![done_event]); + let out = sse_stream.chain(done_stream); Ok( Sse::new(out)