gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: better error handling; use handl


From: gnunet
Subject: [taler-exchange] branch master updated: better error handling; use handle result
Date: Tue, 04 Jul 2023 11:57:54 +0200

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

oec pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 47620fa8 better error handling; use handle result
47620fa8 is described below

commit 47620fa81b74a090767443445048ec9e3c15456e
Author: Özgür Kesim <oec-taler@kesim.org>
AuthorDate: Tue Jul 4 11:57:27 2023 +0200

    better error handling; use handle result
---
 src/lib/exchange_api_age_withdraw.c | 148 +++++++++++++++---------------------
 1 file changed, 62 insertions(+), 86 deletions(-)

diff --git a/src/lib/exchange_api_age_withdraw.c 
b/src/lib/exchange_api_age_withdraw.c
index e862b148..c5321fdc 100644
--- a/src/lib/exchange_api_age_withdraw.c
+++ b/src/lib/exchange_api_age_withdraw.c
@@ -781,21 +781,25 @@ prepare_coins (
   const struct TALER_EXCHANGE_AgeWithdrawCoinInput coin_inputs[
     static num_coins])
 {
+#define FAIL_IF(cond) \
+  do { \
+    if ((cond)) \
+    { \
+      GNUNET_break (! (cond)); \
+      goto ERROR; \
+    } \
+  } while(0)
 
-  if (GNUNET_OK != TALER_amount_set_zero (
-        awh->keys->currency,
-        &awh->amount_with_fee))
-  {
-    GNUNET_break (0);
-    return GNUNET_SYSERR;
-  }
+  GNUNET_assert (0 < num_coins);
+  awh->age_mask = coin_inputs[0].denom_pub->key.age_mask;
+
+  FAIL_IF (GNUNET_OK !=
+           TALER_amount_set_zero (awh->keys->currency,
+                                  &awh->amount_with_fee));
 
   awh->coin_data = GNUNET_new_array (awh->num_coins,
                                      struct CoinData);
 
-  GNUNET_assert (0 < num_coins);
-  awh->age_mask = coin_inputs[0].denom_pub->key.age_mask;
-
   for (size_t i = 0; i < num_coins; i++)
   {
     struct CoinData *cd = &awh->coin_data[i];
@@ -803,12 +807,7 @@ prepare_coins (
     cd->denom_pub = *input->denom_pub;
 
     /* The mask must be the same for all coins */
-    if (awh->age_mask.bits != input->denom_pub->key.age_mask.bits)
-    {
-      GNUNET_break (0);
-      TALER_EXCHANGE_age_withdraw_cancel (awh);
-      return GNUNET_SYSERR;
-    }
+    FAIL_IF (awh->age_mask.bits != input->denom_pub->key.age_mask.bits);
 
     TALER_denom_pub_deep_copy (&cd->denom_pub.key,
                                &input->denom_pub->key);
@@ -817,26 +816,15 @@ prepare_coins (
     {
       struct TALER_Amount coin_total;
 
-      if (0 >
-          TALER_amount_add (&coin_total,
-                            &cd->denom_pub.fees.withdraw,
-                            &cd->denom_pub.value))
-      {
-        GNUNET_break (0);
-        TALER_EXCHANGE_age_withdraw_cancel (awh);
-        return GNUNET_SYSERR;
-      }
+      FAIL_IF (0 >
+               TALER_amount_add (&coin_total,
+                                 &cd->denom_pub.fees.withdraw,
+                                 &cd->denom_pub.value));
 
-      if (0 >
-          TALER_amount_add (&awh->amount_with_fee,
-                            &awh->amount_with_fee,
-                            &coin_total))
-      {
-        /* Overflow here? Very strange, our CPU must be fried... */
-        GNUNET_break (0);
-        TALER_EXCHANGE_age_withdraw_cancel (awh);
-        return GNUNET_SYSERR;
-      }
+      FAIL_IF (0 >
+               TALER_amount_add (&awh->amount_with_fee,
+                                 &awh->amount_with_fee,
+                                 &coin_total));
     }
 
     for (uint8_t k = 0; k < TALER_CNC_KAPPA; k++)
@@ -847,12 +835,13 @@ prepare_coins (
 
       /* Derive the age restriction from the given secret and
        * the maximum age */
-      GNUNET_assert (GNUNET_OK ==
-                     TALER_age_restriction_from_secret (
-                       &can->secret,
-                       &input->denom_pub->key.age_mask,
-                       awh->max_age,
-                       &can->age_commitment_proof));
+      FAIL_IF (GNUNET_OK !=
+               TALER_age_restriction_from_secret (
+                 &can->secret,
+                 &input->denom_pub->key.age_mask,
+                 awh->max_age,
+                 &can->age_commitment_proof));
+
       TALER_age_commitment_hash (&can->age_commitment_proof.commitment,
                                  &can->h_age_commitment);
 
@@ -867,28 +856,18 @@ prepare_coins (
           TALER_planchet_blinding_secret_create (&can->secret,
                                                  &can->alg_values,
                                                  &can->blinding_key);
-          if (GNUNET_OK !=
-              TALER_planchet_prepare (&cd->denom_pub.key,
-                                      &can->alg_values,
-                                      &can->blinding_key,
-                                      &can->coin_priv,
-                                      &can->h_age_commitment,
-                                      &can->h_coin_pub,
-                                      &can->planchet_detail))
-          {
-            GNUNET_break (0);
-            TALER_EXCHANGE_age_withdraw_cancel (awh);
-            return GNUNET_SYSERR;
-          }
-          if (GNUNET_OK !=
-              TALER_coin_ev_hash (&can->planchet_detail.blinded_planchet,
-                                  &can->planchet_detail.denom_pub_hash,
-                                  &can->blinded_coin_h))
-          {
-            GNUNET_break (0);
-            TALER_EXCHANGE_age_withdraw_cancel (awh);
-            return GNUNET_SYSERR;
-          }
+          FAIL_IF (GNUNET_OK !=
+                   TALER_planchet_prepare (&cd->denom_pub.key,
+                                           &can->alg_values,
+                                           &can->blinding_key,
+                                           &can->coin_priv,
+                                           &can->h_age_commitment,
+                                           &can->h_coin_pub,
+                                           &can->planchet_detail));
+          FAIL_IF (GNUNET_OK !=
+                   TALER_coin_ev_hash (&can->planchet_detail.blinded_planchet,
+                                       &can->planchet_detail.denom_pub_hash,
+                                       &can->blinded_coin_h));
           break;
         }
       case TALER_DENOMINATION_CS:
@@ -911,36 +890,33 @@ prepare_coins (
              of the blinded_planchet here; the other part
              will be done after the /csr-withdraw request! */
           can->planchet_detail.blinded_planchet.cipher = TALER_DENOMINATION_CS;
-          can->csr_withdraw_handle = NULL;
-          TALER_EXCHANGE_csr_withdraw (
-            awh->curl_ctx,
-            awh->exchange_url,
-            &cd->denom_pub,
-            &can->planchet_detail
-            .blinded_planchet
-            .details
-            .cs_blinded_planchet
-            .nonce,
-            &csr_withdraw_done,
-            &can);
-          if (NULL == can->csr_withdraw_handle)
-          {
-            GNUNET_break (0);
-            TALER_EXCHANGE_age_withdraw_cancel (awh);
-            return GNUNET_SYSERR;
-          }
+          can->csr_withdraw_handle =
+            TALER_EXCHANGE_csr_withdraw (awh->curl_ctx,
+                                         awh->exchange_url,
+                                         &cd->denom_pub,
+                                         &can->planchet_detail
+                                         .blinded_planchet
+                                         .details
+                                         .cs_blinded_planchet
+                                         .nonce,
+                                         &csr_withdraw_done,
+                                         &can);
+          FAIL_IF (NULL == can->csr_withdraw_handle);
 
           awh->csr_pending++;
           break;
         }
       default:
-        GNUNET_break (0);
-        TALER_EXCHANGE_age_withdraw_cancel (awh);
-        return GNUNET_SYSERR;
+        FAIL_IF (1);
       }
     }
   }
   return GNUNET_OK;
+
+ERROR:
+  TALER_EXCHANGE_age_withdraw_cancel (awh);
+  return GNUNET_SYSERR;
+#undef FAIL_IF
 };
 
 struct TALER_EXCHANGE_AgeWithdrawHandle *
@@ -950,8 +926,8 @@ TALER_EXCHANGE_age_withdraw (
   struct TALER_EXCHANGE_Keys *keys,
   const struct TALER_ReservePrivateKeyP *reserve_priv,
   size_t num_coins,
-  const struct TALER_EXCHANGE_AgeWithdrawCoinInput coin_inputs[
-    const static num_coins],
+  const struct TALER_EXCHANGE_AgeWithdrawCoinInput coin_inputs[const static
+                                                               num_coins],
   uint8_t max_age,
   TALER_EXCHANGE_AgeWithdrawCallback res_cb,
   void *res_cb_cls)

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