Fix response logic

This commit is contained in:
Sosthene 2024-11-19 22:03:57 +01:00
parent 0d522182d6
commit 359312574f

View File

@ -819,8 +819,15 @@ fn handle_prd(
return Err(anyhow::Error::msg(format!("No available secrets for member {:?}", member)));
}
let clear_pcd = relevant_state.decrypt_pcd();
let roles = clear_pcd.extract_roles()?;
let commit_msg = CommitMessage::new_update_commitment(outpoint, relevant_state.pcd_commitment.clone(), roles);
return Ok(ApiReturn {
ciphers_to_send: ciphers,
commit_to_send: Some(commit_msg),
..Default::default()
})
}
@ -854,19 +861,16 @@ fn handle_prd(
}
PrdType::Response => {
// We must know of a prd update that the response answers to
let original_request = relevant_process
.get_impending_requests_mut()
let mut updated_state = relevant_process
.get_latest_concurrent_states_mut()?
.into_iter()
.find(|r| {
if r.prd_type != PrdType::Update {
return false;
}
r.pcd_commitments == prd.pcd_commitments
r.pcd_commitment == prd.pcd_commitments
})
.ok_or(anyhow::Error::msg("Original request not found"))?;
// Once we found the prd update, we can add the received proofs as validation tokens
original_request
updated_state
.validation_tokens
.extend(prd.validation_tokens);
@ -1391,7 +1395,7 @@ pub fn create_response_message(init_commitment: String, pcd_commitment: String,
let response_prd = Prd::new_response(
outpoint,
serde_json::to_string(&sender)?,
vec![],
vec![proof],
new_state_commitments
);
let prd_msg = response_prd.to_network_msg(sp_wallet)?;