From 41478aea76fdcbd11f0fb2225aae4b184053ab5f Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 22 Mar 2015 16:20:03 +0100 Subject: move deposit fee check to earlier --- src/mint/taler-mint-httpd_db.c | 13 ++----------- src/mint/taler-mint-httpd_deposit.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/mint/taler-mint-httpd_db.c b/src/mint/taler-mint-httpd_db.c index f99a98598..43b226e64 100644 --- a/src/mint/taler-mint-httpd_db.c +++ b/src/mint/taler-mint-httpd_db.c @@ -105,7 +105,6 @@ TALER_MINT_db_execute_deposit (struct MHD_Connection *connection, struct TALER_MINT_DB_TransactionList *tl; struct TALER_Amount spent; struct TALER_Amount value; - struct TALER_Amount fee_deposit; struct MintKeyState *mks; struct TALER_MINT_DenomKeyIssuePriv *dki; int ret; @@ -134,8 +133,6 @@ TALER_MINT_db_execute_deposit (struct MHD_Connection *connection, deposit->coin.denom_pub); TALER_amount_ntoh (&value, &dki->issue.value); - TALER_amount_ntoh (&fee_deposit, - &dki->issue.fee_deposit); TALER_MINT_key_state_release (mks); if (GNUNET_OK != @@ -147,14 +144,6 @@ TALER_MINT_db_execute_deposit (struct MHD_Connection *connection, } /* fee for THIS transaction */ spent = deposit->amount_with_fee; - if (TALER_amount_cmp (&fee_deposit, - &spent) < 0) - { - return (MHD_YES == - TALER_MINT_reply_external_error (connection, - "deposited amount smaller than depositing fee")) - ? GNUNET_NO : GNUNET_SYSERR; - } /* add cost of all previous transactions */ tl = plugin->get_coin_transactions (plugin->cls, session, @@ -168,6 +157,8 @@ TALER_MINT_db_execute_deposit (struct MHD_Connection *connection, tl); return TALER_MINT_reply_internal_db_error (connection); } + /* Check that cost of all transactions is smaller than + the value of the coin. */ if (0 < TALER_amount_cmp (&spent, &value)) { diff --git a/src/mint/taler-mint-httpd_deposit.c b/src/mint/taler-mint-httpd_deposit.c index 647cd8242..810d1c328 100644 --- a/src/mint/taler-mint-httpd_deposit.c +++ b/src/mint/taler-mint-httpd_deposit.c @@ -59,6 +59,7 @@ verify_and_execute_deposit (struct MHD_Connection *connection, struct MintKeyState *key_state; struct TALER_DepositRequest dr; struct TALER_MINT_DenomKeyIssuePriv *dki; + struct TALER_Amount fee_deposit; dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_DEPOSIT); dr.purpose.size = htonl (sizeof (struct TALER_DepositRequest)); @@ -97,6 +98,17 @@ verify_and_execute_deposit (struct MHD_Connection *connection, TALER_MINT_key_state_release (key_state); return TALER_MINT_reply_coin_invalid (connection); } + TALER_amount_ntoh (&fee_deposit, + &dki->issue.fee_deposit); + if (TALER_amount_cmp (&fee_deposit, + &deposit->amount_with_fee) < 0) + { + TALER_MINT_key_state_release (key_state); + return (MHD_YES == + TALER_MINT_reply_external_error (connection, + "deposited amount smaller than depositing fee")) + ? GNUNET_NO : GNUNET_SYSERR; + } TALER_MINT_key_state_release (key_state); return TALER_MINT_db_execute_deposit (connection, -- cgit v1.2.3