aboutsummaryrefslogtreecommitdiff
path: root/src/transport/udp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/udp.rs')
-rw-r--r--src/transport/udp.rs11
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}");