anastasis

Credential backup and recovery protocol and service
Log | Files | Refs | Submodules | README | LICENSE

commit 5dbddafc68643f2b5f03af2fdb10f1cc16d90104
parent 71c08423cf2aea30c4a4d06fa8f69ebb286fb050
Author: Florian Dold <florian@dold.me>
Date:   Wed, 13 Oct 2021 17:30:58 +0200

return error response instead of tagging state

Diffstat:
Msrc/reducer/anastasis_api_recovery_redux.c | 39+++++++++++++++++++--------------------
1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/reducer/anastasis_api_recovery_redux.c b/src/reducer/anastasis_api_recovery_redux.c @@ -2463,31 +2463,30 @@ static void return_no_policy (struct RecoverSecretState *rss, bool offline) { - json_t *msg; + json_t *estate; + const char *detail; + enum TALER_ErrorCode ec; + ec = TALER_EC_ANASTASIS_REDUCER_NETWORK_FAILED; GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "No provider online, need user to manually specify providers!\n"); - msg = GNUNET_JSON_PACK ( + + if (offline) + detail = "could not contact provider (offline)"; + else + detail = "provider does not know you"; + + estate = GNUNET_JSON_PACK ( + GNUNET_JSON_pack_allow_null ( + GNUNET_JSON_pack_string ("detail", + detail)), + GNUNET_JSON_pack_uint64 ("code", + ec), GNUNET_JSON_pack_string ("hint", - offline - ? "could not contact provider" - : "provider does not know you"), - GNUNET_JSON_pack_bool ("offline", - offline)); - GNUNET_assert (0 == - json_object_set_new (rss->state, - "recovery_error", - msg)); - /* In case there are old ones, remove them! */ - (void) json_object_del (rss->state, - "recovery_document"); - (void) json_object_del (rss->state, - "recovery_information"); - set_state (rss->state, - ANASTASIS_RECOVERY_STATE_SECRET_SELECTING); + TALER_ErrorCode_get_hint (ec))); rss->cb (rss->cb_cls, - TALER_EC_NONE, - rss->state); + ec, + estate); free_rss (rss); }