gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] branch master updated: support providing provider_url


From: gnunet
Subject: [taler-anastasis] branch master updated: support providing provider_url when downloading policy
Date: Sat, 20 Mar 2021 11:19:50 +0100

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 aa1f22f  support providing provider_url when downloading policy
aa1f22f is described below

commit aa1f22f8c9695ab2464f14f3511ad71dfcd4e945
Author: Christian Grothoff <grothoff@gnunet.org>
AuthorDate: Sat Mar 20 11:19:44 2021 +0100

    support providing provider_url when downloading policy
---
 src/reducer/anastasis_api_recovery_redux.c | 61 +++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 18 deletions(-)

diff --git a/src/reducer/anastasis_api_recovery_redux.c 
b/src/reducer/anastasis_api_recovery_redux.c
index 1c76f3b..a400085 100644
--- a/src/reducer/anastasis_api_recovery_redux.c
+++ b/src/reducer/anastasis_api_recovery_redux.c
@@ -2196,6 +2196,36 @@ provider_added_cb (void *cls,
 }
 
 
+/**
+ * Start to query provider for recovery document.
+ *
+ * @param[in,out] rss overall recovery state
+ * @param provider_url base URL of the provider to query
+ */
+static void
+begin_query_provider (struct RecoverSecretState *rss,
+                      const char *provider_url)
+{
+  struct RecoveryStartStateProviderEntry *pe;
+  json_t *istate;
+
+  pe = GNUNET_new (struct RecoveryStartStateProviderEntry);
+  pe->rss = rss;
+  istate = json_object ();
+  GNUNET_assert (NULL != istate);
+  GNUNET_CONTAINER_DLL_insert (rss->pe_head,
+                               rss->pe_tail,
+                               pe);
+  pe->ra = ANASTASIS_REDUX_add_provider_to_state_ (provider_url,
+                                                   istate,
+                                                   &provider_added_cb,
+                                                   pe);
+  json_decref (istate);
+  if (NULL != pe->ra)
+    rss->pending++;
+}
+
+
 struct ANASTASIS_ReduxAction *
 ANASTASIS_REDUX_recovery_challenge_begin_ (json_t *state,
                                            const json_t *arguments,
@@ -2206,6 +2236,7 @@ ANASTASIS_REDUX_recovery_challenge_begin_ (json_t *state,
   json_t *providers;
   const json_t *attributes;
   struct RecoverSecretState *rss;
+  const char *provider_url;
 
   providers = json_object_get (state,
                                "authentication_providers");
@@ -2243,29 +2274,23 @@ ANASTASIS_REDUX_recovery_challenge_begin_ (json_t 
*state,
   rss->state = json_incref (state);
   rss->cb = cb;
   rss->cb_cls = cb_cls;
-
   rss->pending = 1; /* decremented after initialization loop */
+
+  provider_url = json_string_value (json_object_get (arguments,
+                                                     "provider_url"));
+  if (NULL != provider_url)
+  {
+    begin_query_provider (rss,
+                          provider_url);
+  }
+  else
   {
     json_t *prov;
     const char *url;
+
     json_object_foreach (providers, url, prov) {
-      struct RecoveryStartStateProviderEntry *pe;
-      json_t *istate;
-
-      pe = GNUNET_new (struct RecoveryStartStateProviderEntry);
-      pe->rss = rss;
-      istate = json_object ();
-      GNUNET_assert (NULL != istate);
-      GNUNET_CONTAINER_DLL_insert (rss->pe_head,
-                                   rss->pe_tail,
-                                   pe);
-      pe->ra = ANASTASIS_REDUX_add_provider_to_state_ (url,
-                                                       istate,
-                                                       &provider_added_cb,
-                                                       pe);
-      json_decref (istate);
-      if (NULL != pe->ra)
-        rss->pending++;
+      begin_query_provider (rss,
+                            url);
     }
   }
   rss->pending--;

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