diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-06 17:37:35 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-06 17:37:35 +0200 |
commit | 7aa211a8d7ae2efeebd9362699a1aea4b5690e3d (patch) | |
tree | e0af8720ee3b770688600a8ea025de2ce81e5017 /src/transport/udp.rs | |
parent | 7177367ae41a5e2d6ed401f60ee1455812dd8ffb (diff) | |
download | sip-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.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}"); |