From b16913fec38f604ab045d6f16ddba62481b09a6c Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 6 Sep 2024 06:38:29 +0800 Subject: fix: render stream failed due to read cursor position timeout (#835) --- src/client/stream.rs | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'src/client/stream.rs') diff --git a/src/client/stream.rs b/src/client/stream.rs index 9913f63..907efee 100644 --- a/src/client/stream.rs +++ b/src/client/stream.rs @@ -34,19 +34,25 @@ impl SseHandler { let ret = self .sender .send(SseEvent::Text(text.to_string())) - .with_context(|| "Failed to send ReplyEvent:Text"); - self.safe_ret(ret)?; + .with_context(|| "Failed to send SseEvent:Text"); + if let Err(err) = ret { + if self.abort.aborted() { + return Ok(()); + } + return Err(err); + } Ok(()) } - pub fn done(&mut self) -> Result<()> { + pub fn done(&mut self) { // debug!("HandleDone"); - let ret = self - .sender - .send(SseEvent::Done) - .with_context(|| "Failed to send ReplyEvent::Done"); - self.safe_ret(ret)?; - Ok(()) + let ret = self.sender.send(SseEvent::Done); + if ret.is_err() { + if self.abort.aborted() { + return; + } + warn!("Failed to send SseEvent:Done"); + } } pub fn tool_call(&mut self, call: ToolCall) -> Result<()> { @@ -65,13 +71,6 @@ impl SseHandler { } = self; (buffer, tool_calls) } - - fn safe_ret(&self, ret: Result<()>) -> Result<()> { - if self.abort.aborted() { - return Ok(()); - } - ret - } } #[derive(Debug)] -- cgit v1.2.3