gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-merchant] branch master updated (f981076 -> fc79835)


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] branch master updated (f981076 -> fc79835)
Date: Sun, 24 Mar 2019 16:37:15 +0100

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

grothoff pushed a change to branch master
in repository merchant.

    from f981076  Add a .dir-locals,el for configuring emacs for this project
     new 365d933  fix test case error handling
     new fc79835  clean up tipping transactiton mess a bit (wip)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/backend/taler-merchant-httpd_pay.c           |   8 +-
 src/backend/taler-merchant-httpd_refund.c        |  69 ++++--
 src/backend/taler-merchant-httpd_tip-authorize.c |  25 ++-
 src/backend/taler-merchant-httpd_tip-pickup.c    |  12 +-
 src/backend/taler-merchant-httpd_tip-query.c     |  37 ++--
 src/backenddb/plugin_merchantdb_postgres.c       | 260 +++++++++++------------
 src/backenddb/test_merchantdb.c                  | 150 ++++++-------
 src/include/taler_merchantdb_plugin.h            |  34 +--
 src/lib/test_merchant_api.c                      |   4 +-
 src/lib/test_merchant_api_new.c                  |   2 -
 10 files changed, 305 insertions(+), 296 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_pay.c 
b/src/backend/taler-merchant-httpd_pay.c
index cb8ef8b..96dbdc0 100644
--- a/src/backend/taler-merchant-httpd_pay.c
+++ b/src/backend/taler-merchant-httpd_pay.c
@@ -1781,8 +1781,8 @@ begin_transaction (struct PayContext *pc)
       db->rollback (db->cls);
       if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
       {
-       begin_transaction (pc);
-       return;
+        begin_transaction (pc);
+        return;
       }
       /* Always report on hard error as well to enable diagnostics */
       GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
@@ -1816,8 +1816,8 @@ begin_transaction (struct PayContext *pc)
       db->rollback (db->cls);
       if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
       {
-       begin_transaction (pc);
-       return;
+        begin_transaction (pc);
+        return;
       }
       /* Always report on hard error as well to enable diagnostics */
       GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
diff --git a/src/backend/taler-merchant-httpd_refund.c 
b/src/backend/taler-merchant-httpd_refund.c
index 75f6ed9..fbf72f1 100644
--- a/src/backend/taler-merchant-httpd_refund.c
+++ b/src/backend/taler-merchant-httpd_refund.c
@@ -130,6 +130,7 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
     GNUNET_JSON_spec_end ()
   };
   enum GNUNET_DB_QueryStatus qs;
+  enum GNUNET_DB_QueryStatus qsx;
 
   if (NULL == *connection_cls)
   {
@@ -178,17 +179,17 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
     GNUNET_JSON_parse_free (spec);
     return TMH_RESPONSE_reply_not_found (connection,
                                          TALER_EC_REFUND_INSTANCE_UNKNOWN,
-                                        "Unknown instance given");
+                                         "Unknown instance given");
   }
 
   db->preflight (db->cls);
 
   /* Convert order id to h_contract_terms */
   qs = db->find_contract_terms (db->cls,
-                               &contract_terms,
+                                &contract_terms,
                                 &last_session_id,
-                               order_id,
-                               &mi->pubkey);
+                                order_id,
+                                &mi->pubkey);
   if (0 > qs)
   {
     /* single, read-only SQL statements should never cause
@@ -226,12 +227,46 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
   }
   for (unsigned int i=0;i<MAX_RETRIES;i++)
   {
+    if (GNUNET_OK !=
+        db->start (db->cls,
+                   "increase refund"))
+    {
+      GNUNET_break (0);
+      return GNUNET_DB_STATUS_HARD_ERROR;
+    }
     qs = db->increase_refund_for_contract (db->cls,
-                                          &h_contract_terms,
-                                          &mi->pubkey,
-                                          &refund,
-                                          reason);
-    if (GNUNET_DB_STATUS_SOFT_ERROR != qs)
+                                           &h_contract_terms,
+                                           &mi->pubkey,
+                                           &refund,
+                                           reason);
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "increase refund returned %d\n",
+                qs);
+    if (GNUNET_DB_STATUS_HARD_ERROR == qs)
+    {
+      GNUNET_break (0);
+      db->rollback (db->cls);
+      break;
+    }
+    if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
+    {
+      db->rollback (db->cls);
+      continue;
+    }
+    /* Got one or more deposits */
+    if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
+    {
+      db->rollback (db->cls);
+      break;
+    }
+    qsx = db->commit (db->cls);
+    if (GNUNET_DB_STATUS_HARD_ERROR == qsx)
+    {
+      GNUNET_break (0);
+      qs = qsx;
+      break;
+    }
+    if (GNUNET_DB_STATUS_SOFT_ERROR != qsx)
       break;
   }
   if (0 > qs)
@@ -265,7 +300,6 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
    * Just a "200 OK" should be fine here, as the frontend has all
    * the information needed to generate the right response.
    */
-
   confirmation.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND_OK);
   confirmation.purpose.size = htonl (sizeof (struct 
TALER_MerchantRefundConfirmationPS));
   GNUNET_CRYPTO_hash (order_id,
@@ -465,10 +499,10 @@ MH_handler_refund_lookup (struct TMH_RequestHandler *rh,
   /* Convert order id to h_contract_terms */
   contract_terms = NULL;
   qs = db->find_contract_terms (db->cls,
-                               &contract_terms,
+                                &contract_terms,
                                 &last_session_id,
-                               order_id,
-                               &mi->pubkey);
+                                order_id,
+                                &mi->pubkey);
   if (0 > qs)
   {
     /* single, read-only SQL statements should never cause
@@ -554,13 +588,14 @@ TM_get_refund_json (const struct MerchantInstance *mi,
   prd.h_contract_terms = h_contract_terms;
   prd.merchant = mi;
   prd.ec = TALER_EC_NONE;
+  db->preflight (db->cls);
   for (unsigned int i=0;i<MAX_RETRIES;i++)
   {
     qs = db->get_refunds_from_contract_terms_hash (db->cls,
-                                                  &mi->pubkey,
-                                                  h_contract_terms,
-                                                  &process_refunds_cb,
-                                                  &prd);
+                                                   &mi->pubkey,
+                                                   h_contract_terms,
+                                                   &process_refunds_cb,
+                                                   &prd);
     if (GNUNET_DB_STATUS_SOFT_ERROR != qs)
       break;
   }
diff --git a/src/backend/taler-merchant-httpd_tip-authorize.c 
b/src/backend/taler-merchant-httpd_tip-authorize.c
index 58ee405..9301df9 100644
--- a/src/backend/taler-merchant-httpd_tip-authorize.c
+++ b/src/backend/taler-merchant-httpd_tip-authorize.c
@@ -202,11 +202,11 @@ handle_status (void *cls,
         GNUNET_CRYPTO_hash (history[i].details.in_details.wire_reference,
                             history[i].details.in_details.wire_reference_size,
                             &uuid);
-        qs = db->enable_tip_reserve (db->cls,
-                                     &tac->reserve_priv,
-                                     &uuid,
-                                     &history[i].amount,
-                                     expiration);
+        qs = db->enable_tip_reserve_TR (db->cls,
+                                        &tac->reserve_priv,
+                                        &uuid,
+                                        &history[i].amount,
+                                        expiration);
         if (0 > qs)
         {
           GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -377,14 +377,13 @@ MH_handler_tip_authorize (struct TMH_RequestHandler *rh,
                                         "exchange for tipping not configured 
for the instance");
   }
   tac->reserve_priv = mi->tip_reserve;
-  db->preflight (db->cls);
-  ec = db->authorize_tip (db->cls,
-                          tac->justification,
-                          &tac->amount,
-                          &mi->tip_reserve,
-                         mi->tip_exchange,
-                          &expiration,
-                          &tip_id);
+  ec = db->authorize_tip_TR (db->cls,
+                             tac->justification,
+                             &tac->amount,
+                             &mi->tip_reserve,
+                             mi->tip_exchange,
+                             &expiration,
+                             &tip_id);
   /* If we have insufficient funds according to OUR database,
      check with exchange to see if the reserve has been topped up
      in the meantime (or if tips were not withdrawn yet). */
diff --git a/src/backend/taler-merchant-httpd_tip-pickup.c 
b/src/backend/taler-merchant-httpd_tip-pickup.c
index 7b3403d..3c810cb 100644
--- a/src/backend/taler-merchant-httpd_tip-pickup.c
+++ b/src/backend/taler-merchant-httpd_tip-pickup.c
@@ -181,7 +181,7 @@ pickup_cleanup (struct TM_HandlerContext *hc)
  */
 static int
 run_pickup (struct MHD_Connection *connection,
-           struct PickupContext *pc)
+            struct PickupContext *pc)
 {
   struct TALER_ReservePrivateKeyP reserve_priv;
   struct TALER_ReservePublicKeyP reserve_pub;
@@ -195,11 +195,11 @@ run_pickup (struct MHD_Connection *connection,
                                  pc->ec,
                                  pc->error_hint);
   }
-  ec = db->pickup_tip (db->cls,
-                      &pc->total,
-                      &pc->tip_id,
-                      &pc->pickup_id,
-                      &reserve_priv);
+  ec = db->pickup_tip_TR (db->cls,
+                          &pc->total,
+                          &pc->tip_id,
+                          &pc->pickup_id,
+                          &reserve_priv);
   if (TALER_EC_NONE != ec)
   {
     unsigned int response_code;
diff --git a/src/backend/taler-merchant-httpd_tip-query.c 
b/src/backend/taler-merchant-httpd_tip-query.c
index e4ade93..9664eaa 100644
--- a/src/backend/taler-merchant-httpd_tip-query.c
+++ b/src/backend/taler-merchant-httpd_tip-query.c
@@ -199,7 +199,7 @@ handle_status (void *cls,
   {
     GNUNET_break_op (0);
     resume_with_response (tqc,
-                         MHD_HTTP_SERVICE_UNAVAILABLE,
+                          MHD_HTTP_SERVICE_UNAVAILABLE,
                           TMH_RESPONSE_make_error 
(TALER_EC_TIP_QUERY_RESERVE_STATUS_FAILED_EXCHANGE_DOWN,
                                                    "Unable to obtain reserve 
status from exchange"));
     return;
@@ -209,7 +209,7 @@ handle_status (void *cls,
   {
     GNUNET_break_op (0);
     resume_with_response (tqc,
-                         MHD_HTTP_SERVICE_UNAVAILABLE,
+                          MHD_HTTP_SERVICE_UNAVAILABLE,
                           TMH_RESPONSE_make_error 
(TALER_EC_TIP_QUERY_RESERVE_HISTORY_FAILED_EMPTY,
                                                    "Exchange returned empty 
reserve history"));
     return;
@@ -219,7 +219,7 @@ handle_status (void *cls,
   {
     GNUNET_break_op (0);
     resume_with_response (tqc,
-                         MHD_HTTP_SERVICE_UNAVAILABLE,
+                          MHD_HTTP_SERVICE_UNAVAILABLE,
                           TMH_RESPONSE_make_error 
(TALER_EC_TIP_QUERY_RESERVE_HISTORY_INVALID_NO_DEPOSIT,
                                                    "Exchange returned invalid 
reserve history"));
     return;
@@ -231,18 +231,18 @@ handle_status (void *cls,
   {
     GNUNET_break_op (0);
     resume_with_response (tqc,
-                         MHD_HTTP_SERVICE_UNAVAILABLE,
+                          MHD_HTTP_SERVICE_UNAVAILABLE,
                           TMH_RESPONSE_make_error 
(TALER_EC_TIP_QUERY_RESERVE_HISTORY_INVALID_CURRENCY,
                                                    "Exchange returned invalid 
reserve history"));
     return;
   }
 
   if (0 != strcasecmp (TMH_currency,
-                      history[0].amount.currency))
+                       history[0].amount.currency))
   {
     GNUNET_break_op (0);
     resume_with_response (tqc,
-                         MHD_HTTP_SERVICE_UNAVAILABLE,
+                          MHD_HTTP_SERVICE_UNAVAILABLE,
                           TMH_RESPONSE_make_error 
(TALER_EC_TIP_QUERY_RESERVE_CURRENCY_MISSMATCH,
                                                    "Exchange currency 
unexpected"));
     return;
@@ -271,11 +271,11 @@ handle_status (void *cls,
         GNUNET_CRYPTO_hash (history[i].details.in_details.wire_reference,
                             history[i].details.in_details.wire_reference_size,
                             &uuid);
-        qs = db->enable_tip_reserve (db->cls,
-                                     &tqc->reserve_priv,
-                                     &uuid,
-                                     &history[i].amount,
-                                     deposit_expiration);
+        qs = db->enable_tip_reserve_TR (db->cls,
+                                        &tqc->reserve_priv,
+                                        &uuid,
+                                        &history[i].amount,
+                                        deposit_expiration);
         if (GNUNET_OK !=
             TALER_amount_add (&tqc->amount_deposited,
                               &tqc->amount_deposited,
@@ -425,10 +425,10 @@ exchange_cont (void *cls,
  */
 int
 MH_handler_tip_query (struct TMH_RequestHandler *rh,
-                          struct MHD_Connection *connection,
-                          void **connection_cls,
-                          const char *upload_data,
-                          size_t *upload_data_size)
+                      struct MHD_Connection *connection,
+                      void **connection_cls,
+                      const char *upload_data,
+                      size_t *upload_data_size)
 {
   struct TipQueryContext *tqc;
   int res;
@@ -471,7 +471,7 @@ MH_handler_tip_query (struct TMH_RequestHandler *rh,
                                                "instance");
   if (NULL == tqc->instance)
     return TMH_RESPONSE_reply_arg_missing (connection,
-                                          TALER_EC_PARAMETER_MISSING,
+                                           TALER_EC_PARAMETER_MISSING,
                                            "instance");
 
   mi = TMH_lookup_instance (tqc->instance);
@@ -495,11 +495,11 @@ MH_handler_tip_query (struct TMH_RequestHandler *rh,
   }
   tqc->reserve_priv = mi->tip_reserve;
 
-  db->preflight (db->cls);
   {
     int qs;
     for (unsigned int i=0;i<MAX_RETRIES;i++)
     {
+      db->preflight (db->cls);
       qs = db->get_authorized_tip_amount (db->cls,
                                           &tqc->reserve_priv,
                                           &tqc->amount_authorized);
@@ -517,12 +517,11 @@ MH_handler_tip_query (struct TMH_RequestHandler *rh,
     if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
     {
       /* we'll set amount_authorized to zero later once
-        we know the currency */
+         we know the currency */
       tqc->none_authorized = GNUNET_YES;
     }
   }
 
-
   MHD_suspend_connection (connection);
   tqc->suspended = GNUNET_YES;
 
diff --git a/src/backenddb/plugin_merchantdb_postgres.c 
b/src/backenddb/plugin_merchantdb_postgres.c
index beeeb4e..3aa471f 100644
--- a/src/backenddb/plugin_merchantdb_postgres.c
+++ b/src/backenddb/plugin_merchantdb_postgres.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  (C) 2014-2018 INRIA
+  (C) 2014--2019 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU Lesser General Public License as published by the Free 
Software
@@ -421,20 +421,19 @@ postgres_initialize (void *cls)
                             3),
     GNUNET_PQ_make_prepare ("find_refunds_from_contract_terms_hash",
                             "SELECT"
-                           " coin_pub"
-                           ",rtransaction_id"
-                           ",refund_amount_val"
-                           ",refund_amount_frac"
-                           ",refund_amount_curr"
-                           ",refund_fee_val"
-                           ",refund_fee_frac"
-                           ",refund_fee_curr"
-                           ",reason"
-                           " FROM merchant_refunds"
+                            " coin_pub"
+                            ",rtransaction_id"
+                            ",refund_amount_val"
+                            ",refund_amount_frac"
+                            ",refund_amount_curr"
+                            ",refund_fee_val"
+                            ",refund_fee_frac"
+                            ",refund_fee_curr"
+                            ",reason"
+                            " FROM merchant_refunds"
                             " WHERE merchant_pub=$1"
                             " AND h_contract_terms=$2",
                             2),
-
     GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range_asc",
                             "SELECT"
                             " contract_terms"
@@ -449,7 +448,6 @@ postgres_initialize (void *cls)
                             " ORDER BY row_id ASC, timestamp ASC"
                             " LIMIT $4",
                             4),
-
     GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range",
                             "SELECT"
                             " contract_terms"
@@ -464,7 +462,6 @@ postgres_initialize (void *cls)
                             " ORDER BY row_id DESC, timestamp DESC"
                             " LIMIT $4",
                             4),
-
     GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range_past_asc",
                             "SELECT"
                             " contract_terms"
@@ -496,7 +493,7 @@ postgres_initialize (void *cls)
     GNUNET_PQ_make_prepare ("find_deposits",
                             "SELECT"
                             " coin_pub"
-                           ",exchange_url"
+                            ",exchange_url"
                             ",amount_with_fee_val"
                             ",amount_with_fee_frac"
                             ",amount_with_fee_curr"
@@ -528,7 +525,7 @@ postgres_initialize (void *cls)
                             ",wire_fee_val"
                             ",wire_fee_frac"
                             ",wire_fee_curr"
-                           ",exchange_url"
+                            ",exchange_url"
                             ",exchange_proof"
                             " FROM merchant_deposits"
                             " WHERE h_contract_terms=$1"
@@ -618,7 +615,7 @@ postgres_initialize (void *cls)
                             "INSERT INTO merchant_tips"
                             "(reserve_priv"
                             ",tip_id"
-                           ",exchange_url"
+                            ",exchange_url"
                             ",justification"
                             ",timestamp"
                             ",amount_val"
@@ -701,7 +698,6 @@ postgres_initialize (void *cls)
     GNUNET_break (0);
     return GNUNET_SYSERR;
   }
-
   if (GNUNET_OK !=
       GNUNET_PQ_prepare_statements (pg->conn,
                                     ps))
@@ -733,6 +729,42 @@ check_connection (struct PostgresClosure *pg)
 
 
 /**
+ * Do a pre-flight check that we are not in an uncommitted transaction.
+ * If we are, try to commit the previous transaction and output a warning.
+ * Does not return anything, as we will continue regardless of the outcome.
+ *
+ * @param cls the `struct PostgresClosure` with the plugin-specific state
+ */
+static void
+postgres_preflight (void *cls)
+{
+  struct PostgresClosure *pg = cls;
+  PGresult *result;
+  ExecStatusType status;
+
+  if (NULL == pg->transaction_name)
+    return; /* all good */
+  result = PQexec (pg->conn,
+                   "COMMIT");
+  status = PQresultStatus (result);
+  if (PGRES_COMMAND_OK == status)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "BUG: Preflight check committed transaction `%s'!\n",
+                pg->transaction_name);
+  }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "BUG: Preflight check failed to commit transaction `%s'!\n",
+                pg->transaction_name);
+  }
+  pg->transaction_name = NULL;
+  PQclear (result);
+}
+
+
+/**
  * Start a transaction.
  *
  * @param cls the `struct PostgresClosure` with the plugin-specific state
@@ -749,6 +781,7 @@ postgres_start (void *cls,
   ExecStatusType ex;
 
   check_connection (pg);
+  postgres_preflight (pg);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Starting merchant DB transaction\n");
   result = PQexec (pg->conn,
@@ -793,42 +826,6 @@ postgres_rollback (void *cls)
 
 
 /**
- * Do a pre-flight check that we are not in an uncommitted transaction.
- * If we are, try to commit the previous transaction and output a warning.
- * Does not return anything, as we will continue regardless of the outcome.
- *
- * @param cls the `struct PostgresClosure` with the plugin-specific state
- */
-static void
-postgres_preflight (void *cls)
-{
-  struct PostgresClosure *pg = cls;
-  PGresult *result;
-  ExecStatusType status;
-
-  if (NULL == pg->transaction_name)
-    return; /* all good */
-  result = PQexec (pg->conn,
-                   "COMMIT");
-  status = PQresultStatus (result);
-  if (PGRES_COMMAND_OK == status)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check committed transaction `%s'!\n",
-                pg->transaction_name);
-  }
-  else
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check failed to commit transaction `%s'!\n",
-                pg->transaction_name);
-  }
-  pg->transaction_name = NULL;
-  PQclear (result);
-}
-
-
-/**
  * Commit the current transaction of a database connection.
  *
  * @param cls the `struct PostgresClosure` with the plugin-specific state
@@ -846,8 +843,8 @@ postgres_commit (void *cls)
               "Committing merchant DB transaction\n");
   pg->transaction_name = NULL;
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
-                                            "end_transaction",
-                                            params);
+                                             "end_transaction",
+                                             params);
 }
 
 
@@ -913,6 +910,8 @@ postgres_find_paid_contract_terms_from_hash (void *cls,
     GNUNET_PQ_result_spec_end
   };
 
+  /* no preflight check here, runs in its own transaction from
+     caller (in /pay case) */
   check_connection (pg);
   return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
                                                   
"find_paid_contract_terms_from_hash",
@@ -1727,7 +1726,7 @@ find_payments_cb (void *cls,
 static enum GNUNET_DB_QueryStatus
 postgres_find_payments (void *cls,
                         const struct GNUNET_HashCode *h_contract_terms,
-                       const struct TALER_MerchantPublicKeyP *merchant_pub,
+                        const struct TALER_MerchantPublicKeyP *merchant_pub,
                         TALER_MERCHANTDB_CoinDepositCallback cb,
                         void *cb_cls)
 {
@@ -1744,6 +1743,8 @@ postgres_find_payments (void *cls,
   };
   enum GNUNET_DB_QueryStatus qs;
 
+  /* no preflight check here, run in its own transaction by the
+     caller! */
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Finding payment for h_contract_terms '%s'\n",
               GNUNET_h2s (h_contract_terms));
@@ -2263,6 +2264,7 @@ postgres_get_refunds_from_contract_terms_hash (void *cls,
   };
   enum GNUNET_DB_QueryStatus qs;
 
+  /* no preflight check here, run in transaction by caller! */
   TALER_LOG_DEBUG ("Looking for refund %s + %s\n",
                    GNUNET_h2s (h_contract_terms),
                    TALER_B2S (merchant_pub));
@@ -2358,6 +2360,7 @@ postgres_store_wire_fee_by_exchange (void *cls,
     GNUNET_PQ_query_param_end
   };
 
+  /* no preflight check here, run in its own transaction by the caller */
   check_connection (pg);
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
              "Storing wire fee for %s starting at %s of %s\n",
@@ -2540,8 +2543,8 @@ struct InsertRefundContext
  */
 static void
 process_deposits_for_refund_cb (void *cls,
-                               PGresult *result,
-                               unsigned int num_results)
+                                PGresult *result,
+                                unsigned int num_results)
 {
   struct InsertRefundContext *ctx = cls;
   struct TALER_Amount current_refund;
@@ -2556,7 +2559,6 @@ process_deposits_for_refund_cb (void *cls,
 
   /* Pass 1:  Collect amount of existing refunds into current_refund.
    * Also store existing refunded amount for each deposit in deposit_refund. */
-
   for (unsigned int i=0; i<num_results; i++)
   {
     struct TALER_CoinSpendPublicKeyP coin_pub;
@@ -2616,8 +2618,8 @@ process_deposits_for_refund_cb (void *cls,
     deposit_refund_fee[i] = refund_fee;
     if (GNUNET_SYSERR ==
        TALER_amount_add (&current_refund,
-                         &current_refund,
-                         &ictx.refunded_amount))
+                      &current_refund,
+                      &ictx.refunded_amount))
     {
       GNUNET_break (0);
       ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
@@ -2642,7 +2644,6 @@ process_deposits_for_refund_cb (void *cls,
   }
 
   /* Phase 2:  Try to increase current refund until it matches desired refund 
*/
-
   for (unsigned int i=0;i<num_results; i++)
   {
     const struct TALER_Amount *increment;
@@ -2651,9 +2652,9 @@ process_deposits_for_refund_cb (void *cls,
 
     /* How much of the coin is left after the existing refunds? */
     if (GNUNET_SYSERR ==
-       TALER_amount_subtract (&left,
-                              &deposit_amount_with_fee[i],
-                              &deposit_refund[i]))
+        TALER_amount_subtract (&left,
+                               &deposit_amount_with_fee[i],
+                               &deposit_refund[i]))
     {
       GNUNET_break (0);
       ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
@@ -2661,20 +2662,20 @@ process_deposits_for_refund_cb (void *cls,
     }
 
     if ( (0 == left.value) &&
-        (0 == left.fraction) )
+         (0 == left.fraction) )
     {
       /* coin was fully refunded, move to next coin */
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                 "Coin %s fully refunded, moving to next coin\n",
-                 TALER_B2S (&deposit_coin_pubs[i]));
+                  "Coin %s fully refunded, moving to next coin\n",
+                  TALER_B2S (&deposit_coin_pubs[i]));
       continue;
     }
 
     /* How much of the refund is left? */
     if (GNUNET_SYSERR ==
-       TALER_amount_subtract (&remaining_refund,
-                              ctx->refund,
-                              &current_refund))
+        TALER_amount_subtract (&remaining_refund,
+                               ctx->refund,
+                               &current_refund))
     {
       GNUNET_break (0);
       ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
@@ -2683,7 +2684,7 @@ process_deposits_for_refund_cb (void *cls,
 
     /* By how much will we increase the refund for this coin? */
     if (0 >= TALER_amount_cmp (&remaining_refund,
-                              &left))
+                               &left))
     {
       /* remaining_refund <= left */
       increment = &remaining_refund;
@@ -2694,9 +2695,9 @@ process_deposits_for_refund_cb (void *cls,
     }
 
     if (GNUNET_SYSERR ==
-       TALER_amount_add (&current_refund,
-                         &current_refund,
-                         increment))
+        TALER_amount_add (&current_refund,
+                          &current_refund,
+                          increment))
     {
       GNUNET_break (0);
       ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
@@ -2705,28 +2706,28 @@ process_deposits_for_refund_cb (void *cls,
 
     /* actually run the refund */
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Coin %s deposit amount is %s\n",
-               TALER_B2S (&deposit_coin_pubs[i]),
-               TALER_amount2s (&deposit_amount_with_fee[i]));
+                "Coin %s deposit amount is %s\n",
+                TALER_B2S (&deposit_coin_pubs[i]),
+                TALER_amount2s (&deposit_amount_with_fee[i]));
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Coin %s refund will be incremented by %s\n",
-               TALER_B2S (&deposit_coin_pubs[i]),
-               TALER_amount2s (increment));
+                "Coin %s refund will be incremented by %s\n",
+                TALER_B2S (&deposit_coin_pubs[i]),
+                TALER_amount2s (increment));
     {
       enum GNUNET_DB_QueryStatus qs;
 
       if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
-         (qs = insert_refund (ctx->pg,
-                              ctx->merchant_pub,
-                              ctx->h_contract_terms,
-                              &deposit_coin_pubs[i],
-                              ctx->reason,
-                              increment,
-                              &deposit_refund_fee[i])))
+          (qs = insert_refund (ctx->pg,
+                               ctx->merchant_pub,
+                               ctx->h_contract_terms,
+                               &deposit_coin_pubs[i],
+                               ctx->reason,
+                               increment,
+                               &deposit_refund_fee[i])))
       {
-       GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
-       ctx->qs = qs;
-       return;
+        GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
+        ctx->qs = qs;
+        return;
       }
     }
     /* stop immediately if we are done */
@@ -2742,8 +2743,8 @@ process_deposits_for_refund_cb (void *cls,
    * rely upon the frontend being correct.
    */
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-             "The refund of %s is bigger than the order's value\n",
-             TALER_amount2s (ctx->refund));
+              "The refund of %s is bigger than the order's value\n",
+              TALER_amount2s (ctx->refund));
   ctx->qs = GNUNET_DB_STATUS_HARD_ERROR;
 }
 
@@ -2784,13 +2785,6 @@ postgres_increase_refund_for_contract (void *cls,
               "Asked to refund %s on contract %s\n",
               TALER_amount2s (refund),
               GNUNET_h2s (h_contract_terms));
-  if (GNUNET_OK !=
-      postgres_start (cls,
-                      "increase refund"))
-  {
-    GNUNET_break (0);
-    return GNUNET_DB_STATUS_HARD_ERROR;
-  }
   ctx.pg = pg;
   ctx.qs = GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
   ctx.refund = refund;
@@ -2798,10 +2792,10 @@ postgres_increase_refund_for_contract (void *cls,
   ctx.h_contract_terms = h_contract_terms;
   ctx.merchant_pub = merchant_pub;
   qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
-                                            "find_deposits",
-                                            params,
-                                            &process_deposits_for_refund_cb,
-                                            &ctx);
+                                             "find_deposits",
+                                             params,
+                                             &process_deposits_for_refund_cb,
+                                             &ctx);
   switch (qs)
   {
   case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
@@ -2809,28 +2803,12 @@ postgres_increase_refund_for_contract (void *cls,
                 "Unknown contract: %s (merchant_pub: %s), no refund 
possible\n",
                 GNUNET_h2s (h_contract_terms),
                 TALER_B2S (merchant_pub));
-    postgres_rollback (cls);
     return qs;
   case GNUNET_DB_STATUS_SOFT_ERROR:
   case GNUNET_DB_STATUS_HARD_ERROR:
-    postgres_rollback (cls);
     return qs;
   default:
     /* Got one or more deposits */
-    if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != ctx.qs)
-    {
-      postgres_rollback (cls);
-      return ctx.qs;
-    }
-    qs = postgres_commit (cls);
-    if (0 > qs)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                  "Failed to commit transaction increasing refund\n");
-      return qs;
-    }
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Committed refund transaction\n");
     return ctx.qs;
   }
 }
@@ -2899,11 +2877,11 @@ postgres_find_proof_by_wtid (void *cls,
  *      #GNUNET_DB_STATUS_SUCCESS_NO_RESULTS if @a credit_uuid already known
  */
 static enum GNUNET_DB_QueryStatus
-postgres_enable_tip_reserve (void *cls,
-                             const struct TALER_ReservePrivateKeyP 
*reserve_priv,
-                             const struct GNUNET_HashCode *credit_uuid,
-                             const struct TALER_Amount *credit,
-                             struct GNUNET_TIME_Absolute expiration)
+postgres_enable_tip_reserve_TR (void *cls,
+                                const struct TALER_ReservePrivateKeyP 
*reserve_priv,
+                                const struct GNUNET_HashCode *credit_uuid,
+                                const struct TALER_Amount *credit,
+                                struct GNUNET_TIME_Absolute expiration)
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_TIME_Absolute old_expiration;
@@ -3092,13 +3070,13 @@ postgres_enable_tip_reserve (void *cls,
  *      #TALER_EC_NONE upon success
  */
 static enum TALER_ErrorCode
-postgres_authorize_tip (void *cls,
-                        const char *justification,
-                        const struct TALER_Amount *amount,
-                        const struct TALER_ReservePrivateKeyP *reserve_priv,
-                       const char *exchange_url,
-                        struct GNUNET_TIME_Absolute *expiration,
-                        struct GNUNET_HashCode *tip_id)
+postgres_authorize_tip_TR (void *cls,
+                           const char *justification,
+                           const struct TALER_Amount *amount,
+                           const struct TALER_ReservePrivateKeyP *reserve_priv,
+                           const char *exchange_url,
+                           struct GNUNET_TIME_Absolute *expiration,
+                           struct GNUNET_HashCode *tip_id)
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
@@ -3295,11 +3273,11 @@ postgres_lookup_tip_by_id (void *cls,
  *      #TALER_EC_NONE upon success (@a reserve_priv was set)
  */
 static enum TALER_ErrorCode
-postgres_pickup_tip (void *cls,
-                     const struct TALER_Amount *amount,
-                     const struct GNUNET_HashCode *tip_id,
-                     const struct GNUNET_HashCode *pickup_id,
-                     struct TALER_ReservePrivateKeyP *reserve_priv)
+postgres_pickup_tip_TR (void *cls,
+                        const struct TALER_Amount *amount,
+                        const struct GNUNET_HashCode *tip_id,
+                        const struct GNUNET_HashCode *pickup_id,
+                        struct TALER_ReservePrivateKeyP *reserve_priv)
 {
   struct PostgresClosure *pg = cls;
   struct TALER_Amount left_amount;
@@ -3536,10 +3514,10 @@ libtaler_plugin_merchantdb_postgres_init (void *cls)
   plugin->lookup_wire_fee = &postgres_lookup_wire_fee;
   plugin->increase_refund_for_contract = 
&postgres_increase_refund_for_contract;
   plugin->mark_proposal_paid = &postgres_mark_proposal_paid;
-  plugin->enable_tip_reserve = &postgres_enable_tip_reserve;
-  plugin->authorize_tip = &postgres_authorize_tip;
+  plugin->enable_tip_reserve_TR = &postgres_enable_tip_reserve_TR;
+  plugin->authorize_tip_TR = &postgres_authorize_tip_TR;
   plugin->lookup_tip_by_id = &postgres_lookup_tip_by_id;
-  plugin->pickup_tip = &postgres_pickup_tip;
+  plugin->pickup_tip_TR = &postgres_pickup_tip_TR;
   plugin->start = postgres_start;
   plugin->commit = postgres_commit;
   plugin->preflight = postgres_preflight;
diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c
index aa3db96..fbea98c 100644
--- a/src/backenddb/test_merchantdb.c
+++ b/src/backenddb/test_merchantdb.c
@@ -507,13 +507,13 @@ test_tipping ()
 
   RND_BLK (&tip_reserve_priv);
   if (TALER_EC_TIP_AUTHORIZE_INSUFFICIENT_FUNDS !=
-      plugin->authorize_tip (plugin->cls,
-                             "testing tips reserve unknown",
-                             &amount,
-                             &tip_reserve_priv,
-                            "http://localhost:8081/";,
-                             &tip_expiration,
-                             &tip_id))
+      plugin->authorize_tip_TR (plugin->cls,
+                                "testing tips reserve unknown",
+                                &amount,
+                                &tip_reserve_priv,
+                                "http://localhost:8081/";,
+                                &tip_expiration,
+                                &tip_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -527,22 +527,22 @@ test_tipping ()
   reserve_expiration = GNUNET_TIME_relative_to_absolute 
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
                                                                                
         2));
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
-      plugin->enable_tip_reserve (plugin->cls,
-                                  &tip_reserve_priv,
-                                  &tip_credit_uuid,
-                                  &total,
-                                  reserve_expiration))
+      plugin->enable_tip_reserve_TR (plugin->cls,
+                                     &tip_reserve_priv,
+                                     &tip_credit_uuid,
+                                     &total,
+                                     reserve_expiration))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
   }
   /* check idempotency */
   if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS !=
-      plugin->enable_tip_reserve (plugin->cls,
-                                  &tip_reserve_priv,
-                                  &tip_credit_uuid,
-                                  &total,
-                                  reserve_expiration))
+      plugin->enable_tip_reserve_TR (plugin->cls,
+                                     &tip_reserve_priv,
+                                     &tip_credit_uuid,
+                                     &total,
+                                     reserve_expiration))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -550,13 +550,13 @@ test_tipping ()
   /* Make sure it has expired, so at this point the value is back at ZERO! */
   sleep (3);
   if (TALER_EC_TIP_AUTHORIZE_RESERVE_EXPIRED !=
-      plugin->authorize_tip (plugin->cls,
-                             "testing tips too late",
-                             &amount,
-                             &tip_reserve_priv,
-                            "http://localhost:8081/";,
-                             &tip_expiration,
-                             &tip_id))
+      plugin->authorize_tip_TR (plugin->cls,
+                                "testing tips too late",
+                                &amount,
+                                &tip_reserve_priv,
+                                "http://localhost:8081/";,
+                                &tip_expiration,
+                                &tip_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -567,11 +567,11 @@ test_tipping ()
   reserve_expiration = GNUNET_TIME_relative_to_absolute 
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
                                                                                
         2));
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
-      plugin->enable_tip_reserve (plugin->cls,
-                                  &tip_reserve_priv,
-                                  &tip_credit_uuid,
-                                  &total,
-                                  reserve_expiration))
+      plugin->enable_tip_reserve_TR (plugin->cls,
+                                     &tip_reserve_priv,
+                                     &tip_credit_uuid,
+                                     &total,
+                                     reserve_expiration))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -581,11 +581,11 @@ test_tipping ()
   RND_BLK (&tip_credit_uuid);
   reserve_expiration = GNUNET_TIME_relative_to_absolute 
(GNUNET_TIME_UNIT_DAYS);
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
-      plugin->enable_tip_reserve (plugin->cls,
-                                  &tip_reserve_priv,
-                                  &tip_credit_uuid,
-                                  &total,
-                                  reserve_expiration))
+      plugin->enable_tip_reserve_TR (plugin->cls,
+                                     &tip_reserve_priv,
+                                     &tip_credit_uuid,
+                                     &total,
+                                     reserve_expiration))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -596,13 +596,13 @@ test_tipping ()
                  TALER_string_to_amount (CURRENCY ":4",
                                          &amount));
   if (TALER_EC_NONE !=
-      plugin->authorize_tip (plugin->cls,
-                             "testing tips",
-                             &amount,
-                             &tip_reserve_priv,
-                            "http://localhost:8081/";,
-                             &tip_expiration,
-                             &tip_id))
+      plugin->authorize_tip_TR (plugin->cls,
+                                "testing tips",
+                                &amount,
+                                &tip_reserve_priv,
+                                "http://localhost:8081/";,
+                                &tip_expiration,
+                                &tip_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -630,13 +630,13 @@ test_tipping ()
   }
   GNUNET_free (url);
   if (TALER_EC_NONE !=
-      plugin->authorize_tip (plugin->cls,
-                             "testing tips more",
-                             &amount,
-                             &tip_reserve_priv,
-                            "http://localhost:8081/";,
-                             &tip_expiration,
-                             &tip_id))
+      plugin->authorize_tip_TR (plugin->cls,
+                                "testing tips more",
+                                &amount,
+                                &tip_reserve_priv,
+                                "http://localhost:8081/";,
+                                &tip_expiration,
+                                &tip_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -653,11 +653,11 @@ test_tipping ()
                                          &inc));
   RND_BLK (&pickup_id);
   if (TALER_EC_NONE !=
-      plugin->pickup_tip (plugin->cls,
-                          &inc,
-                          &tip_id,
-                          &pickup_id,
-                          &pres))
+      plugin->pickup_tip_TR (plugin->cls,
+                             &inc,
+                             &tip_id,
+                             &pickup_id,
+                             &pres))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -671,11 +671,11 @@ test_tipping ()
   }
   RND_BLK (&pickup_id);
   if (TALER_EC_NONE !=
-      plugin->pickup_tip (plugin->cls,
-                          &inc,
-                          &tip_id,
-                          &pickup_id,
-                          &pres))
+      plugin->pickup_tip_TR (plugin->cls,
+                             &inc,
+                             &tip_id,
+                             &pickup_id,
+                             &pres))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -691,11 +691,11 @@ test_tipping ()
   /* Third attempt should fail, as we've picked up 4/4 in amount */
   RND_BLK (&pickup_id);
   if (TALER_EC_TIP_PICKUP_NO_FUNDS !=
-      plugin->pickup_tip (plugin->cls,
-                          &inc,
-                          &tip_id,
-                          &pickup_id,
-                          &pres))
+      plugin->pickup_tip_TR (plugin->cls,
+                             &inc,
+                             &tip_id,
+                             &pickup_id,
+                             &pres))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -703,13 +703,13 @@ test_tipping ()
 
   /* We authorized 8 out of 10, so going for another 4 should fail with 
insufficient funds */
   if (TALER_EC_TIP_AUTHORIZE_INSUFFICIENT_FUNDS !=
-      plugin->authorize_tip (plugin->cls,
-                             "testing tips insufficient funds",
-                             &amount,
-                             &tip_reserve_priv,
-                            "http://localhost:8081/";,
-                             &tip_expiration,
-                             &tip_id))
+      plugin->authorize_tip_TR (plugin->cls,
+                                "testing tips insufficient funds",
+                                &amount,
+                                &tip_reserve_priv,
+                                "http://localhost:8081/";,
+                                &tip_expiration,
+                                &tip_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -719,11 +719,11 @@ test_tipping ()
   RND_BLK (&tip_id);
   RND_BLK (&pickup_id);
   if (TALER_EC_TIP_PICKUP_TIP_ID_UNKNOWN !=
-      plugin->pickup_tip (plugin->cls,
-                          &inc,
-                          &tip_id,
-                          &pickup_id,
-                          &pres))
+      plugin->pickup_tip_TR (plugin->cls,
+                             &inc,
+                             &tip_id,
+                             &pickup_id,
+                             &pres))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
diff --git a/src/include/taler_merchantdb_plugin.h 
b/src/include/taler_merchantdb_plugin.h
index f8a9501..228523b 100644
--- a/src/include/taler_merchantdb_plugin.h
+++ b/src/include/taler_merchantdb_plugin.h
@@ -650,11 +650,11 @@ struct TALER_MERCHANTDB_Plugin
    *      #GNUNET_DB_STATUS_SUCCESS_NO_RESULTS if @a credit_uuid already known
    */
   enum GNUNET_DB_QueryStatus
-  (*enable_tip_reserve)(void *cls,
-                        const struct TALER_ReservePrivateKeyP *reserve_priv,
-                        const struct GNUNET_HashCode *credit_uuid,
-                        const struct TALER_Amount *credit,
-                        struct GNUNET_TIME_Absolute expiration);
+  (*enable_tip_reserve_TR)(void *cls,
+                           const struct TALER_ReservePrivateKeyP *reserve_priv,
+                           const struct GNUNET_HashCode *credit_uuid,
+                           const struct TALER_Amount *credit,
+                           struct GNUNET_TIME_Absolute expiration);
 
 
   /**
@@ -678,13 +678,13 @@ struct TALER_MERCHANTDB_Plugin
    *      #TALER_EC_NONE upon success
    */
   enum TALER_ErrorCode
-  (*authorize_tip)(void *cls,
-                   const char *justification,
-                   const struct TALER_Amount *amount,
-                   const struct TALER_ReservePrivateKeyP *reserve_priv,
-                  const char *exchange_url,
-                   struct GNUNET_TIME_Absolute *expiration,
-                   struct GNUNET_HashCode *tip_id);
+  (*authorize_tip_TR)(void *cls,
+                      const char *justification,
+                      const struct TALER_Amount *amount,
+                      const struct TALER_ReservePrivateKeyP *reserve_priv,
+                      const char *exchange_url,
+                      struct GNUNET_TIME_Absolute *expiration,
+                      struct GNUNET_HashCode *tip_id);
 
   /**
    * Get the total amount of authorized tips for a tipping reserve.
@@ -739,11 +739,11 @@ struct TALER_MERCHANTDB_Plugin
    *      #TALER_EC_NONE upon success (@a reserve_priv was set)
    */
   enum TALER_ErrorCode
-  (*pickup_tip)(void *cls,
-                const struct TALER_Amount *amount,
-                const struct GNUNET_HashCode *tip_id,
-                const struct GNUNET_HashCode *pickup_id,
-                struct TALER_ReservePrivateKeyP *reserve_priv);
+  (*pickup_tip_TR)(void *cls,
+                   const struct TALER_Amount *amount,
+                   const struct GNUNET_HashCode *tip_id,
+                   const struct GNUNET_HashCode *pickup_id,
+                   struct TALER_ReservePrivateKeyP *reserve_priv);
 
 
   /**
diff --git a/src/lib/test_merchant_api.c b/src/lib/test_merchant_api.c
index 1f74b30..946760f 100644
--- a/src/lib/test_merchant_api.c
+++ b/src/lib/test_merchant_api.c
@@ -1698,6 +1698,7 @@ refund_increase_cb (void *cls,
   struct InterpreterState *is = cls;
   struct Command *cmd = &is->commands[is->ip];
 
+  cmd->details.refund_increase.rio = NULL;
   if (MHD_HTTP_OK != http_status)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1705,7 +1706,6 @@ refund_increase_cb (void *cls,
     fail (is);
     return;
   }
-  cmd->details.refund_increase.rio = NULL;
   next_command (is);
 }
 
@@ -3925,7 +3925,7 @@ interpreter_run (void *cls)
                     &refund_amount,
                     cmd->details.refund_increase.reason,
                     instance,
-                    refund_increase_cb,
+                    &refund_increase_cb,
                     is)))
         {
           GNUNET_break (0);
diff --git a/src/lib/test_merchant_api_new.c b/src/lib/test_merchant_api_new.c
index ca7859e..94aafac 100644
--- a/src/lib/test_merchant_api_new.c
+++ b/src/lib/test_merchant_api_new.c
@@ -441,7 +441,6 @@ run (void *cls,
   };
 
   struct TALER_TESTING_Command refund[] = {
-
     TALER_TESTING_cmd_refund_increase
       ("refund-increase-1",
        merchant_url,
@@ -458,7 +457,6 @@ run (void *cls,
                                      "deposit-simple",
                                      "1",
                                      MHD_HTTP_OK),
-
     /* Trying to pick up refund from non existent proposal.  */
     TALER_TESTING_cmd_refund_lookup ("refund-lookup-non-existent",
                                      merchant_url,

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



reply via email to

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