diff --git a/src/api.rs b/src/api.rs index cc102a5..5938723 100644 --- a/src/api.rs +++ b/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)?;