exchange

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

commit 35b232642bc831e8c9759f7ae6180bb2deabed7e
parent 060816eafd6756575e94982e224ac47c8c6e69a6
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Sat, 29 May 2021 10:06:58 +0200

-fix cherry picking, need MAX heap to build correct replies for all cpds

Diffstat:
Msrc/exchange/taler-exchange-httpd_keys.c | 11++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c @@ -1491,7 +1491,7 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh) &sctx); recoup = json_array (); GNUNET_assert (NULL != recoup); - heap = GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN); + heap = GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MAX); { struct DenomKeyCtx dkc = { .recoup = recoup, @@ -1513,6 +1513,7 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh) { struct TEH_DenominationKey *dk; + /* heap = min heap, sorted by start time */ while (NULL != (dk = GNUNET_CONTAINER_heap_remove_root (heap))) { if ( (last_cpd.abs_value_us != dk->meta.start.abs_value_us) && @@ -1755,7 +1756,7 @@ get_key_state (bool management_only) } if (old_ksh->key_generation < key_generation) { - GNUNET_log (GNUNET_ERROR_TYPE_INFO, + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Rebuilding /keys, generation upgrade from %llu to %llu\n", (unsigned long long) old_ksh->key_generation, (unsigned long long) key_generation); @@ -1980,9 +1981,9 @@ krd_search_comparator (const void *key, const struct KeysResponseData *krd = value; if (kd->abs_value_us > krd->cherry_pick_date.abs_value_us) - return 1; - if (kd->abs_value_us < krd->cherry_pick_date.abs_value_us) return -1; + if (kd->abs_value_us < krd->cherry_pick_date.abs_value_us) + return 1; return 0; } @@ -2051,7 +2052,7 @@ TEH_keys_get_handler (const struct TEH_RequestHandler *rh, if ( (NULL == krd) && (ksh->krd_array_length > 0) ) { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Client provided invalid cherry picking timestamp %s, returning full response\n", GNUNET_STRINGS_absolute_time_to_string (last_issue_date)); krd = &ksh->krd_array[ksh->krd_array_length - 1];