aboutsummaryrefslogtreecommitdiff
path: root/src/transport/udp.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-06 17:37:35 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-06 17:37:35 +0200
commit7aa211a8d7ae2efeebd9362699a1aea4b5690e3d (patch)
treee0af8720ee3b770688600a8ea025de2ce81e5017 /src/transport/udp.rs
parent7177367ae41a5e2d6ed401f60ee1455812dd8ffb (diff)
downloadsip-rs-7aa211a8d7ae2efeebd9362699a1aea4b5690e3d.tar
sip-rs-7aa211a8d7ae2efeebd9362699a1aea4b5690e3d.tar.bz2
sip-rs-7aa211a8d7ae2efeebd9362699a1aea4b5690e3d.tar.zst
start on sdp impl
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}");