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 /src | |
| 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
Diffstat (limited to 'src')
| -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( |
