gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 10/12: fix fail curl fini


From: gnunet
Subject: [taler-anastasis] 10/12: fix fail curl fini
Date: Mon, 07 Dec 2020 20:28:44 +0100

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

dennis-neufeld pushed a commit to branch master
in repository anastasis.

commit 81993eb4036211c00d273d0e22ce403765698688
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Mon Dec 7 15:08:56 2020 +0100

    fix fail curl fini
---
 src/cli/test_anastasis_reducer_enter_secret.sh |  2 -
 src/lib/anastasis.c                            | 82 +++++++++++---------------
 src/lib/anastasis_api_backup_redux.c           | 64 +++++++++++++++-----
 3 files changed, 85 insertions(+), 63 deletions(-)

diff --git a/src/cli/test_anastasis_reducer_enter_secret.sh 
b/src/cli/test_anastasis_reducer_enter_secret.sh
index fc890ac..7573822 100755
--- a/src/cli/test_anastasis_reducer_enter_secret.sh
+++ b/src/cli/test_anastasis_reducer_enter_secret.sh
@@ -190,8 +190,6 @@ touch $TFILE
     "type": "password"}' \
   enter_secret $SFILE $TFILE
 
-wait
-
 STATE=`jq -r -e .backup_state < $TFILE`
 if test "$STATE" != "BACKUP_FINISHED"
 then
diff --git a/src/lib/anastasis.c b/src/lib/anastasis.c
index ac0ea0b..1626796 100644
--- a/src/lib/anastasis.c
+++ b/src/lib/anastasis.c
@@ -1316,7 +1316,7 @@ ANASTASIS_truth_upload_cancel (struct 
ANASTASIS_TruthUpload *tu)
   if (NULL != tu->tso)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "truth lookup aborted");
+                "truth lookup aborted \n");
     ANASTASIS_truth_store_cancel (tu->tso);
     tu->tso = NULL;
   }
@@ -1567,13 +1567,7 @@ struct PolicyStoreState
    * reference to SecretShare
    */
   struct ANASTASIS_SecretShare *ss;
-};
 
-/**
-* Defines a recovery document upload process (recovery document consists of 
multiple policies)
-*/
-struct ANASTASIS_SecretShare
-{
   /**
    * Callback which gives back the payment details
    */
@@ -1593,7 +1587,13 @@ struct ANASTASIS_SecretShare
    * Closure for the Result Callback
    */
   void *src_cls;
+};
 
+/**
+* Defines a recovery document upload process (recovery document consists of 
multiple policies)
+*/
+struct ANASTASIS_SecretShare
+{
   /**
    * Closure for the Result Callback
    */
@@ -1658,14 +1658,14 @@ policy_store_cb (void *cls,
                                (json_int_t) ec,
                                "hint",
                                "Unexpected response code!");
-    if (NULL != pss->ss->src)
+    if (NULL != pss->src)
     {
-      pss->ss->src (pss->ss->src_cls,
-                    &pss->curr_hash,
-                    pss->anastasis_url,
-                    ec,
-                    http_status);
-      pss->ss->src = NULL;
+      pss->src (pss->src_cls,
+                &pss->curr_hash,
+                pss->anastasis_url,
+                ec,
+                http_status);
+      pss->src = NULL;
       ANASTASIS_secret_share_cancel (pss->ss);
     }
     return;
@@ -1726,16 +1726,16 @@ policy_store_cb (void *cls,
         memset (&pss->curr_hash,
                 0,
                 sizeof (struct GNUNET_HashCode));
-        if (NULL != pss->ss->spc)
+        if (NULL != pss->spc)
         {
-          pss->ss->spc (pss->ss->spc_cls,
-                        ud->details.payment_request,
-                        pss->anastasis_url,
-                        ec);
-          pss->ss->spc = NULL;
+          pss->spc (pss->spc_cls,
+                    ud->details.payment_request,
+                    pss->anastasis_url,
+                    ec);
+          pss->spc = NULL;
+          return;
         }
       }
-      return;
     case ANASTASIS_US_CONFLICTING_POLICY:
       GNUNET_break (0);
       return;
@@ -1751,16 +1751,16 @@ policy_store_cb (void *cls,
       GNUNET_break (0);
       return;
     }
-    if (NULL != pss->ss->src)
+    if (NULL != pss->src)
     {
-      pss->ss->src (pss->ss->src_cls,
-                    &pss->curr_hash,
-                    pss->anastasis_url,
-                    ec,
-                    http_status);
-      pss->ss->src = NULL;
+      pss->src (pss->src_cls,
+                &pss->curr_hash,
+                pss->anastasis_url,
+                ec,
+                http_status);
+      pss->src = NULL;
+      return;
     }
-    return;
   }
   GNUNET_break (0);
 }
@@ -1903,10 +1903,6 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
   }
   ss->pss = pss;
   ss->pss_length = pss_length;
-  ss->spc = spc;
-  ss->spc_cls = spc_cls;
-  ss->src = src;
-  ss->src_cls = src_cls;
   ss->ctx = ctx;
 
   for (unsigned int i = 0; i < policies_len; i++)
@@ -2112,6 +2108,11 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
   {
     ss->pss[l]->http_status = MHD_HTTP_NO_CONTENT;
 
+    ss->pss[l]->spc = spc;
+    ss->pss[l]->spc_cls = spc_cls;
+    ss->pss[l]->src = src;
+    ss->pss[l]->src_cls = src_cls;
+
     ANASTASIS_CRYPTO_user_identifier_derive (id_data,
                                              ss->pss[l]->server_salt,
                                              &ss->pss[l]->id);
@@ -2168,18 +2169,5 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
 void
 ANASTASIS_secret_share_cancel (struct ANASTASIS_SecretShare *ss)
 {
-  if (NULL != ss)
-  {
-    if (NULL != ss->pss)
-    {
-      for (unsigned int i = 0; i< ss->pss_length; i++)
-      {
-        if (NULL != ss->pss[i])
-        {
-          GNUNET_free (ss->pss[i]);
-        }
-      }
-    }
-    GNUNET_free (ss);
-  }
+  GNUNET_free (ss);
 }
diff --git a/src/lib/anastasis_api_backup_redux.c 
b/src/lib/anastasis_api_backup_redux.c
index 489ee34..809408b 100644
--- a/src/lib/anastasis_api_backup_redux.c
+++ b/src/lib/anastasis_api_backup_redux.c
@@ -227,6 +227,10 @@ struct SecretShareState
   json_t *state;
 };
 
+/**
+ * Generic container for an action with asynchronous activities.
+ */
+static struct ANASTASIS_ReduxAction *ra;
 
 /**
  * Array of truth upload states.
@@ -1406,9 +1410,8 @@ secret_share_result_cb (void *cls,
   json_t *rec_doc_uploads = json_object_get (sss->state,
                                              "recovery_document_uploads");
 
-  GNUNET_assert (json_is_array (rec_doc_uploads));
   sss->sso = NULL;
-
+  GNUNET_assert (json_is_array (rec_doc_uploads));
   json_array_foreach (rec_doc_uploads, index, upload)
   {
     const char *url = json_string_value (
@@ -1436,21 +1439,22 @@ secret_share_result_cb (void *cls,
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "At %s:%d http status is %u\n", __FILE__, __LINE__,
                 http_status);
-
-    if (check_uploads (rec_doc_uploads))
-    {
-      set_state (sss->state,
-                 ANASTASIS_backup_state_to_string (
-                   ANASTASIS_BACKUP_STATE_BACKUP_FINISHED));
-    }
     if (http_status == sss->http_status)
     {
-      sss->cb (sss->cb_cls,
-               ANASTASIS_EC_NONE,
-               sss->state);
-      sss->cb = NULL;
+      if (check_uploads (rec_doc_uploads))
+      {
+        set_state (sss->state,
+                   ANASTASIS_backup_state_to_string (
+                     ANASTASIS_BACKUP_STATE_BACKUP_FINISHED));
+
+        sss->cb (sss->cb_cls,
+                 ANASTASIS_EC_NONE,
+                 sss->state);
+        sss->cb = NULL;
+      }
       return;
     }
+
     json_t *error = json_pack ("{s:I, s:s}",
                                "code",
                                (json_int_t) ec,
@@ -1466,6 +1470,30 @@ secret_share_result_cb (void *cls,
 }
 
 
+/**
+ * Function to free a #SecretShareState.
+ *
+ * @param cls closure for a #SecretShareState.
+ */
+static void
+free_enter_secret (void *cls)
+{
+  struct SecretShareState *sss = cls;
+  for (unsigned int i = 0; i < tus_arr_length; i++)
+  {
+    if (NULL != tus_arr[i]->tuo)
+    {
+      ANASTASIS_truth_upload_cancel (tus_arr[i]->tuo);
+      tus_arr[i]->tuo = NULL;
+    }
+    GNUNET_free (tus_arr[i]);
+  }
+  ANASTASIS_secret_share_cancel (sss->sso);
+  sss->sso = NULL;
+  GNUNET_free (sss);
+}
+
+
 /**
  * Upload recovery documents.
  *
@@ -1542,6 +1570,11 @@ upload_rec_documents (json_t *state,
     GNUNET_break (0);
     return;
   }
+  {
+    ra = GNUNET_new (struct ANASTASIS_ReduxAction);
+    ra->cleanup_cls = sss;
+    ra->cleanup = free_enter_secret;
+  }
 }
 
 
@@ -1658,6 +1691,9 @@ enter_secret (json_t *state,
               ANASTASIS_ActionCallback cb,
               void *cb_cls)
 {
+  if (NULL != ra)
+    GNUNET_free (ra);
+
   if (NULL == arguments)
   {
     json_t *error = json_pack ("{s:I, s:s}",
@@ -1770,7 +1806,7 @@ enter_secret (json_t *state,
       }
     }
   }
-  return NULL;
+  return ra;
 }
 
 

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