mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
fix: Reset quota on configured address change (#5908)
This commit is contained in:
@@ -857,6 +857,8 @@ impl Context {
|
|||||||
///
|
///
|
||||||
/// This should only be used by test code and during configure.
|
/// This should only be used by test code and during configure.
|
||||||
pub(crate) async fn set_primary_self_addr(&self, primary_new: &str) -> Result<()> {
|
pub(crate) async fn set_primary_self_addr(&self, primary_new: &str) -> Result<()> {
|
||||||
|
self.quota.write().await.take();
|
||||||
|
|
||||||
// add old primary address (if exists) to secondary addresses
|
// add old primary address (if exists) to secondary addresses
|
||||||
let mut secondary_addrs = self.get_all_self_addrs().await?;
|
let mut secondary_addrs = self.get_all_self_addrs().await?;
|
||||||
// never store a primary address also as a secondary
|
// never store a primary address also as a secondary
|
||||||
@@ -869,7 +871,7 @@ impl Context {
|
|||||||
|
|
||||||
self.set_config_internal(Config::ConfiguredAddr, Some(primary_new))
|
self.set_config_internal(Config::ConfiguredAddr, Some(primary_new))
|
||||||
.await?;
|
.await?;
|
||||||
|
self.emit_event(EventType::ConnectivityChanged);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
11
src/quota.rs
11
src/quota.rs
@@ -197,7 +197,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||||
async fn test_quota_needs_update() {
|
async fn test_quota_needs_update() -> Result<()> {
|
||||||
let mut tcm = TestContextManager::new();
|
let mut tcm = TestContextManager::new();
|
||||||
let t = &tcm.unconfigured().await;
|
let t = &tcm.unconfigured().await;
|
||||||
const TIMEOUT: u64 = 60;
|
const TIMEOUT: u64 = 60;
|
||||||
@@ -214,5 +214,14 @@ mod tests {
|
|||||||
modified: tools::Time::now(),
|
modified: tools::Time::now(),
|
||||||
});
|
});
|
||||||
assert!(!t.quota_needs_update(TIMEOUT).await);
|
assert!(!t.quota_needs_update(TIMEOUT).await);
|
||||||
|
|
||||||
|
t.evtracker.clear_events();
|
||||||
|
t.set_primary_self_addr("new@addr").await?;
|
||||||
|
assert!(t.quota.read().await.is_none());
|
||||||
|
t.evtracker
|
||||||
|
.get_matching(|evt| matches!(evt, EventType::ConnectivityChanged))
|
||||||
|
.await;
|
||||||
|
assert!(t.quota_needs_update(TIMEOUT).await);
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user