From 05683931571d43abf53ad5b7b4f767bb1d446f3d Mon Sep 17 00:00:00 2001 From: Hocuri Date: Wed, 18 Jun 2025 11:19:41 +0200 Subject: [PATCH] fix: Don't change ConfiguredAddr when adding a transport (#6804) Before this PR, ConfiguredAddr (which will be used to store the primary transport) would have been changed when adding a new transport. Doesn't matter yet because it's not possible yet to have multiple transports. But I wanted to fix this bug already so that I'm not suprised by it later. --- src/login_param.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/login_param.rs b/src/login_param.rs index f91ffa59e..a49948c8a 100644 --- a/src/login_param.rs +++ b/src/login_param.rs @@ -809,20 +809,14 @@ impl ConfiguredLoginParam { entered_param: &EnteredLoginParam, ) -> Result<()> { let addr = addr_normalize(&self.addr); + let provider_id = self.provider.map(|provider| provider.id); let configured_addr = context.get_config(Config::ConfiguredAddr).await?; - if let Some(configured_addr) = configured_addr { + if let Some(configured_addr) = &configured_addr { ensure!( - addr_cmp(&configured_addr, &addr,), + addr_cmp(configured_addr, &addr), "Adding a second transport is not supported right now." ); } - context - .sql - .set_raw_config( - Config::ConfiguredProvider.as_ref(), - self.provider.map(|provider| provider.id), - ) - .await?; context .sql .execute( @@ -837,10 +831,17 @@ impl ConfiguredLoginParam { ), ) .await?; - context - .sql - .set_raw_config(Config::ConfiguredAddr.as_ref(), Some(&addr)) - .await?; + if configured_addr.is_none() { + // If there is no transport yet, set the new transport as the primary one + context + .sql + .set_raw_config(Config::ConfiguredProvider.as_ref(), provider_id) + .await?; + context + .sql + .set_raw_config(Config::ConfiguredAddr.as_ref(), Some(&addr)) + .await?; + } Ok(()) }