diff --git a/litellm-rust/crates/framer/src/sse.rs b/litellm-rust/crates/framer/src/sse.rs
index 6fee1cfab7f..2e7686e4343 100644
--- a/litellm-rust/crates/framer/src/sse.rs
+++ b/litellm-rust/crates/framer/src/sse.rs
@@ -1,6 +1,6 @@
use std::str;
-use bytes::{Buf, BufMut, BytesMut};
+use bytes::{Buf, BufMut, Bytes, BytesMut};
use tokio_util::codec::{Decoder, Encoder};
use crate::SseError;
@@ -29,38 +29,107 @@ impl Decoder for SseCodec {
return Ok(None);
}
while let Some(end) = block_end(src) {
- let block = src.split_to(end);
- let pending = lines(&block)
- .map(|(line, _)| line)
- .take_while(|line| !line.is_empty())
- .try_fold(Pending::default(), Pending::apply)?;
- if let Some(event) = pending.dispatch() {
+ if let Some(event) = event_in(&src.split_to(end))? {
return Ok(Some(event));
}
}
Ok(None)
}
- fn decode_eof(&mut self, _pending: &mut BytesMut) -> Result