From eb98326c402844e967dec45515e0e879c2bea1db Mon Sep 17 00:00:00 2001 From: yeoleobun Date: Wed, 4 Feb 2026 19:22:09 +0800 Subject: [PATCH] fix: clear expire params of Contact --- src/dialog/registration.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dialog/registration.rs b/src/dialog/registration.rs index 8b76488..2548c9d 100644 --- a/src/dialog/registration.rs +++ b/src/dialog/registration.rs @@ -15,7 +15,7 @@ use crate::{ }; use rsip::{ prelude::{HeadersExt, ToTypedHeader}, - Response, SipMessage, StatusCode, + Param, Response, SipMessage, StatusCode, }; use tracing::debug; @@ -378,7 +378,7 @@ impl Registration { // 3. Local non-loopback address (lowest priority) // - Only used for initial registration attempt // - Will be replaced by server-discovered address after first response - let contact = self.contact.clone().unwrap_or_else(|| { + let mut contact = self.contact.clone().unwrap_or_else(|| { let contact_host_with_port = self .public_address .clone() @@ -395,6 +395,11 @@ impl Registration { params: vec![], } }); + + if expires.is_some() { + contact.params.retain(|p| !matches!(p, Param::Expires(_))); + } + let mut request = self.endpoint.make_request( rsip::Method::Register, server,