diff options
Diffstat (limited to 'src/transport/udp.rs')
-rw-r--r-- | src/transport/udp.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/transport/udp.rs b/src/transport/udp.rs index 78ca4f2..c0d7829 100644 --- a/src/transport/udp.rs +++ b/src/transport/udp.rs @@ -1,6 +1,6 @@ use super::Transport; use crate::encoding::Message; -use anyhow::Result; +use anyhow::{anyhow, Result}; use log::debug; use std::str::FromStr; use tokio::net::UdpSocket; @@ -19,8 +19,13 @@ impl Transport for UdpTransport { let mut buf = [0; 1024]; let size = self.sock.recv(&mut buf).await?; let message = String::from_utf8(buf[..size].to_vec())?; - debug!("<- {message}"); - Message::from_str(message.trim_end()) + let (head, body) = message + .split_once("\r\n\r\n") + .ok_or(anyhow!("header end missing"))?; + debug!("<- {head}\n\n{body}"); + let mut mesg = Message::from_str(head.trim_end())?; + *mesg.body_mut() = body.to_string(); + Ok(mesg) } async fn send(&self, request: Message) -> Result<()> { debug!("-> {request}"); |