Skip to content

Commit 4dd2843

Browse files
authored
Merge pull request #35 from slyoldfox/main
Add Content-Length to make_ack request
2 parents 9678adf + 79f56ac commit 4dd2843

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/transaction/message.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::{endpoint::EndpointInner, make_call_id};
22
use crate::{rsip_ext::extract_uri_from_contact, transaction::make_via_branch, Result};
33
use rsip::{
44
header,
5-
headers::Route,
5+
headers::{ContentLength, Route},
66
prelude::{HeadersExt, ToTypedHeader, UntypedHeader},
77
Error, Header, Request, Response, StatusCode,
88
};
@@ -312,6 +312,7 @@ impl EndpointInner {
312312
cseq.mut_method(rsip::Method::Ack).ok();
313313
}
314314
});
315+
headers.push(Header::ContentLength(ContentLength::default())); // 0 because of vec![] below
315316
headers.unique_push(Header::UserAgent(self.user_agent.clone().into()));
316317
Ok(rsip::Request {
317318
method: rsip::Method::Ack,

src/transaction/tests/test_client.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,18 @@ Content-Length: 0\r\n\r\n";
133133
let expected_uri = Uri::try_from("sip:[email protected]:5080;transport=tcp")?;
134134
assert_eq!(ack.uri, expected_uri, "ACK must target the remote Contact");
135135

136+
// Check Content-Length
137+
let content_length: String = ack
138+
.headers
139+
.iter()
140+
.filter_map(|header| match header {
141+
Header::ContentLength(content_length) => Some(content_length.value().to_string()),
142+
_ => None,
143+
})
144+
.next()
145+
.expect("ACK must include a Content-Length header");
146+
147+
assert_eq!(content_length, "0", "Content-Length of ACK must be 0");
136148
let routes: Vec<String> = ack
137149
.headers
138150
.iter()

0 commit comments

Comments
 (0)