gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: -deduplicate logic


From: gnunet
Subject: [taler-exchange] branch master updated: -deduplicate logic
Date: Mon, 04 Jul 2022 23:26:12 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new e68206b1 -deduplicate logic
e68206b1 is described below

commit e68206b1f9725a82b38225025c4693580d6aad10
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Jul 4 23:25:51 2022 +0200

    -deduplicate logic
---
 src/auditor/taler-helper-auditor-coins.c | 199 +++++++++++--------------------
 1 file changed, 68 insertions(+), 131 deletions(-)

diff --git a/src/auditor/taler-helper-auditor-coins.c 
b/src/auditor/taler-helper-auditor-coins.c
index 6940369f..20c9b2ed 100644
--- a/src/auditor/taler-helper-auditor-coins.c
+++ b/src/auditor/taler-helper-auditor-coins.c
@@ -1197,6 +1197,65 @@ check_known_coin (
 }
 
 
+/**
+ * Update the denom balance in @a dso reducing it by
+ * @a amount_with_fee. If this is not possible, report
+ * an emergency.  Also updates the #total_escrow_balance.
+ *
+ * @param dso denomination summary to update
+ * @param rowid responsible row (for logging)
+ * @param amount_with_fee amount to subtract
+ */
+static void
+reduce_denom_balance (struct DenominationSummary *dso,
+                      uint64_t rowid,
+                      const struct TALER_Amount *amount_with_fee)
+{
+  struct TALER_Amount tmp;
+
+  if (TALER_ARL_SR_INVALID_NEGATIVE ==
+      TALER_ARL_amount_subtract_neg (&tmp,
+                                     &dso->denom_balance,
+                                     amount_with_fee))
+  {
+    TALER_ARL_amount_add (&dso->denom_loss,
+                          &dso->denom_loss,
+                          amount_with_fee);
+    dso->report_emergency = true;
+  }
+  else
+  {
+    dso->denom_balance = tmp;
+  }
+  if (-1 == TALER_amount_cmp (&total_escrow_balance,
+                              amount_with_fee))
+  {
+    /* This can theoretically happen if for example the exchange
+       never issued any coins (i.e. escrow balance is zero), but
+       accepted a forged coin (i.e. emergency situation after
+       private key compromise). In that case, we cannot even
+       subtract the profit we make from the fee from the escrow
+       balance. Tested as part of test-auditor.sh, case #18 */
+    report_amount_arithmetic_inconsistency (
+      "subtracting amount from escrow balance",
+      rowid,
+      &total_escrow_balance,
+      amount_with_fee,
+      0);
+  }
+  else
+  {
+    TALER_ARL_amount_subtract (&total_escrow_balance,
+                               &total_escrow_balance,
+                               amount_with_fee);
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "New balance of denomination `%s' is %s\n",
+              GNUNET_h2s (&dso->issue->denom_hash.hash),
+              TALER_amount2s (&dso->denom_balance));
+}
+
+
 /**
  * Function called with details about coins that were melted, with the
  * goal of auditing the refresh's execution.  Verifies the signature
@@ -1230,7 +1289,6 @@ refresh_session_cb (void *cls,
   const struct TALER_EXCHANGEDB_DenominationKeyInformation *issue;
   struct DenominationSummary *dso;
   struct TALER_Amount amount_without_fee;
-  struct TALER_Amount tmp;
   enum GNUNET_DB_QueryStatus qs;
 
   (void) noreveal_index;
@@ -1462,47 +1520,9 @@ refresh_session_cb (void *cls,
   }
   else
   {
-    // FIXME: refactor: repeated logic!
-    if (TALER_ARL_SR_INVALID_NEGATIVE ==
-        TALER_ARL_amount_subtract_neg (&tmp,
-                                       &dso->denom_balance,
-                                       amount_with_fee))
-    {
-      TALER_ARL_amount_add (&dso->denom_loss,
-                            &dso->denom_loss,
-                            amount_with_fee);
-      dso->report_emergency = true;
-    }
-    else
-    {
-      dso->denom_balance = tmp;
-    }
-    if (-1 == TALER_amount_cmp (&total_escrow_balance,
-                                amount_with_fee))
-    {
-      /* This can theoretically happen if for example the exchange
-         never issued any coins (i.e. escrow balance is zero), but
-         accepted a forged coin (i.e. emergency situation after
-         private key compromise). In that case, we cannot even
-         subtract the profit we make from the fee from the escrow
-         balance. Tested as part of test-auditor.sh, case #18 */
-      report_amount_arithmetic_inconsistency (
-        "subtracting refresh fee from escrow balance",
-        rowid,
-        &total_escrow_balance,
-        amount_with_fee,
-        0);
-    }
-    else
-    {
-      TALER_ARL_amount_subtract (&total_escrow_balance,
-                                 &total_escrow_balance,
-                                 amount_with_fee);
-    }
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "New balance of denomination `%s' after melt is %s\n",
-                GNUNET_h2s (&issue->denom_hash.hash),
-                TALER_amount2s (&dso->denom_balance));
+    reduce_denom_balance (dso,
+                          rowid,
+                          amount_with_fee);
   }
 
   /* update global melt fees */
@@ -1648,51 +1668,9 @@ deposit_cb (void *cls,
   }
   else
   {
-    struct TALER_Amount tmp;
-
-    // FIXME: refactor: repeated logic!
-    if (TALER_ARL_SR_INVALID_NEGATIVE ==
-        TALER_ARL_amount_subtract_neg (&tmp,
-                                       &ds->denom_balance,
-                                       &deposit->amount_with_fee))
-    {
-      TALER_ARL_amount_add (&ds->denom_loss,
-                            &ds->denom_loss,
-                            &deposit->amount_with_fee);
-      ds->report_emergency = true;
-    }
-    else
-    {
-      ds->denom_balance = tmp;
-    }
-
-    if (-1 == TALER_amount_cmp (&total_escrow_balance,
-                                &deposit->amount_with_fee))
-    {
-      /* This can theoretically happen if for example the exchange
-         never issued any coins (i.e. escrow balance is zero), but
-         accepted a forged coin (i.e. emergency situation after
-         private key compromise). In that case, we cannot even
-         subtract the profit we make from the fee from the escrow
-         balance. Tested as part of test-auditor.sh, case #18 */
-      report_amount_arithmetic_inconsistency (
-        "subtracting deposit fee from escrow balance",
-        rowid,
-        &total_escrow_balance,
-        &deposit->amount_with_fee,
-        0);
-    }
-    else
-    {
-      TALER_ARL_amount_subtract (&total_escrow_balance,
-                                 &total_escrow_balance,
-                                 &deposit->amount_with_fee);
-    }
-
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "New balance of denomination `%s' after deposit is %s\n",
-                GNUNET_h2s (&issue->denom_hash.hash),
-                TALER_amount2s (&ds->denom_balance));
+    reduce_denom_balance (ds,
+                          rowid,
+                          &deposit->amount_with_fee);
   }
 
   /* update global deposit fees */
@@ -2449,50 +2427,9 @@ purse_deposit_cb (
   }
   else
   {
-    struct TALER_Amount tmp;
-
-    // FIXME: refactor: repeated logic!
-    if (TALER_ARL_SR_INVALID_NEGATIVE ==
-        TALER_ARL_amount_subtract_neg (&tmp,
-                                       &ds->denom_balance,
-                                       &deposit->amount))
-    {
-      TALER_ARL_amount_add (&ds->denom_loss,
-                            &ds->denom_loss,
-                            &deposit->amount);
-      ds->report_emergency = true;
-    }
-    else
-    {
-      ds->denom_balance = tmp;
-    }
-    if (-1 == TALER_amount_cmp (&total_escrow_balance,
-                                &deposit->amount))
-    {
-      /* This can theoretically happen if for example the exchange
-         never issued any coins (i.e. escrow balance is zero), but
-         accepted a forged coin (i.e. emergency situation after
-         private key compromise). In that case, we cannot even
-         subtract the profit we make from the fee from the escrow
-         balance. Tested as part of test-auditor.sh, case #18 */
-      report_amount_arithmetic_inconsistency (
-        "subtracting purse deposit fee from escrow balance",
-        rowid,
-        &total_escrow_balance,
-        &deposit->amount,
-        0);
-    }
-    else
-    {
-      TALER_ARL_amount_subtract (&total_escrow_balance,
-                                 &total_escrow_balance,
-                                 &deposit->amount);
-    }
-
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "New balance of denomination `%s' after purse deposit is %s\n",
-                GNUNET_h2s (&issue->denom_hash.hash),
-                TALER_amount2s (&ds->denom_balance));
+    reduce_denom_balance (ds,
+                          rowid,
+                          &deposit->amount);
   }
 
   /* update global deposit fees */

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]