exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 5f268913ddfac25f8d16c3216bba23535e2bd798
parent 684a2342645f3b44b823a907f0309eb4fcfba50b
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue, 11 May 2021 19:17:09 +0200

return NO if forgetting did not work because it was already forgotten earlier

Diffstat:
Msrc/include/taler_json_lib.h | 4+++-
Msrc/json/json.c | 45+++++++++++++++++++++++++++++++--------------
2 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/src/include/taler_json_lib.h b/src/include/taler_json_lib.h @@ -215,7 +215,9 @@ TALER_JSON_contract_mark_forgettable (json_t *json, * * @param[in,out] json some JSON object to modify * @param field name of the field to forget - * @return #GNUNET_OK on success, #GNUNET_SYSERR on error + * @return #GNUNET_OK on success, + * #GNUNET_NO if the field was already forgotten before + * #GNUNET_SYSERR on error */ int TALER_JSON_contract_part_forget (json_t *json, diff --git a/src/json/json.c b/src/json/json.c @@ -445,6 +445,37 @@ TALER_JSON_contract_part_forget (json_t *json, field); return GNUNET_SYSERR; } + rx = json_object_get (json, + "_forgotten"); + if (NULL == rx) + { + rx = json_object (); + if (0 != + json_object_set_new (json, + "_forgotten", + rx)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + } + if (NULL != + json_object_get (rx, + field)) + { + if (! json_is_null (json_object_get (json, + field))) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Field `%s' market as forgotten, but still exists!\n", + field); + return GNUNET_SYSERR; + } + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Already forgot field `%s'\n", + field); + return GNUNET_NO; + } salt = json_string_value (json_object_get (fg, field)); if (NULL == salt) @@ -482,20 +513,6 @@ TALER_JSON_contract_part_forget (json_t *json, return GNUNET_SYSERR; } - rx = json_object_get (json, - "_forgotten"); - if (NULL == rx) - { - rx = json_object (); - if (0 != - json_object_set_new (json, - "_forgotten", - rx)) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - } /* remember field as 'forgotten' */ if (0 != json_object_set_new (rx,