gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant] branch master updated: fix #6983: do not keep contract


From: gnunet
Subject: [taler-merchant] branch master updated: fix #6983: do not keep contract terms across transactions
Date: Sat, 07 Aug 2021 15:37:23 +0200

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

grothoff pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new 8e703ec5 fix #6983: do not keep contract terms across transactions
8e703ec5 is described below

commit 8e703ec55501282f5fade998d8ce173f81f5fa49
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Aug 7 15:37:21 2021 +0200

    fix #6983: do not keep contract terms across transactions
---
 src/backend/taler-merchant-httpd_get-orders-ID.c | 28 +++++++++++++++++++-----
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c 
b/src/backend/taler-merchant-httpd_get-orders-ID.c
index c679211f..b96f6ba0 100644
--- a/src/backend/taler-merchant-httpd_get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_get-orders-ID.c
@@ -190,6 +190,12 @@ suspend_god (struct GetOrderData *god)
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Suspending GET /orders/%s\n",
               god->order_id);
+  if (NULL != god->contract_terms)
+  {
+    json_decref (god->contract_terms);
+    god->fulfillment_url = NULL;
+    god->contract_terms = NULL;
+  }
   GNUNET_assert (! god->suspended);
   god->suspended = true;
   GNUNET_CONTAINER_DLL_insert (god_head,
@@ -491,10 +497,12 @@ send_pay_request (struct GetOrderData *god,
   struct GNUNET_TIME_Relative remaining;
 
   remaining = GNUNET_TIME_absolute_get_remaining (god->sc.long_poll_timeout);
-  if ( (0 != remaining.rel_value_us) &&
+  if ( (! GNUNET_TIME_relative_is_zero (remaining)) &&
        (NULL == already_paid_order_id) )
   {
     /* long polling: do not queue a response, suspend connection instead */
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "Suspending request: long polling for payment\n");
     suspend_god (god);
     return MHD_YES;
   }
@@ -679,7 +687,10 @@ god_cleanup (void *cls)
   struct GetOrderData *god = cls;
 
   if (NULL != god->contract_terms)
+  {
     json_decref (god->contract_terms);
+    god->contract_terms = NULL;
+  }
   GNUNET_free (god);
 }
 
@@ -969,6 +980,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
   {
     const char *public_reorder_url;
 
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "Neither claim token nor contract matched\n");
     public_reorder_url = json_string_value (json_object_get (
                                               god->contract_terms,
                                               "public_reorder_url"));
@@ -1029,11 +1042,14 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
       GNUNET_JSON_pack_string ("public_reorder_url",
                                public_reorder_url));
   }
+
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Claim token or contract matched\n");
   if (! god->claimed)
   {
     /* Order is unclaimed, no need to check for payments or even
        refunds, simply always generate payment request */
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                 "Order unclaimed, sending pay request for order %s\n",
                 order_id);
     return send_pay_request (god,
@@ -1080,7 +1096,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
     {
       MHD_RESULT ret;
 
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Sending pay request for order %s (already paid: %s)\n",
                   order_id,
                   already_paid_order_id);
@@ -1115,7 +1131,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
     GNUNET_break (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs);
     if (! paid)
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Order claimed but unpaid, sending pay request for order 
%s\n",
                   order_id);
       return send_pay_request (god,
@@ -1154,7 +1170,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
     struct GNUNET_TIME_Relative remaining;
 
     remaining = GNUNET_TIME_absolute_get_remaining (god->sc.long_poll_timeout);
-    if (0 != remaining.rel_value_us)
+    if (! GNUNET_TIME_relative_is_zero (remaining))
     {
       /* yes, indeed suspend */
       if (god->sc.awaiting_refund)
@@ -1162,7 +1178,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh,
                     "Awaiting refund exceeding %s\n",
                     TALER_amount2s (&god->sc.refund_expected));
       if (god->sc.awaiting_refund_obtained)
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                     "Awaiting pending refunds\n");
       suspend_god (god);
       return MHD_YES;

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