Fix response logic
This commit is contained in:
parent
0d522182d6
commit
359312574f
20
src/api.rs
20
src/api.rs
@ -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)?;
|
||||
|
Loading…
x
Reference in New Issue
Block a user