gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: also do not respond with 410 to


From: gnunet
Subject: [taler-exchange] branch master updated: also do not respond with 410 to the GET /purses//merge request
Date: Mon, 08 Jan 2024 14:29:25 +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 b26bab5e also do not respond with 410 to the GET /purses//merge request
b26bab5e is described below

commit b26bab5ed8069ac79dda032a5167363ebb4727e7
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Jan 8 14:29:21 2024 +0100

    also do not respond with 410 to the GET /purses//merge request
---
 src/auditor/taler-helper-auditor-purses.c          |  8 +++++++-
 src/exchange/taler-exchange-httpd_purses_deposit.c |  6 ++++--
 src/exchange/taler-exchange-httpd_purses_get.c     | 10 ++++++++--
 src/exchangedb/pg_select_purse.c                   | 10 +++++++++-
 src/exchangedb/pg_select_purse.h                   |  5 +++--
 src/exchangedb/pg_select_purse_merge.c             | 23 +++++++++++-----------
 src/include/taler_exchangedb_plugin.h              |  4 +++-
 7 files changed, 45 insertions(+), 21 deletions(-)

diff --git a/src/auditor/taler-helper-auditor-purses.c 
b/src/auditor/taler-helper-auditor-purses.c
index e728df0e..81291f97 100644
--- a/src/auditor/taler-helper-auditor-purses.c
+++ b/src/auditor/taler-helper-auditor-purses.c
@@ -316,6 +316,11 @@ struct PurseSummary
    */
   bool purse_deleted;
 
+  /**
+   * Was the purse refunded? FIXME: Not yet handled (do we need to?)
+   */
+  bool purse_refunded;
+
 };
 
 
@@ -416,7 +421,8 @@ setup_purse (struct PurseContext *pc,
                                     &ps->exchange_balance,
                                     &ps->h_contract_terms,
                                     &ps->merge_timestamp,
-                                    &ps->purse_deleted);
+                                    &ps->purse_deleted,
+                                    &ps->purse_refunded);
   if (0 >= qs)
   {
     GNUNET_free (ps);
diff --git a/src/exchange/taler-exchange-httpd_purses_deposit.c 
b/src/exchange/taler-exchange-httpd_purses_deposit.c
index 973dfccf..8e4d5e41 100644
--- a/src/exchange/taler-exchange-httpd_purses_deposit.c
+++ b/src/exchange/taler-exchange-httpd_purses_deposit.c
@@ -374,6 +374,7 @@ TEH_handler_purses_deposit (
     struct GNUNET_TIME_Timestamp create_timestamp;
     struct GNUNET_TIME_Timestamp merge_timestamp;
     bool was_deleted;
+    bool was_refunded;
 
     qs = TEH_plugin->select_purse (
       TEH_plugin->cls,
@@ -384,7 +385,8 @@ TEH_handler_purses_deposit (
       &pcc.deposit_total,
       &pcc.h_contract_terms,
       &merge_timestamp,
-      &was_deleted);
+      &was_deleted,
+      &was_refunded);
     switch (qs)
     {
     case GNUNET_DB_STATUS_HARD_ERROR:
@@ -407,7 +409,7 @@ TEH_handler_purses_deposit (
     case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
       break; /* handled below */
     }
-    if (GNUNET_TIME_absolute_is_past (pcc.purse_expiration.abs_time) ||
+    if (was_refunded ||
         was_deleted)
     {
       return TALER_MHD_reply_with_error (
diff --git a/src/exchange/taler-exchange-httpd_purses_get.c 
b/src/exchange/taler-exchange-httpd_purses_get.c
index 0701fc45..cb0c5ca7 100644
--- a/src/exchange/taler-exchange-httpd_purses_get.c
+++ b/src/exchange/taler-exchange-httpd_purses_get.c
@@ -208,6 +208,7 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
 {
   struct GetContext *gc = rc->rh_ctx;
   bool purse_deleted;
+  bool purse_refunded;
   MHD_RESULT res;
 
   if (NULL == gc)
@@ -286,7 +287,8 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
                                    &gc->deposited,
                                    &gc->h_contract,
                                    &gc->merge_timestamp,
-                                   &purse_deleted);
+                                   &purse_deleted,
+                                   &purse_refunded);
     switch (qs)
     {
     case GNUNET_DB_STATUS_HARD_ERROR:
@@ -341,9 +343,11 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
       gc->eh = eh2;
     }
   }
-  if (GNUNET_TIME_absolute_is_past (gc->purse_expiration.abs_time) ||
+  if (purse_refunded ||
       purse_deleted)
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "Purse refunded or deleted\n");
     return TALER_MHD_reply_with_error (rc->connection,
                                        MHD_HTTP_GONE,
                                        purse_deleted
@@ -397,9 +401,11 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
            &gc->deposited,
            &exchange_pub,
            &exchange_sig)))
+    {
       res = TALER_MHD_reply_with_ec (rc->connection,
                                      ec,
                                      NULL);
+    }
     else
     {
       /* Make sure merge_timestamp is omitted if not yet merged */
diff --git a/src/exchangedb/pg_select_purse.c b/src/exchangedb/pg_select_purse.c
index 7c0a638a..ffccb905 100644
--- a/src/exchangedb/pg_select_purse.c
+++ b/src/exchangedb/pg_select_purse.c
@@ -36,7 +36,8 @@ TEH_PG_select_purse (
   struct TALER_Amount *deposited,
   struct TALER_PrivateContractHashP *h_contract_terms,
   struct GNUNET_TIME_Timestamp *merge_timestamp,
-  bool *purse_deleted)
+  bool *purse_deleted,
+  bool *purse_refunded)
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
@@ -60,6 +61,10 @@ TEH_PG_select_purse (
       NULL),
     GNUNET_PQ_result_spec_bool ("purse_deleted",
                                 purse_deleted),
+    GNUNET_PQ_result_spec_allow_null (
+      GNUNET_PQ_result_spec_bool ("purse_refunded",
+                                  purse_refunded),
+      NULL),
     GNUNET_PQ_result_spec_end
   };
 
@@ -74,11 +79,14 @@ TEH_PG_select_purse (
            ",pr.balance"
            ",pm.merge_timestamp"
            ",pd.purse_sig IS NOT NULL AS purse_deleted"
+           ",pc.refunded AS purse_refunded"
            " FROM purse_requests pr"
            " LEFT JOIN purse_merges pm ON (pm.purse_pub = pr.purse_pub)"
+           " LEFT JOIN purse_decision pc ON (pc.purse_pub = pr.purse_pub)"
            " LEFT JOIN purse_deletion pd ON (pd.purse_pub = pr.purse_pub)"
            " WHERE pr.purse_pub=$1;");
   *merge_timestamp = GNUNET_TIME_UNIT_FOREVER_TS;
+  *purse_refunded = false;
   return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
                                                    "select_purse",
                                                    params,
diff --git a/src/exchangedb/pg_select_purse.h b/src/exchangedb/pg_select_purse.h
index db63f0c9..8f88c5cf 100644
--- a/src/exchangedb/pg_select_purse.h
+++ b/src/exchangedb/pg_select_purse.h
@@ -38,6 +38,7 @@
  * @param[out] h_contract_terms set to hash of the contract for the purse
  * @param[out] merge_timestamp set to time when the purse was merged, or NEVER 
if not
  * @param[out] purse_deleted set to true if purse was deleted
+ * @param[out] purse_refunded set to true if purse was refunded
  * @return transaction status code
  */
 enum GNUNET_DB_QueryStatus
@@ -50,7 +51,7 @@ TEH_PG_select_purse (
   struct TALER_Amount *deposited,
   struct TALER_PrivateContractHashP *h_contract_terms,
   struct GNUNET_TIME_Timestamp *merge_timestamp,
-  bool *purse_deleted);
-
+  bool *purse_deleted,
+  bool *purse_refunded);
 
 #endif
diff --git a/src/exchangedb/pg_select_purse_merge.c 
b/src/exchangedb/pg_select_purse_merge.c
index d58e8892..ecc047cc 100644
--- a/src/exchangedb/pg_select_purse_merge.c
+++ b/src/exchangedb/pg_select_purse_merge.c
@@ -41,7 +41,6 @@ TEH_PG_select_purse_merge (
     GNUNET_PQ_query_param_auto_from_type (purse_pub),
     GNUNET_PQ_query_param_end
   };
-  bool is_null;
   struct GNUNET_PQ_ResultSpec rs[] = {
     GNUNET_PQ_result_spec_auto_from_type ("merge_sig",
                                           merge_sig),
@@ -52,7 +51,7 @@ TEH_PG_select_purse_merge (
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_string ("partner_base_url",
                                     partner_url),
-      &is_null),
+      NULL),
     GNUNET_PQ_result_spec_allow_null (
       GNUNET_PQ_result_spec_bool ("refunded",
                                   refunded),
@@ -61,19 +60,19 @@ TEH_PG_select_purse_merge (
   };
 
   *partner_url = NULL;
-  *refunded = true;
+  *refunded = false;
   PREPARE (pg,
            "select_purse_merge",
            "SELECT "
-           " reserve_pub"
-           ",merge_sig"
-           ",merge_timestamp"
-           ",partner_base_url"
-           ",refunded"
-           " FROM purse_merges"
-           " LEFT JOIN purse_decision USING (purse_pub)"
-           " LEFT JOIN partners USING (partner_serial_id)"
-           " WHERE purse_pub=$1;");
+           " pm.reserve_pub"
+           ",pm.merge_sig"
+           ",pm.merge_timestamp"
+           ",pr.partner_base_url"
+           ",pd.refunded"
+           " FROM purse_merges pm"
+           " LEFT JOIN purse_decision pd USING (purse_pub)"
+           " LEFT JOIN partners pr USING (partner_serial_id)"
+           " WHERE pm.purse_pub=$1;");
   return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
                                                    "select_purse_merge",
                                                    params,
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 3fe2efd1..33546e00 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -6335,6 +6335,7 @@ struct TALER_EXCHANGEDB_Plugin
    * @param[out] h_contract_terms set to hash of the contract for the purse
    * @param[out] merge_timestamp set to time when the purse was merged, or 
NEVER if not
    * @param[out] purse_deleted set to true if purse was deleted
+   * @param[out] purse_refunded set to true if purse was refunded (after 
expiration)
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
@@ -6347,7 +6348,8 @@ struct TALER_EXCHANGEDB_Plugin
     struct TALER_Amount *deposited,
     struct TALER_PrivateContractHashP *h_contract_terms,
     struct GNUNET_TIME_Timestamp *merge_timestamp,
-    bool *purse_deleted);
+    bool *purse_deleted,
+    bool *purse_refunded);
 
 
   /**

-- 
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]