diff --git a/src/dialog/dialog.rs b/src/dialog/dialog.rs index 0a17f215..b1567064 100644 --- a/src/dialog/dialog.rs +++ b/src/dialog/dialog.rs @@ -361,9 +361,9 @@ impl DialogInner { } headers.push(Header::MaxForwards(70.into())); - body.as_ref().map(|b| { - headers.push(Header::ContentLength((b.len() as u32).into())); - }); + headers.push(Header::ContentLength( + body.as_ref().map_or(0u32, |b| b.len() as u32).into(), + )); let req = rsip::Request { method, @@ -454,9 +454,9 @@ impl DialogInner { .as_ref() .map(|c| resp_headers.push(Contact::from(c.clone()).into())); - body.as_ref().map(|b| { - resp_headers.push(Header::ContentLength((b.len() as u32).into())); - }); + resp_headers.push(Header::ContentLength( + body.as_ref().map_or(0u32, |b| b.len() as u32).into(), + )); resp_headers.push(Header::UserAgent( self.endpoint_inner.user_agent.clone().into(), diff --git a/src/transaction/message.rs b/src/transaction/message.rs index c5289134..0d9ef214 100644 --- a/src/transaction/message.rs +++ b/src/transaction/message.rs @@ -226,10 +226,12 @@ impl EndpointInner { | Header::CallId(_) | Header::From(_) | Header::To(_) - | Header::MaxForwards(_) | Header::CSeq(_) ) }); + headers.push(Header::ContentLength( + body.as_ref().map_or(0u32, |b| b.len() as u32).into(), + )); headers.unique_push(Header::UserAgent(self.user_agent.clone().into())); Response { status_code, diff --git a/src/transport/tests/test_stream_encoding.rs b/src/transport/tests/test_stream_encoding.rs index 9b7dedc1..a247f6c3 100644 --- a/src/transport/tests/test_stream_encoding.rs +++ b/src/transport/tests/test_stream_encoding.rs @@ -319,7 +319,7 @@ fn test_sip_codec_multiple_messages_with_bodies() { assert_eq!(req.call_id_header().unwrap().value(), "test-call-id-2"); } _ => panic!("Expected request message"), - } + } // Buffer should be empty after consuming both messages assert_eq!( @@ -327,4 +327,4 @@ fn test_sip_codec_multiple_messages_with_bodies() { 0, "Buffer should be empty after consuming all messages" ); -} \ No newline at end of file +}