aboutsummaryrefslogtreecommitdiffstats
path: root/src/remake/api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/remake/api.rs')
-rw-r--r--src/remake/api.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/remake/api.rs b/src/remake/api.rs
index 79b551f..7aeb675 100644
--- a/src/remake/api.rs
+++ b/src/remake/api.rs
@@ -393,7 +393,13 @@ async fn start_kind<H: Host>(
.unwrap_or_default()
})
.await;
- if let Err(why) = super::vote::strict_taken(&host, prepared.content.as_deref(), &swarm) {
+ if let Err(why) = super::vote::strict_taken(
+ &host,
+ prepared.content.as_deref(),
+ &swarm,
+ &EpochRecord::from(host.current_epoch()),
+ request.base_heads.as_deref(),
+ ) {
return error_response(
StatusCode::FORBIDDEN,
format!("this node takes no such manifest: {why}"),
@@ -817,6 +823,7 @@ pub(crate) async fn strict_manifest<H: Host>(
) -> Response {
let at = host.now_millis().as_u64();
let caller = user.0.clone();
+ let epoch = EpochRecord::from(host.current_epoch());
let (manifest, values, heads) = host
.read_doc(move |doc| {
let read = |path: &[&str]| {
@@ -832,12 +839,14 @@ pub(crate) async fn strict_manifest<H: Host>(
_ => json!({"version": 1}),
};
policy["values"] = json!("signed");
- let manifest = crate::access::strict::manifest_of(doc, &swarm, policy, &caller, at);
+ let heads = doc.get_heads();
+ let manifest =
+ crate::access::strict::manifest_of(doc, &swarm, epoch, &heads, policy, &caller, at);
let values: Vec<JsonValue> = crate::access::strict::held(doc)
.into_iter()
.map(|(path, value)| json!({ "path": path, "value": value }))
.collect();
- let heads = records::encode_heads(&doc.get_heads());
+ let heads = records::encode_heads(&heads);
(manifest, values, heads)
})
.await;