gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] branch master updated: return policy version properly


From: gnunet
Subject: [taler-anastasis] branch master updated: return policy version properly
Date: Wed, 31 Mar 2021 12:30:47 +0200

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

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 49dc95e  return policy version properly
49dc95e is described below

commit 49dc95e4bcebcd06bbfa748b6665a5ff1a4519ae
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Mar 31 12:30:40 2021 +0200

    return policy version properly
---
 src/include/anastasis.h                      | 20 ++++++++++----------
 src/include/anastasis_service.h              |  5 +++++
 src/lib/anastasis_recovery.c                 |  2 ++
 src/reducer/anastasis_api_recovery_redux.c   |  7 +++----
 src/restclient/anastasis_api_config.c        |  3 ++-
 src/restclient/anastasis_api_policy_lookup.c | 22 ++++++++++++++++++++++
 6 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/src/include/anastasis.h b/src/include/anastasis.h
index 3b8500e..4b837b4 100644
--- a/src/include/anastasis.h
+++ b/src/include/anastasis.h
@@ -479,16 +479,16 @@ struct ANASTASIS_Recovery;
  * @return recovery operation handle
  */
 struct ANASTASIS_Recovery *
-ANASTASIS_recovery_begin (struct GNUNET_CURL_Context *ctx,
-                          const json_t *id_data,
-                          unsigned int version,
-                          const char *anastasis_provider_url,
-                          const struct
-                          ANASTASIS_CRYPTO_ProviderSaltP *provider_salt,
-                          ANASTASIS_PolicyCallback pc,
-                          void *pc_cls,
-                          ANASTASIS_CoreSecretCallback csc,
-                          void *csc_cls);
+ANASTASIS_recovery_begin (
+  struct GNUNET_CURL_Context *ctx,
+  const json_t *id_data,
+  unsigned int version,
+  const char *anastasis_provider_url,
+  const struct ANASTASIS_CRYPTO_ProviderSaltP *provider_salt,
+  ANASTASIS_PolicyCallback pc,
+  void *pc_cls,
+  ANASTASIS_CoreSecretCallback csc,
+  void *csc_cls);
 
 
 /**
diff --git a/src/include/anastasis_service.h b/src/include/anastasis_service.h
index 148d621..a39a2d4 100644
--- a/src/include/anastasis_service.h
+++ b/src/include/anastasis_service.h
@@ -185,6 +185,11 @@ struct ANASTASIS_DownloadDetails
    * Number of bytes in @e backup.
    */
   size_t policy_size;
+
+  /**
+   * Policy version returned by the service.
+   */
+  uint32_t version;
 };
 
 
diff --git a/src/lib/anastasis_recovery.c b/src/lib/anastasis_recovery.c
index a0a5e7b..9eba56c 100644
--- a/src/lib/anastasis_recovery.c
+++ b/src/lib/anastasis_recovery.c
@@ -711,6 +711,7 @@ policy_lookup_cb (void *cls,
     json_decref (recovery_document);
   }
 
+  r->ri.version = dd->version;
   r->ri.cs_len = json_array_size (esc_methods);
   r->ri.dps_len = json_array_size (dec_policies);
   r->ri.dps = GNUNET_new_array (r->ri.dps_len,
@@ -1291,6 +1292,7 @@ ANASTASIS_recovery_deserialize (struct 
GNUNET_CURL_Context *ctx,
                   JSON_INDENT (2));
       return NULL;
     }
+    r->ri.version = version;
     if ( (GNUNET_OK !=
           parse_cs_array (r,
                           cs_arr)) ||
diff --git a/src/reducer/anastasis_api_recovery_redux.c 
b/src/reducer/anastasis_api_recovery_redux.c
index ff60f76..50d900d 100644
--- a/src/reducer/anastasis_api_recovery_redux.c
+++ b/src/reducer/anastasis_api_recovery_redux.c
@@ -1854,10 +1854,9 @@ core_early_secret_cb (void *cls,
   GNUNET_assert (ANASTASIS_RS_SUCCESS != rc);
   ec = update_state_by_error (rss->state,
                               rc);
-  ANASTASIS_redux_fail_ (rss->cb,
-                         rss->cb_cls,
-                         ec,
-                         "Failed to obtain policy data");
+  rss->cb (rss->cb_cls,
+           ec,
+           rss->state);
   rss->cb = NULL;
   free_rss (rss);
 }
diff --git a/src/restclient/anastasis_api_config.c 
b/src/restclient/anastasis_api_config.c
index 17721a4..b0925fb 100644
--- a/src/restclient/anastasis_api_config.c
+++ b/src/restclient/anastasis_api_config.c
@@ -93,7 +93,8 @@ handle_config_finished (void *cls,
   case 0:
     /* Hard error */
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Backend failed to respond to GET /config\n");
+                "Backend `%s' failed to respond to GET /config\n",
+                co->url);
     break;
   case MHD_HTTP_OK:
     {
diff --git a/src/restclient/anastasis_api_policy_lookup.c 
b/src/restclient/anastasis_api_policy_lookup.c
index 0bf1519..1af95d7 100644
--- a/src/restclient/anastasis_api_policy_lookup.c
+++ b/src/restclient/anastasis_api_policy_lookup.c
@@ -75,6 +75,11 @@ struct ANASTASIS_PolicyLookupOperation
    */
   struct ANASTASIS_AccountSignatureP account_sig;
 
+  /**
+   * Version of the policy.
+   */
+  unsigned int version;
+
 };
 
 
@@ -137,6 +142,7 @@ handle_policy_lookup_finished (void *cls,
       dd.curr_policy_hash = usp.new_recovery_data_hash;
       dd.policy = data;
       dd.policy_size = data_size;
+      dd.version = plo->version;
       plo->cb (plo->cb_cls,
                response_code,
                &dd);
@@ -229,6 +235,22 @@ handle_header (char *buffer,
       return 0;
     }
   }
+  if (0 == strcasecmp (hdr_type,
+                       ANASTASIS_HTTP_HEADER_POLICY_VERSION))
+  {
+    char dummy;
+
+    if (1 !=
+        sscanf (hdr_val,
+                "%u%c",
+                &plo->version,
+                &dummy))
+    {
+      GNUNET_break_op (0);
+      GNUNET_free (ndup);
+      return 0;
+    }
+  }
   GNUNET_free (ndup);
   return total;
 }

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