diff --git a/ChangeLog b/ChangeLog index e5d3eaf16..506ad357f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +Tue Apr 3 23:29:06 CEST 2018 + Releasing Taler v0.5.0 + Thu Jan 4 11:55:41 CET 2018 Fix issue #5234 (aggregator ignoring refunds). Misc. minor fixes to the auditor. -CG diff --git a/configure.ac b/configure.ac index fedc2cd5a..d28aca89a 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ # # AC_PREREQ([2.69]) -AC_INIT([taler-exchange], [0.4.0], [taler-bug@gnunet.org]) +AC_INIT([taler-exchange], [0.5.0], [taler-bug@gnunet.org]) AC_CONFIG_SRCDIR([src/util/util.c]) AC_CONFIG_HEADERS([taler_config.h]) # support for non-recursive builds diff --git a/src/bank-lib/bank_api_history.c b/src/bank-lib/bank_api_history.c index 17cd9fd07..902165def 100644 --- a/src/bank-lib/bank_api_history.c +++ b/src/bank-lib/bank_api_history.c @@ -158,7 +158,7 @@ parse_account_history (struct TALER_BANK_HistoryHandle *hh, /** * Function called when we're done processing the - * HTTP /admin/add/incoming request. + * HTTP /history request. * * @param cls the `struct TALER_BANK_HistoryHandle` * @param response_code HTTP response code, 0 on error diff --git a/src/bank-lib/testing_api_cmd_history.c b/src/bank-lib/testing_api_cmd_history.c index e94009fb3..6f005360f 100644 --- a/src/bank-lib/testing_api_cmd_history.c +++ b/src/bank-lib/testing_api_cmd_history.c @@ -123,7 +123,8 @@ test_cancelled (struct TALER_TESTING_Interpreter *is, const struct TALER_TESTING_Command *c = &is->commands[i]; - #warning "Errors reported here are NOT fatal" + /* XXX: Errors reported here are NOT fatal */ + /* Rejected wire transfers have hold a reference to a * reject command to mark them as rejected. So errors * about "reject traits" not found are NOT fatal here */ diff --git a/src/exchange-lib/exchange_api_handle.c b/src/exchange-lib/exchange_api_handle.c index e3f8314f4..026fa87aa 100644 --- a/src/exchange-lib/exchange_api_handle.c +++ b/src/exchange-lib/exchange_api_handle.c @@ -867,7 +867,7 @@ keys_completed_cb (void *cls, { /* offsets will map 1:1 */ unsigned int off = aold->denom_keys[j] - kd_old.denom_keys; - + /* FIXME(#5315): this should not be an assert! */ GNUNET_assert (off < kd_old.num_denom_keys); anew->denom_keys[j] = &kd.denom_keys[off]; } @@ -1127,7 +1127,7 @@ request_keys (struct TALER_EXCHANGE_Handle *exchange) GNUNET_assert (NULL == exchange->kr); kr = GNUNET_new (struct KeysRequest); kr->exchange = exchange; - if (GNUNET_YES == MAH_handle_is_ready (exchange)) + if (GNUNET_YES == MAH_handle_is_ready (exchange) && !TALER_EXCHANGE_API_DISABLE_CHERRYPICKING) { char *arg; diff --git a/src/exchange-lib/test_exchange_api_keys_cherry_picking.c b/src/exchange-lib/test_exchange_api_keys_cherry_picking.c index 0fbf1729a..e5fd22a1a 100644 --- a/src/exchange-lib/test_exchange_api_keys_cherry_picking.c +++ b/src/exchange-lib/test_exchange_api_keys_cherry_picking.c @@ -579,7 +579,11 @@ run (void *cls) /* Re-download and check /keys */ { .oc = OC_CHECK_KEYS, .details.check_keys.generation = 2, +#if TALER_EXCHANGE_API_DISABLE_CHERRYPICKING + .details.check_keys.num_denom_keys = 12 +#else .details.check_keys.num_denom_keys = 8 +#endif }, { .oc = OC_END } }; diff --git a/src/exchange-lib/test_exchange_api_keys_cherry_picking_new.c b/src/exchange-lib/test_exchange_api_keys_cherry_picking_new.c index 41d5dac84..aa711436a 100644 --- a/src/exchange-lib/test_exchange_api_keys_cherry_picking_new.c +++ b/src/exchange-lib/test_exchange_api_keys_cherry_picking_new.c @@ -84,7 +84,12 @@ run (void *cls, SIGUSR1), TALER_TESTING_cmd_check_keys ("check-keys-2", - 2, 8, + 2, +#if TALER_EXCHANGE_API_DISABLE_CHERRYPICKING + 12, +#else + 8, +#endif is->exchange), diff --git a/src/exchange-lib/testing_api_cmd_track.c b/src/exchange-lib/testing_api_cmd_track.c index 638329d69..d4f9805a5 100644 --- a/src/exchange-lib/testing_api_cmd_track.c +++ b/src/exchange-lib/testing_api_cmd_track.c @@ -518,16 +518,15 @@ track_transfer_cb return; } - switch (http_status) - { - - if ( - (NULL == tts->expected_total_amount) || - (NULL == tts->expected_wire_fee)) + if ( (NULL == tts->expected_total_amount) || + (NULL == tts->expected_wire_fee) ) GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Expected amount and fee not specified, " "likely to segfault...\n"); + + switch (http_status) + { case MHD_HTTP_OK: if (GNUNET_OK != TALER_string_to_amount (tts->expected_total_amount, diff --git a/src/exchange/taler-exchange-wirewatch.c b/src/exchange/taler-exchange-wirewatch.c index 67fab85ca..a48634eb9 100644 --- a/src/exchange/taler-exchange-wirewatch.c +++ b/src/exchange/taler-exchange-wirewatch.c @@ -328,10 +328,10 @@ reject_cb (void *cls, rt = NULL; if (TALER_EC_NONE != ec) { - fprintf (stderr, - "Failed to wire back transfer `%s': %d\n", - rtc->wtid_s, - ec); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to wire back transfer `%s': %d\n", + rtc->wtid_s, + ec); GNUNET_free (rtc->wtid_s); db_plugin->rollback (db_plugin->cls, rtc->session); @@ -389,10 +389,13 @@ history_cb (void *cls, "End of list. Committing progress!\n"); qs = db_plugin->commit (db_plugin->cls, session); + GNUNET_break (0 <= qs); if ( (GNUNET_YES == delay) && (test_mode) && (NULL == wa_pos->next) ) { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Shutdown due to test mode!\n"); GNUNET_SCHEDULER_shutdown (); return GNUNET_OK; } diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 1b625a7a3..e72e96cc9 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -1953,7 +1953,10 @@ postgres_reserves_in_insert (void *cls, "reserve_create", params); if (0 > qs) + { + GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR != qs); return qs; + } if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs) { /* Maybe DB did not detect serializiability error already, @@ -1980,7 +1983,10 @@ postgres_reserves_in_insert (void *cls, "reserves_in_add_transaction", params); if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) + { + GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR != qs); return qs; + } } if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == reserve_exists) @@ -1999,7 +2005,7 @@ postgres_reserves_in_insert (void *cls, balance)) { /* currency overflow or incompatible currency */ - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Attempt to deposit incompatible amount into reserve\n"); return GNUNET_DB_STATUS_HARD_ERROR; } diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h index 22ca049eb..e5a26e29c 100644 --- a/src/include/taler_exchange_service.h +++ b/src/include/taler_exchange_service.h @@ -31,6 +31,13 @@ /* ********************* /keys *********************** */ +/** + * Temporarily disable cherrypicking until it's fixed. + * See #5315. + */ +#define TALER_EXCHANGE_API_DISABLE_CHERRYPICKING 1 + + /** * List of possible options to be passed to * #TALER_EXCHANGE_connect(). diff --git a/src/wire-plugins/plugin_wire_taler-bank.c b/src/wire-plugins/plugin_wire_taler-bank.c index 2d2235343..743d85b2f 100644 --- a/src/wire-plugins/plugin_wire_taler-bank.c +++ b/src/wire-plugins/plugin_wire_taler-bank.c @@ -905,7 +905,11 @@ bhist_cb (void *cls, sizeof (bserial_id), &wd)) ) whh->hres_cb = NULL; - return; /* do NOT yet clean up! */ + GNUNET_break (NULL != whh->hh); + /* Once we get the sentinel element, the handle becomes invalid. */ + if (TALER_BANK_DIRECTION_NONE == dir) + whh->hh = NULL; + return; } case MHD_HTTP_NO_CONTENT: if (NULL != whh->hres_cb)