From 35336936f009ec6390c2c595a1e7ee774314a1e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Cholewi=C5=84ski?= Date: Thu, 29 Jan 2026 11:26:00 +0100 Subject: [PATCH] refactor dialog transition return type --- examples/client/main.rs | 6 +-- src/dialog/client_dialog.rs | 34 ++++++++--------- src/dialog/dialog.rs | 23 ++++++------ src/dialog/publication.rs | 23 ++++-------- src/dialog/server_dialog.rs | 47 +++++++++++------------- src/dialog/subscription.rs | 51 ++++++++------------------ src/dialog/tests/test_client_dialog.rs | 12 +++--- src/dialog/tests/test_dialog_states.rs | 28 +++++++------- 8 files changed, 95 insertions(+), 129 deletions(-) diff --git a/examples/client/main.rs b/examples/client/main.rs index 3d3df9f..5f598b3 100644 --- a/examples/client/main.rs +++ b/examples/client/main.rs @@ -523,9 +523,7 @@ async fn process_invite(opt: &MediaSessionOption, dialog: ServerInviteDialog) -> if opt.random_reject > 0 { if rand::random::() % opt.random_reject == 0 { info!("Randomly rejecting the call"); - dialog - .reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into())) - .ok(); + dialog.reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into())); return Ok(()); } } @@ -597,7 +595,7 @@ async fn process_invite(opt: &MediaSessionOption, dialog: ServerInviteDialog) -> info!("User answered the call"); } else if r == "r" { info!("User rejected the call"); - dialog.reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into())).ok(); + dialog.reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into())); rejected = true; return; } else { diff --git a/src/dialog/client_dialog.rs b/src/dialog/client_dialog.rs index 157ab01..04401a1 100644 --- a/src/dialog/client_dialog.rs +++ b/src/dialog/client_dialog.rs @@ -170,7 +170,7 @@ impl ClientInviteDialog { } self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye)); Ok(()) } @@ -329,7 +329,7 @@ impl ClientInviteDialog { if resp.status_code == StatusCode::OK { let (handle, _) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), request, handle))?; + .transition(DialogState::Updated(self.id(), request, handle)); } } _ => {} @@ -620,7 +620,7 @@ impl ClientInviteDialog { async fn handle_bye(&mut self, tx: &mut Transaction) -> Result<()> { debug!(id = %self.id(), uri = %tx.original.uri, "received bye"); self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye)); tx.reply(rsip::StatusCode::OK).await?; Ok(()) } @@ -629,7 +629,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received info"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Info(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Info(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -637,7 +637,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received options"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Options(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Options(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -645,7 +645,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received update"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Updated(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -653,7 +653,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received reinvite"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Updated(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await?; @@ -674,7 +674,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received refer"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Refer(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Refer(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -683,7 +683,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received message"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Message(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Message(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -692,7 +692,7 @@ impl ClientInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received notify"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Notify(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Notify(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -700,7 +700,7 @@ impl ClientInviteDialog { &self, tx: &mut Transaction, ) -> Result<(DialogId, Option)> { - self.inner.transition(DialogState::Calling(self.id()))?; + self.inner.transition(DialogState::Calling(self.id())); let mut auth_sent = false; tx.send().await?; let mut dialog_id = self.id(); @@ -712,13 +712,13 @@ impl ClientInviteDialog { let status = resp.status_code.clone(); if status == StatusCode::Trying { - self.inner.transition(DialogState::Trying(self.id()))?; + self.inner.transition(DialogState::Trying(self.id())); continue; } if matches!(status.kind(), rsip::StatusCodeKind::Provisional) { self.inner.handle_provisional_response(&resp).await?; - self.inner.transition(DialogState::Early(self.id(), resp))?; + self.inner.transition(DialogState::Early(self.id(), resp)); continue; } @@ -732,7 +732,7 @@ impl ClientInviteDialog { self.inner.transition(DialogState::Terminated( self.id(), TerminatedReason::ProxyAuthRequired, - ))?; + )); break; } auth_sent = true; @@ -761,7 +761,7 @@ impl ClientInviteDialog { self.inner.transition(DialogState::Terminated( self.id(), TerminatedReason::ProxyAuthRequired, - ))?; + )); continue; } } @@ -797,13 +797,13 @@ impl ClientInviteDialog { *self.inner.remote_uri.lock().unwrap() = resp.remote_uri(tx.destination.as_ref())?; self.inner - .transition(DialogState::Confirmed(dialog_id.clone(), resp))?; + .transition(DialogState::Confirmed(dialog_id.clone(), resp)); } _ => { self.inner.transition(DialogState::Terminated( self.id(), TerminatedReason::UasOther(resp.status_code.clone()), - ))?; + )); } } break; diff --git a/src/dialog/dialog.rs b/src/dialog/dialog.rs index a1eb830..9c2926d 100644 --- a/src/dialog/dialog.rs +++ b/src/dialog/dialog.rs @@ -627,7 +627,7 @@ impl DialogInner { self.transition(DialogState::Terminated( id, TerminatedReason::ProxyAuthRequired, - ))?; + )); break; } auth_sent = true; @@ -644,7 +644,7 @@ impl DialogInner { self.transition(DialogState::Terminated( id, TerminatedReason::ProxyAuthRequired, - ))?; + )); break; } } @@ -935,7 +935,7 @@ impl DialogInner { if method == Method::Invite { self.handle_provisional_response(&resp).await?; } - self.transition(DialogState::Early(self.id.lock().unwrap().clone(), resp))?; + self.transition(DialogState::Early(self.id.lock().unwrap().clone(), resp)); continue; } @@ -952,7 +952,7 @@ impl DialogInner { self.transition(DialogState::Terminated( id, TerminatedReason::ProxyAuthRequired, - ))?; + )); break; } auth_sent = true; @@ -972,7 +972,7 @@ impl DialogInner { self.transition(DialogState::Terminated( id, TerminatedReason::ProxyAuthRequired, - ))?; + )); continue; } } @@ -1170,7 +1170,7 @@ impl DialogInner { version: Version::V2, } } - pub(super) fn transition(&self, state: DialogState) -> Result<()> { + pub(super) fn transition(&self, state: DialogState) { // Try to send state update, but don't fail if channel is closed self.state_sender.send(state.clone()).ok(); @@ -1179,7 +1179,7 @@ impl DialogInner { | DialogState::Notify(_, _, _) | DialogState::Info(_, _, _) | DialogState::Options(_, _, _) => { - return Ok(()); + return; } _ => {} } @@ -1191,17 +1191,16 @@ impl DialogInner { target = %state, "dialog already terminated, ignoring transition" ); - return Ok(()); + return; } (DialogState::Confirmed(_, _), DialogState::WaitAck(_, _)) => { warn!(target = %state, "dialog already confirmed, ignoring transition"); - return Ok(()); + return; } _ => {} } debug!(from = %old_state, to = %state, "transitioning state"); *old_state = state; - Ok(()) } pub async fn process_transaction_handle( @@ -1400,9 +1399,9 @@ impl Dialog { match self { Dialog::ServerInvite(d) => d.bye().await, Dialog::ClientInvite(d) => d.hangup().await, - Dialog::ServerSubscription(d) => d.unsubscribe().await, + Dialog::ServerSubscription(d) => Ok(d.unsubscribe().await), Dialog::ClientSubscription(d) => d.unsubscribe().await, - Dialog::ServerPublication(d) => d.close().await, + Dialog::ServerPublication(d) => Ok(d.close().await), Dialog::ClientPublication(d) => d.close().await, } } diff --git a/src/dialog/publication.rs b/src/dialog/publication.rs index e0e5e07..ea81f4c 100644 --- a/src/dialog/publication.rs +++ b/src/dialog/publication.rs @@ -71,7 +71,7 @@ impl ClientPublicationDialog { } self.request(Method::Publish, Some(headers), None).await?; self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye)); Ok(()) } @@ -116,11 +116,8 @@ impl ClientPublicationDialog { match tx.original.method { Method::Publish => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Publish( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Publish(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } _ => Ok(()), @@ -181,14 +178,13 @@ impl ServerPublicationDialog { .tu_sender .send(TransactionEvent::Respond(resp.clone()))?; self.inner - .transition(DialogState::Confirmed(self.id(), resp))?; + .transition(DialogState::Confirmed(self.id(), resp)); Ok(()) } - pub async fn close(&self) -> Result<()> { + pub async fn close(&self) { self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye))?; - Ok(()) + .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye)); } pub async fn request( @@ -235,11 +231,8 @@ impl ServerPublicationDialog { match tx.original.method { Method::Publish => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Publish( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Publish(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } _ => Ok(()), diff --git a/src/dialog/server_dialog.rs b/src/dialog/server_dialog.rs index 09c7181..ffee095 100644 --- a/src/dialog/server_dialog.rs +++ b/src/dialog/server_dialog.rs @@ -51,7 +51,7 @@ use tracing::{debug, trace, warn}; /// dialog.accept(None, Some(answer_sdp))?; /// /// // Or reject the call -/// dialog.reject(None, None)?; +/// dialog.reject(None, None); /// # Ok(()) /// # } /// ``` @@ -151,7 +151,7 @@ impl ServerInviteDialog { self.inner .tu_sender .send(TransactionEvent::Respond(resp.clone()))?; - self.inner.transition(DialogState::Early(self.id(), resp))?; + self.inner.transition(DialogState::Early(self.id(), resp)); Ok(()) } /// Accept the incoming INVITE request @@ -193,8 +193,7 @@ impl ServerInviteDialog { .tu_sender .send(TransactionEvent::Respond(resp.clone()))?; - self.inner - .transition(DialogState::WaitAck(self.id(), resp))?; + self.inner.transition(DialogState::WaitAck(self.id(), resp)); Ok(()) } @@ -285,13 +284,13 @@ impl ServerInviteDialog { /// # fn example() -> rsipstack::Result<()> { /// # let dialog: ServerInviteDialog = todo!(); /// // Reject the incoming call - /// dialog.reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into()))?; + /// dialog.reject(Some(rsip::StatusCode::BusyHere), Some("Busy here".into())); /// # Ok(()) /// # } /// ``` - pub fn reject(&self, code: Option, reason: Option) -> Result<()> { + pub fn reject(&self, code: Option, reason: Option) { if self.inner.is_terminated() || self.inner.is_confirmed() { - return Ok(()); + return; } debug!(id=%self.id(), ?code, ?reason, "rejecting dialog"); let headers = if let Some(reason) = reason { @@ -360,7 +359,7 @@ impl ServerInviteDialog { .make_request(rsip::Method::Bye, None, None, None, headers, None)?; self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye)); self.inner.do_request(request).await.map(|_| ()) } @@ -428,7 +427,7 @@ impl ServerInviteDialog { if resp.status_code == StatusCode::OK { let (handle, _) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), request, handle))?; + .transition(DialogState::Updated(self.id(), request, handle)); } } _ => {} @@ -725,7 +724,7 @@ impl ServerInviteDialog { async fn handle_bye(&mut self, tx: &mut Transaction) -> Result<()> { debug!(id = %self.id(), uri = %tx.original.uri, "received bye"); self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye)); tx.reply(rsip::StatusCode::OK).await?; Ok(()) } @@ -734,7 +733,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received info"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Info(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Info(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -755,7 +754,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received options"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Options(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Options(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -764,7 +763,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received update"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Updated(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -773,7 +772,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received refer"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Refer(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Refer(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -782,7 +781,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received message"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Message(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Message(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -791,7 +790,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), uri = %tx.original.uri, "received notify"); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Notify(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Notify(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -800,7 +799,7 @@ impl ServerInviteDialog { debug!(id = %self.id(), "received re-invite {}", tx.original.uri); let (handle, rx) = TransactionHandle::new(); self.inner - .transition(DialogState::Updated(self.id(), tx.original.clone(), handle))?; + .transition(DialogState::Updated(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await?; @@ -812,7 +811,7 @@ impl ServerInviteDialog { self.inner.transition(DialogState::Confirmed( self.id(), tx.last_response.clone().unwrap_or_default(), - ))?; + )); break; } _ => {} @@ -826,12 +825,8 @@ impl ServerInviteDialog { async fn handle_invite(&mut self, tx: &mut Transaction) -> Result<()> { let handle_loop = async { if !self.inner.is_confirmed() && matches!(tx.original.method, rsip::Method::Invite) { - match self.inner.transition(DialogState::Calling(self.id())) { - Ok(_) => { - tx.send_trying().await.ok(); - } - Err(_) => {} - } + self.inner.transition(DialogState::Calling(self.id())); + tx.send_trying().await.ok(); } while let Some(msg) = tx.receive().await { @@ -846,7 +841,7 @@ impl ServerInviteDialog { self.inner.transition(DialogState::Confirmed( self.id(), tx.last_response.clone().unwrap_or_default(), - ))?; + )); break; } rsip::Method::Cancel => { @@ -855,7 +850,7 @@ impl ServerInviteDialog { self.inner.transition(DialogState::Terminated( self.id(), TerminatedReason::UacCancel, - ))?; + )); break; } _ => {} diff --git a/src/dialog/subscription.rs b/src/dialog/subscription.rs index 1ddb69a..e26df13 100644 --- a/src/dialog/subscription.rs +++ b/src/dialog/subscription.rs @@ -35,7 +35,7 @@ impl ClientSubscriptionDialog { let headers = vec![Header::Expires(0.into())]; self.request(Method::Subscribe, Some(headers), None).await?; self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye))?; + .transition(DialogState::Terminated(self.id(), TerminatedReason::UacBye)); Ok(()) } @@ -77,30 +77,21 @@ impl ClientSubscriptionDialog { match tx.original.method { Method::Notify => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Notify( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Notify(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } Method::Refer => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Refer( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Refer(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } Method::Message => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Message( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Message(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } @@ -139,7 +130,7 @@ impl ServerSubscriptionDialog { .tu_sender .send(TransactionEvent::Respond(resp.clone()))?; self.inner - .transition(DialogState::Confirmed(self.id(), resp))?; + .transition(DialogState::Confirmed(self.id(), resp)); Ok(()) } @@ -157,10 +148,9 @@ impl ServerSubscriptionDialog { self.inner.do_request(request).await } - pub async fn unsubscribe(&self) -> Result<()> { + pub async fn unsubscribe(&self) { self.inner - .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye))?; - Ok(()) + .transition(DialogState::Terminated(self.id(), TerminatedReason::UasBye)); } pub async fn request( @@ -204,29 +194,20 @@ impl ServerSubscriptionDialog { match tx.original.method { Method::Subscribe => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Updated( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Updated(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } Method::Refer => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Refer( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Refer(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } Method::Message => { let (handle, rx) = TransactionHandle::new(); - self.inner.transition(DialogState::Message( - self.id(), - tx.original.clone(), - handle, - ))?; + self.inner + .transition(DialogState::Message(self.id(), tx.original.clone(), handle)); self.inner.process_transaction_handle(tx, rx).await } _ => Ok(()), diff --git a/src/dialog/tests/test_client_dialog.rs b/src/dialog/tests/test_client_dialog.rs index 68068d0..288fb06 100644 --- a/src/dialog/tests/test_client_dialog.rs +++ b/src/dialog/tests/test_client_dialog.rs @@ -161,7 +161,7 @@ async fn test_client_dialog_state_transitions() -> crate::Result<()> { // Transition to Trying (after sending INVITE) client_dialog .inner - .transition(DialogState::Trying(dialog_id.clone()))?; + .transition(DialogState::Trying(dialog_id.clone())); let state = client_dialog.inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Trying(_))); @@ -183,7 +183,7 @@ async fn test_client_dialog_state_transitions() -> crate::Result<()> { client_dialog .inner - .transition(DialogState::Early(dialog_id.clone(), ringing_resp.clone()))?; + .transition(DialogState::Early(dialog_id.clone(), ringing_resp.clone())); let state = client_dialog.inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Early(_, _))); @@ -192,7 +192,7 @@ async fn test_client_dialog_state_transitions() -> crate::Result<()> { // Transition to Confirmed (after receiving 200 OK and sending ACK) client_dialog .inner - .transition(DialogState::Confirmed(dialog_id.clone(), final_resp))?; + .transition(DialogState::Confirmed(dialog_id.clone(), final_resp)); let state = client_dialog.inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Confirmed(_, _))); assert!(client_dialog.inner.is_confirmed()); @@ -234,7 +234,7 @@ async fn test_client_dialog_termination_scenarios() -> crate::Result<()> { client_dialog_1.inner.transition(DialogState::Terminated( dialog_id_1.clone(), TerminatedReason::UasBusy, - ))?; + )); let state = client_dialog_1.inner.state.lock().unwrap().clone(); assert!(matches!( @@ -270,14 +270,14 @@ async fn test_client_dialog_termination_scenarios() -> crate::Result<()> { client_dialog_2.inner.transition(DialogState::Confirmed( dialog_id_2.clone(), Response::default(), - ))?; + )); assert!(client_dialog_2.inner.is_confirmed()); // Then terminate normally client_dialog_2.inner.transition(DialogState::Terminated( dialog_id_2.clone(), TerminatedReason::UacBye, - ))?; + )); let state = client_dialog_2.inner.state.lock().unwrap().clone(); assert!(matches!( state, diff --git a/src/dialog/tests/test_dialog_states.rs b/src/dialog/tests/test_dialog_states.rs index 2cf87c8..4058db5 100644 --- a/src/dialog/tests/test_dialog_states.rs +++ b/src/dialog/tests/test_dialog_states.rs @@ -139,7 +139,7 @@ async fn test_dialog_state_transitions() -> crate::Result<()> { assert!(matches!(initial_state, DialogState::Calling(_))); // Test transition to Trying - dialog_inner.transition(DialogState::Trying(dialog_id.clone()))?; + dialog_inner.transition(DialogState::Trying(dialog_id.clone())); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Trying(_))); @@ -150,7 +150,7 @@ async fn test_dialog_state_transitions() -> crate::Result<()> { "bob-tag-789", "test-call-id-123", ); - dialog_inner.transition(DialogState::Early(dialog_id.clone(), ringing_resp))?; + dialog_inner.transition(DialogState::Early(dialog_id.clone(), ringing_resp)); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Early(_, _))); @@ -158,7 +158,7 @@ async fn test_dialog_state_transitions() -> crate::Result<()> { dialog_inner.transition(DialogState::Confirmed( dialog_id.clone(), Response::default(), - ))?; + )); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Confirmed(_, _))); assert!(dialog_inner.is_confirmed()); @@ -167,7 +167,7 @@ async fn test_dialog_state_transitions() -> crate::Result<()> { dialog_inner.transition(DialogState::Terminated( dialog_id.clone(), TerminatedReason::Timeout, - ))?; + )); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Terminated(_, _))); @@ -207,7 +207,7 @@ async fn test_server_dialog_state_transitions() -> crate::Result<()> { assert!(matches!(initial_state, DialogState::Calling(_))); // Test transition to Trying (server sends 100 Trying) - dialog_inner.transition(DialogState::Trying(dialog_id.clone()))?; + dialog_inner.transition(DialogState::Trying(dialog_id.clone())); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Trying(_))); @@ -218,12 +218,12 @@ async fn test_server_dialog_state_transitions() -> crate::Result<()> { "bob-tag-789", "test-call-id-server-123", ); - dialog_inner.transition(DialogState::WaitAck(dialog_id.clone(), ok_resp.clone()))?; + dialog_inner.transition(DialogState::WaitAck(dialog_id.clone(), ok_resp.clone())); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::WaitAck(_, _))); // Test transition to Confirmed (after receiving ACK) - dialog_inner.transition(DialogState::Confirmed(dialog_id.clone(), ok_resp))?; + dialog_inner.transition(DialogState::Confirmed(dialog_id.clone(), ok_resp)); let state = dialog_inner.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Confirmed(_, _))); assert!(dialog_inner.is_confirmed()); @@ -264,7 +264,7 @@ async fn test_dialog_in_dialog_requests() -> crate::Result<()> { dialog_inner.transition(DialogState::Confirmed( dialog_id.clone(), Response::default(), - ))?; + )); assert!(dialog_inner.is_confirmed()); // Test INFO request in dialog @@ -284,7 +284,7 @@ async fn test_dialog_in_dialog_requests() -> crate::Result<()> { }; let (handle, _) = TransactionHandle::new(); - dialog_inner.transition(DialogState::Info(dialog_id.clone(), info_req, handle))?; + dialog_inner.transition(DialogState::Info(dialog_id.clone(), info_req, handle)); // Test UPDATE request in dialog let update_req = Request { @@ -303,7 +303,7 @@ async fn test_dialog_in_dialog_requests() -> crate::Result<()> { }; let (handle, _) = TransactionHandle::new(); - dialog_inner.transition(DialogState::Updated(dialog_id.clone(), update_req, handle))?; + dialog_inner.transition(DialogState::Updated(dialog_id.clone(), update_req, handle)); // Test OPTIONS request in dialog let options_req = Request { @@ -322,7 +322,7 @@ async fn test_dialog_in_dialog_requests() -> crate::Result<()> { }; let (handle, _) = TransactionHandle::new(); - dialog_inner.transition(DialogState::Options(dialog_id.clone(), options_req, handle))?; + dialog_inner.transition(DialogState::Options(dialog_id.clone(), options_req, handle)); // Dialog should still be confirmed after in-dialog requests assert!(dialog_inner.is_confirmed()); @@ -360,7 +360,7 @@ async fn test_dialog_termination_scenarios() -> crate::Result<()> { dialog_inner_1.transition(DialogState::Terminated( dialog_id_1.clone(), TerminatedReason::UasBusy, - ))?; + )); let state = dialog_inner_1.state.lock().unwrap().clone(); assert!(matches!( state, @@ -392,14 +392,14 @@ async fn test_dialog_termination_scenarios() -> crate::Result<()> { dialog_inner_2.transition(DialogState::Confirmed( dialog_id_2.clone(), Response::default(), - ))?; + )); assert!(dialog_inner_2.is_confirmed()); // Then terminate normally dialog_inner_2.transition(DialogState::Terminated( dialog_id_2.clone(), TerminatedReason::UacBye, - ))?; + )); let state = dialog_inner_2.state.lock().unwrap().clone(); assert!(matches!(state, DialogState::Terminated(_, _)));