diff --git a/crates/radicle-protocol/src/service.rs b/crates/radicle-protocol/src/service.rs index 3b0c4f20..3fafbed9 100644 --- a/crates/radicle-protocol/src/service.rs +++ b/crates/radicle-protocol/src/service.rs @@ -447,10 +447,9 @@ where let mut private = BTreeSet::new(); for repo in self.storage.repositories()? { + let repo = self.upgrade_sigrefs(repo)?; let rid = repo.rid; - self.upgrade_sigrefs(&repo)?; - // If we're not seeding this repo, just skip it. if !self.policies.is_seeding(&rid)? { debug!(target: "service", "Local repository {rid} is not seeded"); @@ -522,9 +521,9 @@ where Ok(()) } - fn upgrade_sigrefs(&mut self, info: &RepositoryInfo) -> Result<(), Error> { + fn upgrade_sigrefs(&mut self, mut info: RepositoryInfo) -> Result { if !matches!(info.refs, SignedRefsInfo::NeedsMigration) { - return Ok(()); + return Ok(info); } let rid = info.rid; @@ -536,8 +535,15 @@ where let repo = self.storage.repository_mut(rid)?; // NOTE: We assume to reach `FeatureLevel::LATEST` by signing refs. - repo.force_sign_refs(&self.signer)?; - Ok(()) + let refs = repo.force_sign_refs(&self.signer)?; + + let repo = self.storage.repository(rid)?; + let synced_at = SyncedAt::new(refs.at, &repo)?; + + info.synced_at = Some(synced_at); + info.refs = SignedRefsInfo::Some(refs); + + Ok(info) } }