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)