gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant] branch master updated: fix memory leaks in orders/forge


From: gnunet
Subject: [taler-merchant] branch master updated: fix memory leaks in orders/forget logic
Date: Sat, 29 Aug 2020 12:39:50 +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 2d0c9c8  fix memory leaks in orders/forget logic
2d0c9c8 is described below

commit 2d0c9c8f0c730b3ee7e9f3551b628495aef1fd71
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Aug 29 12:39:47 2020 +0200

    fix memory leaks in orders/forget logic
---
 ...merchant-httpd_private-patch-orders-ID-forget.c | 31 +++++++++++-----------
 src/backenddb/test_merchantdb.c                    |  4 ++-
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-patch-orders-ID-forget.c 
b/src/backend/taler-merchant-httpd_private-patch-orders-ID-forget.c
index d2d7d65..86e7d03 100644
--- a/src/backend/taler-merchant-httpd_private-patch-orders-ID-forget.c
+++ b/src/backend/taler-merchant-httpd_private-patch-orders-ID-forget.c
@@ -68,12 +68,13 @@ TMH_private_patch_orders_ID_forget (const struct 
TMH_RequestHandler *rh,
 {
   const char *order_id = hc->infix;
   enum GNUNET_DB_QueryStatus qs;
-  json_t *fields;
-  json_t *contract_terms;
   uint64_t order_serial;
 
   for (unsigned int i = 0; i<MAX_RETRIES; i++)
   {
+    json_t *fields;
+    json_t *contract_terms;
+
     if (GNUNET_OK !=
         TMH_db->start (TMH_db->cls,
                        "forget order"))
@@ -97,7 +98,8 @@ TMH_private_patch_orders_ID_forget (const struct 
TMH_RequestHandler *rh,
                                          TALER_EC_ORDERS_CLAIM_HARD_DB_ERROR,
                                          NULL);
     case GNUNET_DB_STATUS_SOFT_ERROR:
-      goto retry;
+      TMH_db->rollback (TMH_db->cls);
+      continue;
     case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
       TMH_db->rollback (TMH_db->cls);
       return TALER_MHD_reply_with_error (connection,
@@ -123,6 +125,7 @@ TMH_private_patch_orders_ID_forget (const struct 
TMH_RequestHandler *rh,
       if (GNUNET_OK != res)
       {
         TMH_db->rollback (TMH_db->cls);
+        json_decref (contract_terms);
         return (GNUNET_NO == res)
                ? MHD_YES
                : MHD_NO;
@@ -189,23 +192,21 @@ TMH_private_patch_orders_ID_forget (const struct 
TMH_RequestHandler *rh,
                                         hc->instance->settings.id,
                                         order_id,
                                         contract_terms);
+    json_decref (contract_terms);
+    json_decref (fields);
     if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
     {
       TMH_db->rollback (TMH_db->cls);
-      if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
-        goto retry;
-      else
-        goto giveup;
+      if (GNUNET_DB_STATUS_SOFT_ERROR != qs)
+        break;
+    }
+    else
+    {
+      qs = TMH_db->commit (TMH_db->cls);
+      if (GNUNET_DB_STATUS_SOFT_ERROR != qs)
+        break;
     }
-    qs = TMH_db->commit (TMH_db->cls);
-retry:
-    if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
-      continue;
-    break;
   }
-giveup:
-  json_decref (contract_terms);
-  json_decref (fields);
   if (0 > qs)
   {
     return TALER_MHD_reply_with_error (connection,
diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c
index 4d33dfb..f91d495 100644
--- a/src/backenddb/test_merchantdb.c
+++ b/src/backenddb/test_merchantdb.c
@@ -5352,8 +5352,10 @@ static int
 run_test_tips (struct TestTips_Closure *cls)
 {
   struct TALER_Amount zero;
-  TALER_amount_get_zero ("EUR", &zero);
 
+  GNUNET_assert (GNUNET_OK ==
+                 TALER_amount_get_zero ("EUR",
+                                        &zero));
   TEST_RET_ON_FAIL (test_insert_instance (&cls->instance,
                                           
GNUNET_DB_STATUS_SUCCESS_ONE_RESULT));
   /* Test insert reserve */

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