add argument to TALER_EXCHANGE_check_keys_current() to allow forcing the download

This commit is contained in:
Christian Grothoff 2017-09-13 14:08:11 +02:00
parent e33d72683c
commit b46735fbaf
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
4 changed files with 18 additions and 5 deletions

1
.gitignore vendored
View File

@ -86,3 +86,4 @@ doc/manual/manual.tp
doc/manual/manual.vr doc/manual/manual.vr
contrib/taler-exchange.tag contrib/taler-exchange.tag
doxygen-doc/ doxygen-doc/
src/exchange-lib/test_exchange_api_keys_cherry_picking

View File

@ -1,3 +1,8 @@
Wed Sep 13 14:06:44 CEST 2017
Add argument to TALER_EXCHANGE_check_keys_current()
to force download even if /keys are still considered
current. -CG
Fri Jul 14 17:38:54 CEST 2017 Fri Jul 14 17:38:54 CEST 2017
Fix #4751 by not allowing denomination deletion (GC) Fix #4751 by not allowing denomination deletion (GC)
to cascade into reserve_out table (and tolerating such to cascade into reserve_out table (and tolerating such

View File

@ -770,14 +770,17 @@ request_keys (struct TALER_EXCHANGE_Handle *exchange);
* not trigger download. * not trigger download.
* *
* @param exchange exchange to check keys for * @param exchange exchange to check keys for
* @param force_download #GNUNET_YES to force download even if /keys is still valid
* @return until when the response is current, 0 if we are re-downloading * @return until when the response is current, 0 if we are re-downloading
*/ */
struct GNUNET_TIME_Absolute struct GNUNET_TIME_Absolute
TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange) TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange,
int force_download)
{ {
if (NULL != exchange->kr) if (NULL != exchange->kr)
return GNUNET_TIME_UNIT_ZERO_ABS; return GNUNET_TIME_UNIT_ZERO_ABS;
if (0 < GNUNET_TIME_absolute_get_remaining (exchange->key_data_expiration).rel_value_us) if ( (GNUNET_NO == force_download) &&
(0 < GNUNET_TIME_absolute_get_remaining (exchange->key_data_expiration).rel_value_us) )
return exchange->key_data_expiration; return exchange->key_data_expiration;
request_keys (exchange); request_keys (exchange);
return GNUNET_TIME_UNIT_ZERO_ABS; return GNUNET_TIME_UNIT_ZERO_ABS;
@ -1280,7 +1283,8 @@ TALER_EXCHANGE_get_denomination_key_by_hash (const struct TALER_EXCHANGE_Keys *k
const struct TALER_EXCHANGE_Keys * const struct TALER_EXCHANGE_Keys *
TALER_EXCHANGE_get_keys (struct TALER_EXCHANGE_Handle *exchange) TALER_EXCHANGE_get_keys (struct TALER_EXCHANGE_Handle *exchange)
{ {
(void) TALER_EXCHANGE_check_keys_current (exchange); (void) TALER_EXCHANGE_check_keys_current (exchange,
GNUNET_NO);
return &exchange->key_data; return &exchange->key_data;
} }
@ -1295,7 +1299,8 @@ TALER_EXCHANGE_get_keys (struct TALER_EXCHANGE_Handle *exchange)
json_t * json_t *
TALER_EXCHANGE_get_keys_raw (struct TALER_EXCHANGE_Handle *exchange) TALER_EXCHANGE_get_keys_raw (struct TALER_EXCHANGE_Handle *exchange)
{ {
(void) TALER_EXCHANGE_check_keys_current (exchange); (void) TALER_EXCHANGE_check_keys_current (exchange,
GNUNET_NO);
return json_deep_copy (exchange->key_data_raw); return json_deep_copy (exchange->key_data_raw);
} }

View File

@ -367,10 +367,12 @@ TALER_EXCHANGE_get_keys (struct TALER_EXCHANGE_Handle *exchange);
* not, trigger /keys download. * not, trigger /keys download.
* *
* @param exchange exchange to check keys for * @param exchange exchange to check keys for
* @param force_download #GNUNET_YES to force download even if /keys is still valid
* @return until when the response is current, 0 if we are re-downloading * @return until when the response is current, 0 if we are re-downloading
*/ */
struct GNUNET_TIME_Absolute struct GNUNET_TIME_Absolute
TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange); TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange,
int force_download);
/** /**