diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-22 12:25:32 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-22 12:25:32 +0100 |
commit | 622ed285b029dfa3b65cc3f13b51c1e0b83262b9 (patch) | |
tree | e6b6ba61c1824b16f1ae24059cac1499af5717ac /sip/src/transport | |
parent | 8e19859996eee29ba28c4e4a933ba396924ac163 (diff) | |
download | sip-rs-622ed285b029dfa3b65cc3f13b51c1e0b83262b9.tar sip-rs-622ed285b029dfa3b65cc3f13b51c1e0b83262b9.tar.bz2 sip-rs-622ed285b029dfa3b65cc3f13b51c1e0b83262b9.tar.zst |
fix things
Diffstat (limited to 'sip/src/transport')
-rw-r--r-- | sip/src/transport/tcp.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sip/src/transport/tcp.rs b/sip/src/transport/tcp.rs index efe433d..58dfb7e 100644 --- a/sip/src/transport/tcp.rs +++ b/sip/src/transport/tcp.rs @@ -4,7 +4,7 @@ use anyhow::Result; use log::debug; use std::str::FromStr; use tokio::{ - io::{AsyncBufReadExt, AsyncWriteExt, BufReader, BufWriter}, + io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader, BufWriter}, net::{ tcp::{OwnedReadHalf, OwnedWriteHalf}, TcpStream, @@ -34,8 +34,18 @@ impl Transport for TcpTransport { while !message.ends_with("\r\n\r\n") { g.read_line(&mut message).await?; } - let mesg = Message::from_str(message.trim())?; + let mut mesg = Message::from_str(message.trim())?; debug!("<- {mesg}"); + + let cl = mesg + .content_length() + .transpose()? + .map(|e| e.0) + .unwrap_or_default(); + let mut body = vec![0u8; cl]; + g.read_exact(&mut body).await?; + *mesg.body_mut() = String::from_utf8_lossy_owned(body); + Ok(mesg) } async fn send(&self, request: Message) -> Result<()> { |