From 2791318ff10502d0d71844f82c3261498c1b8b68 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 9 Nov 2020 12:48:29 +0100 Subject: [PATCH] fix bug #3121: forbid removing used reemotes --- src/api2/config/remote.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/api2/config/remote.rs b/src/api2/config/remote.rs index f053ef36..0fce5bed 100644 --- a/src/api2/config/remote.rs +++ b/src/api2/config/remote.rs @@ -284,6 +284,17 @@ pub fn update_remote( /// Remove a remote from the configuration file. pub fn delete_remote(name: String, digest: Option) -> Result<(), Error> { + use crate::config::sync::{self, SyncJobConfig}; + + let (sync_jobs, _) = sync::config()?; + + let job_list: Vec = sync_jobs.convert_to_typed_array("sync")?; + for job in job_list { + if job.remote == name { + bail!("remote '{}' is used by sync job '{}' (datastore '{}')", name, job.id, job.store); + } + } + let _lock = open_file_locked(remote::REMOTE_CFG_LOCKFILE, std::time::Duration::new(10, 0), true)?; let (mut config, expected_digest) = remote::config()?;