From 26141863f063ad11ac3d8fb8fbce9c0101c42878 Mon Sep 17 00:00:00 2001 From: Hocuri Date: Mon, 14 Apr 2025 16:13:11 +0200 Subject: [PATCH] fix: Don't change the primary 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 f91ffa59e4..a49948c8ae 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(()) }