gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-exchange] branch master updated: implement more audi


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: implement more audit checks for refunds
Date: Fri, 17 Mar 2017 17:47:59 +0100

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 382e3df  implement more audit checks for refunds
382e3df is described below

commit 382e3dfedbf3384065fc19b3ea561aed754b402f
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Mar 17 17:49:55 2017 +0100

    implement more audit checks for refunds
---
 src/auditor/taler-auditor.c           | 43 +++++++++++++++++++++++++++++++----
 src/include/taler_exchangedb_plugin.h |  3 +++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c
index dab3d90..d04eabc 100644
--- a/src/auditor/taler-auditor.c
+++ b/src/auditor/taler-auditor.c
@@ -1833,7 +1833,10 @@ refund_cb (void *cls,
   struct CoinContext *cc = cls;
   struct CoinSummary *cs;
   const struct TALER_EXCHANGEDB_DenominationKeyInformationP *dki;
+  struct DenominationSummary *ds;
   struct TALER_RefundRequestPS rr;
+  struct TALER_Amount amount_without_fee;
+  struct TALER_Amount refund_fee;
 
   cs = get_coin_summary (cc,
                          coin_pub);
@@ -1860,15 +1863,47 @@ refund_cb (void *cls,
                                   &merchant_sig->eddsa_sig,
                                   &merchant_pub->eddsa_pub))
   {
-    report_row_inconsistency ("deposit",
+    report_row_inconsistency ("refund",
                               rowid,
-                              "invalid signature for coin deposit");
+                              "invalid signature for refund");
     return GNUNET_OK;
   }
 
-  // TODO: update denomination key balance!
+  TALER_amount_ntoh (&refund_fee,
+                     &dki->properties.fee_refund);
+  if (GNUNET_OK !=
+      TALER_amount_subtract (&amount_without_fee,
+                             amount_with_fee,
+                             &refund_fee))
+  {
+    report_row_inconsistency ("refund",
+                              rowid,
+                              "refunded amount smaller than refund fee");
+    return GNUNET_OK;
+  }
+
+  /* update coin's denomination balance */
+  ds = get_denomination_summary (cc,
+                                 &dki->properties.denom_hash);
+  if (GNUNET_OK !=
+      TALER_amount_add (&ds->denom_balance,
+                        &ds->denom_balance,
+                        &amount_without_fee))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
+
+  /* update total refund fee balance */
+  if (GNUNET_OK !=
+      TALER_amount_add (&cc->refund_fee_balance,
+                        &cc->refund_fee_balance,
+                        &refund_fee))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
 
-  // TODO: update expected amounts in 'cc'
   return GNUNET_OK;
 }
 
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index a365e35..3409278 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -1738,6 +1738,9 @@ struct TALER_EXCHANGEDB_Plugin
 
 
   /**
+   * FIXME: this is NOT the API we want here, as we cannot exactly determine 
the
+   * important WTID from the callback!
+   *
    * Function called to select all wire transfers the exchange
    * executed or plans to execute.
    *

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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