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))); 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 { return Ok(ApiReturn {
ciphers_to_send: ciphers, ciphers_to_send: ciphers,
commit_to_send: Some(commit_msg),
..Default::default() ..Default::default()
}) })
} }
@ -854,19 +861,16 @@ fn handle_prd(
} }
PrdType::Response => { PrdType::Response => {
// We must know of a prd update that the response answers to // We must know of a prd update that the response answers to
let original_request = relevant_process let mut updated_state = relevant_process
.get_impending_requests_mut() .get_latest_concurrent_states_mut()?
.into_iter() .into_iter()
.find(|r| { .find(|r| {
if r.prd_type != PrdType::Update { r.pcd_commitment == prd.pcd_commitments
return false;
}
r.pcd_commitments == prd.pcd_commitments
}) })
.ok_or(anyhow::Error::msg("Original request not found"))?; .ok_or(anyhow::Error::msg("Original request not found"))?;
// Once we found the prd update, we can add the received proofs as validation tokens // Once we found the prd update, we can add the received proofs as validation tokens
original_request updated_state
.validation_tokens .validation_tokens
.extend(prd.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( let response_prd = Prd::new_response(
outpoint, outpoint,
serde_json::to_string(&sender)?, serde_json::to_string(&sender)?,
vec![], vec![proof],
new_state_commitments new_state_commitments
); );
let prd_msg = response_prd.to_network_msg(sp_wallet)?; let prd_msg = response_prd.to_network_msg(sp_wallet)?;