diff options
author | Yigit Sever | 2022-04-23 21:50:03 +0300 |
---|---|---|
committer | Yigit Sever | 2022-04-23 21:50:03 +0300 |
commit | 3ec12ea0fdf179dc9f45a550fd6e60c9501790d5 (patch) | |
tree | d9308e1e77495abea2b0f3c366b3866be853bd4b | |
parent | 949da3fd6d2143d23fe1b84cf83f80418fd05840 (diff) | |
download | gradecoin-3ec12ea0fdf179dc9f45a550fd6e60c9501790d5.tar.gz gradecoin-3ec12ea0fdf179dc9f45a550fd6e60c9501790d5.tar.bz2 gradecoin-3ec12ea0fdf179dc9f45a550fd6e60c9501790d5.zip |
Separate duplicate tx check from tx ids
Use source and target instead
-rw-r--r-- | src/handlers.rs | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/handlers.rs b/src/handlers.rs index 997867c..93781e4 100644 --- a/src/handlers.rs +++ b/src/handlers.rs | |||
@@ -742,8 +742,7 @@ pub async fn propose_transaction( | |||
742 | )); | 742 | )); |
743 | } | 743 | } |
744 | 744 | ||
745 | let transaction_id = calculate_transaction_id(&new_transaction.source, &new_transaction.target); | 745 | // Is this a duplicate transaction |
746 | |||
747 | { | 746 | { |
748 | let transactions = db.pending_transactions.read(); | 747 | let transactions = db.pending_transactions.read(); |
749 | debug!( | 748 | debug!( |
@@ -751,19 +750,22 @@ pub async fn propose_transaction( | |||
751 | new_transaction.source, new_transaction.target, | 750 | new_transaction.source, new_transaction.target, |
752 | ); | 751 | ); |
753 | 752 | ||
754 | if transactions.contains_key(&transaction_id) { | 753 | for tx in transactions.values() { |
755 | debug!( | 754 | if tx.source == new_transaction.source && tx.target == new_transaction.target { |
756 | "this source/target combination {} already has a pending transaction", | 755 | debug!( |
757 | transaction_id | 756 | "There is already a transaction from {} to {}", |
758 | ); | 757 | new_transaction.source, new_transaction.target |
759 | 758 | ); | |
760 | return Ok(warp::reply::with_status( | 759 | return Ok(warp::reply::with_status( |
761 | warp::reply::json(&UserFeedback { | 760 | warp::reply::json(&UserFeedback { |
762 | res: ResponseType::Error, | 761 | res: ResponseType::Error, |
763 | message: "This user already has another pending transaction".to_owned(), | 762 | message: |
764 | }), | 763 | "This user already has another pending transaction with this recipient" |
765 | StatusCode::BAD_REQUEST, | 764 | .to_owned(), |
766 | )); | 765 | }), |
766 | StatusCode::BAD_REQUEST, | ||
767 | )); | ||
768 | } | ||
767 | } | 769 | } |
768 | } | 770 | } |
769 | 771 | ||
@@ -841,6 +843,7 @@ pub async fn propose_transaction( | |||
841 | 843 | ||
842 | let mut transactions = db.pending_transactions.write(); | 844 | let mut transactions = db.pending_transactions.write(); |
843 | 845 | ||
846 | let transaction_id = calculate_transaction_id(&new_transaction.source, &new_transaction.target); | ||
844 | transactions.insert(transaction_id, new_transaction); | 847 | transactions.insert(transaction_id, new_transaction); |
845 | 848 | ||
846 | Ok(warp::reply::with_status( | 849 | Ok(warp::reply::with_status( |