gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis-gtk] branch master updated: fix


From: gnunet
Subject: [taler-anastasis-gtk] branch master updated: fix
Date: Tue, 13 Oct 2020 21:04:29 +0200

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

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

The following commit(s) were added to refs/heads/master by this push:
     new db23bb7  fix
db23bb7 is described below

commit db23bb7d3d28ff13fcb779ca11162274a806488c
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Tue Oct 13 19:31:05 2020 +0200

    fix
---
 src/anastasis/anastasis-gtk_helper.c | 62 +++++++++++++++++++++++++++++-------
 1 file changed, 51 insertions(+), 11 deletions(-)

diff --git a/src/anastasis/anastasis-gtk_helper.c 
b/src/anastasis/anastasis-gtk_helper.c
index be6c94a..fdd19a8 100644
--- a/src/anastasis/anastasis-gtk_helper.c
+++ b/src/anastasis/anastasis-gtk_helper.c
@@ -311,25 +311,65 @@ action_cb (void *cls,
             }
             else
             {
-                size_t index;
-                json_t *value;
-
                 // update authentication_providers
+                json_t *method_data;
+                const char *method_name;
                 json_t *methods = json_object_get (providers, 
"authentication_providers");
-                GNUNET_assert (0 == 
-                               json_object_update_recursive (methods,
-                                                             json_object_get 
(response,
-                                                                              
"config")));
+                json_t *config = json_object_get (response, "config");
+                GNUNET_assert (NULL != config);
+                json_t *provider_id = json_object_get (response, "provider");
+                GNUNET_assert (NULL != provider_id);
+                bool contains_method = false;
+
+                if (NULL != methods)
+                {
+                    json_object_foreach (methods, method_name, method_data)
+                    {
+                        json_t *value;
+                        const char* key;
+                        json_object_foreach (config, key, value)
+                        {
+                            if (0 == strcmp (key, method_name))
+                            {
+                                json_t *provider;
+                                size_t index;
+                                json_t *provider_arr = json_object_get 
(methods, method_name);
+                                GNUNET_assert (NULL != provider_arr);
+                                bool contains_provider = false;
+
+                                json_array_foreach (provider_arr, index, 
provider)
+                                {
+                                    if (1 == json_equal (provider, 
provider_id))
+                                    {
+                                        contains_provider = true;
+                                        break;
+                                    }
+                                }
+                                if (! contains_provider)
+                                    json_array_append_new (provider_arr, 
json_array_get (value, 0));
+                                contains_method = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (! contains_method)                                     
                        
+                        GNUNET_assert (0 == 
+                                    json_object_update_recursive (methods,
+                                                                    
json_object_get (response,
+                                                                               
     "config")));
+                }
 
                 // delete this provider from missing_providers
-                json_t *provider_id = json_object_get (response, "provider");
-                json_array_foreach (missing_providers, index, value)
+                size_t missing_index;
+                json_t *missing_value;
+
+                json_array_foreach (missing_providers, missing_index, 
missing_value)
                 {   
-                    json_t *temp_provider_id = json_object_get (value, 
+                    json_t *temp_provider_id = json_object_get (missing_value, 
                                                                 "provider_id");
                     if (1 == json_equal (provider_id, temp_provider_id))
                     {
-                        json_array_remove (missing_providers, index);
+                        json_array_remove (missing_providers, missing_index);
                         break;
                     }
                 }

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