[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-anastasis] 01/02: fix
From: |
gnunet |
Subject: |
[taler-anastasis] 01/02: fix |
Date: |
Tue, 13 Oct 2020 21:04:26 +0200 |
This is an automated email from the git hooks/post-receive script.
dennis-neufeld pushed a commit to branch master
in repository anastasis.
commit 35784415a5df48f563704a9bfcc534328857e6b3
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Tue Oct 13 19:31:55 2020 +0200
fix
---
src/lib/anastasis_api_backup_redux.c | 23 ++++++++++++++---------
src/lib/anastasis_api_redux.c | 7 +++++--
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/src/lib/anastasis_api_backup_redux.c
b/src/lib/anastasis_api_backup_redux.c
index ab4d039..af3386c 100644
--- a/src/lib/anastasis_api_backup_redux.c
+++ b/src/lib/anastasis_api_backup_redux.c
@@ -224,10 +224,10 @@ provider_candidate (struct PolicyBuilder *pb,
method_providers = json_object_get (pb->providers,
method_name);
int num_prov = json_array_size (method_providers);
- for (unsigned int j = 0; j<num_prov; j++)
+ for (unsigned int j = 0; j < num_prov; j++)
{
prov_sel[i] = j;
- if (i == num_prov)
+ if (i == pb->req_methods - 1)
{
eval_provider_selection (pb,
prov_sel);
@@ -251,6 +251,7 @@ go_with (struct PolicyBuilder *pb,
pb->best_diversity = 0;
pb->best_sel = best_sel;
pb->m_idx = m_idx;
+
provider_candidate (pb,
prov_sel,
0);
@@ -258,8 +259,9 @@ go_with (struct PolicyBuilder *pb,
GNUNET_assert (GNUNET_OK ==
TALER_amount_get_zero (currency,
&recovery_cost));
+
json_t *method_arr = json_array ();
- for (unsigned int i = 0; i<pb->req_methods; i++)
+ for (unsigned int i = 0; i < pb->req_methods; i++)
{
json_t *method_obj = json_array_get (pb->methods,
m_idx[i]);
@@ -269,17 +271,19 @@ go_with (struct PolicyBuilder *pb,
method_name);
json_t *provider_obj = json_array_get (method_providers,
best_sel[i]);
- const char *provider_name = json_string_value (json_object_get (
- provider_obj,
- "provider"));
+ void *provider_obj_iter = json_object_iter (provider_obj);
+ const char *provider_name = json_object_iter_key (provider_obj_iter);
json_t *policy_method = json_pack ("{s:i, s:s}",
"authentication_method", m_idx[i],
"provider", provider_name);
json_array_append_new (method_arr, policy_method);
+
struct TALER_Amount method_cost;
+ json_t *provider_data = json_object_get (provider_obj, provider_name);
+
GNUNET_assert (GNUNET_OK ==
TALER_string_to_amount (
- json_string_value (json_object_get (provider_obj,
+ json_string_value (json_object_get (provider_data,
"method_cost")),
&method_cost));
if (0 >
@@ -291,10 +295,11 @@ go_with (struct PolicyBuilder *pb,
return;
}
}
- json_t *policy = json_pack ("{s:i, s:i}",
+ json_t *policy = json_pack ("{s:o, s:o}",
"recovery_cost",
TALER_JSON_from_amount (&recovery_cost),
"methods", method_arr);
+ json_array_append_new (pb->policies, policy);
}
@@ -309,7 +314,6 @@ method_candidate (struct PolicyBuilder *pb,
start = m_idx[i - 1];
for (unsigned int j = start; j < pb->num_methods; j++)
{
- m_idx[i] = j;
if (i == pb->req_methods)
{
go_with (pb,
@@ -318,6 +322,7 @@ method_candidate (struct PolicyBuilder *pb,
}
else
{
+ m_idx[i] = j;
method_candidate (pb,
m_idx,
i + 1);
diff --git a/src/lib/anastasis_api_redux.c b/src/lib/anastasis_api_redux.c
index 4bab722..847f371 100644
--- a/src/lib/anastasis_api_redux.c
+++ b/src/lib/anastasis_api_redux.c
@@ -210,6 +210,8 @@ config_cb (void *cls,
GNUNET_assert (NULL != provider_id);
json_t *method_data = json_object ();
GNUNET_assert (NULL != method_data);
+ json_t *provider_arr = json_array ();
+ GNUNET_assert (NULL != provider_arr);
GNUNET_assert (0 == json_object_set_new (method_data,
"method_cost",
@@ -222,10 +224,11 @@ config_cb (void *cls,
GNUNET_assert (0 == json_object_set_new (provider_id,
cs->server->backend_id,
method_data));
-
+ GNUNET_assert (0 == json_array_append_new (provider_arr,
+ provider_id));
GNUNET_assert (0 == json_object_set_new (provider_method,
json_string_value (method_type),
- provider_id));
+ provider_arr));
GNUNET_assert (0 == json_object_set_new (config,
"config",
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.