aboutsummaryrefslogtreecommitdiff
path: root/sip/src/transport/tcp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'sip/src/transport/tcp.rs')
-rw-r--r--sip/src/transport/tcp.rs14
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<()> {