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

This commit is contained in:
Christian Grothoff 2021-05-11 19:17:09 +02:00
parent 684a234264
commit 5f268913dd
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 34 additions and 15 deletions

View File

@ -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,

View File

@ -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,