Skip to content

Commit

Permalink
cleaner error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
jbesraa committed Aug 9, 2023
1 parent 4b6dd7f commit e26ad17
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 16 deletions.
2 changes: 1 addition & 1 deletion payjoin-cli/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ impl App {
.map(|res| res.psbt)
.map_err(|e| Error::Server(e.into()))
},
Some(1),
Some(bitcoin::FeeRate::MIN),
)?;
let payjoin_proposal_psbt = payjoi_proposal.get_payjoin_psbt();
log::debug!("Receiver's Payjoin proposal PSBT Rsponse: {:#?}", payjoin_proposal_psbt);
Expand Down
29 changes: 14 additions & 15 deletions payjoin/src/receive/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -721,9 +721,11 @@ impl ProvisionalProposal {
/// this is kind of a "build_proposal" step before we sign and finalize and extract
///
/// WARNING: DO NOT ALTER INPUTS OR OUTPUTS AFTER THIS STEP
fn apply_fee(&mut self, min_feerate_sat_per_vb: Option<u64>) -> Result<&Psbt, RequestError> {
let min_feerate =
FeeRate::from_sat_per_vb_unchecked(min_feerate_sat_per_vb.unwrap_or_default());
fn apply_fee(
&mut self,
min_feerate_sat_per_vb: Option<FeeRate>,
) -> Result<&Psbt, RequestError> {
let min_feerate = min_feerate_sat_per_vb.unwrap_or(FeeRate::MIN);
log::trace!("min_feerate: {:?}", min_feerate);
log::trace!("params.min_feerate: {:?}", self.params.min_feerate);
let min_feerate = max(min_feerate, self.params.min_feerate);
Expand Down Expand Up @@ -812,19 +814,16 @@ impl ProvisionalProposal {
pub fn finalize_proposal(
mut self,
wallet_process_psbt: impl Fn(&Psbt) -> Result<std::string::String, Error>,
min_feerate_sat_per_vb: Option<u64>,
min_feerate_sat_per_vb: Option<FeeRate>,
) -> Result<PayjoinProposal, RequestError> {
let payjoin_proposal_psbt: &Psbt = self.apply_fee(min_feerate_sat_per_vb)?;
let payjoin_proposal_psbt = match wallet_process_psbt(payjoin_proposal_psbt) {
Ok(p) => p,
Err(_) => {
return Err(RequestError::from(InternalRequestError::PsbtFinalizingError));
}
};
let payjoin_proposal_psbt = Psbt::from_str(&payjoin_proposal_psbt.to_string())
.map_err(InternalRequestError::PsbtParseError)?;
let payjoin_proposal =
self.prepare_psbt(payjoin_proposal_psbt).map_err(RequestError::from)?;
let psbt = self.apply_fee(min_feerate_sat_per_vb)?;
let psbt = wallet_process_psbt(psbt).map_err(|_| {
log::error!("wallet_process_psbt error");
InternalRequestError::PsbtFinalizingError
})?;
let psbt =
Psbt::from_str(&psbt.to_string()).map_err(InternalRequestError::PsbtParseError)?;
let payjoin_proposal = self.prepare_psbt(psbt).map_err(RequestError::from)?;
Ok(payjoin_proposal)
}
}
Expand Down

0 comments on commit e26ad17

Please sign in to comment.