From d7ccfad6103f131afe297e3381b636bf59ce2dfa Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 16 Jan 2020 14:30:01 +0100 Subject: fix history API --- doc/prebuilt | 2 +- src/bank-lib/fakebank.c | 84 +++++++++++++++------- .../taler-exchange-httpd_reserve_withdraw.c | 21 +----- src/lib/testing_api_cmd_batch.c | 4 +- 4 files changed, 63 insertions(+), 48 deletions(-) diff --git a/doc/prebuilt b/doc/prebuilt index ca53235cc..934a6a183 160000 --- a/doc/prebuilt +++ b/doc/prebuilt @@ -1 +1 @@ -Subproject commit ca53235ccfa0458ebf11c204888ca370e20ec3f5 +Subproject commit 934a6a18301e81c4fd1b3a8cda2dc13dca4741cc diff --git a/src/bank-lib/fakebank.c b/src/bank-lib/fakebank.c index 71f752111..2286d8ec1 100644 --- a/src/bank-lib/fakebank.c +++ b/src/bank-lib/fakebank.c @@ -16,7 +16,6 @@ License along with TALER; see the file COPYING. If not, see */ - /** * @file bank-lib/fakebank.c * @brief library that fakes being a Taler bank for testcases @@ -426,12 +425,6 @@ TALER_FAKEBANK_make_admin_transfer (struct TALER_FAKEBANK_Handle *h, GNUNET_break (0 != strncasecmp ("payto://", credit_account, strlen ("payto://"))); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Making transfer from %s to %s over %s and subject %s\n", - debit_account, - credit_account, - TALER_amount2s (amount), - TALER_B2S (reserve_pub)); t = GNUNET_new (struct Transaction); t->debit_account = GNUNET_strdup (debit_account); t->credit_account = GNUNET_strdup (credit_account); @@ -444,6 +437,13 @@ TALER_FAKEBANK_make_admin_transfer (struct TALER_FAKEBANK_Handle *h, GNUNET_CONTAINER_DLL_insert_tail (h->transactions_head, h->transactions_tail, t); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Making transfer from %s to %s over %s and subject %s at row %llu\n", + debit_account, + credit_account, + TALER_amount2s (amount), + TALER_B2S (reserve_pub), + (unsigned long long) t->row_id); return t->row_id; } @@ -612,17 +612,17 @@ handle_admin_add_incoming (struct TALER_FAKEBANK_Handle *h, return MHD_NO; } debit = TALER_xtalerbank_account_from_payto (debit_account); - row_id = TALER_FAKEBANK_make_admin_transfer (h, - debit, - account, - &amount, - &reserve_pub); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Receiving incoming wire transfer: %s->%s, subject: %s, amount: %s\n", debit, account, TALER_B2S (&reserve_pub), TALER_amount2s (&amount)); + row_id = TALER_FAKEBANK_make_admin_transfer (h, + debit, + account, + &amount, + &reserve_pub); GNUNET_free (debit); } json_decref (json); @@ -870,6 +870,11 @@ parse_history_common_args (struct MHD_Connection *connection, else ha->start_idx = (uint64_t) sval; ha->delta = (int64_t) d; + if (0 == ha->delta) + { + GNUNET_break (0); + return GNUNET_NO; + } ha->lp_timeout = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, lp_timeout); @@ -923,9 +928,9 @@ handle_debit_history (struct TALER_FAKEBANK_Handle *h, return MHD_NO; } /* range is exclusive, skip the matching entry */ - if (ha.delta > 0) - pos = pos->next; - if (ha.delta < 0) + if (0 > ha.delta) + pos = pos->prev; + else pos = pos->prev; } else @@ -970,9 +975,9 @@ handle_debit_history (struct TALER_FAKEBANK_Handle *h, else ha.delta++; } - if (ha.delta > 0) + if (0 > ha.delta) pos = pos->prev; - else + if (0 < ha.delta) pos = pos->next; } return TALER_MHD_reply_json_pack (connection, @@ -1018,8 +1023,17 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h, for (pos = h->transactions_head; NULL != pos; pos = pos->next) + { if (pos->row_id == ha.start_idx) break; + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Skipping transaction %s->%s (%s) at %llu (looking for start index %llu)\n", + pos->debit_account, + pos->credit_account, + TALER_B2S (&pos->subject.credit.reserve_pub), + (unsigned long long) pos->row_id, + (unsigned long long) ha.start_idx); + } if (NULL == pos) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, @@ -1028,10 +1042,16 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h, return MHD_NO; } /* range is exclusive, skip the matching entry */ - if (ha.delta > 0) - pos = pos->next; - if (ha.delta < 0) + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Skipping transaction %s->%s (%s) (start index %llu is exclusive)\n", + pos->debit_account, + pos->credit_account, + TALER_B2S (&pos->subject.credit.reserve_pub), + (unsigned long long) ha.start_idx); + if (0 > ha.delta) pos = pos->prev; + else + pos = pos->next; } else { @@ -1055,10 +1075,11 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h, debit_payto = TALER_payto_xtalerbank_make (h->my_baseurl, pos->debit_account); GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Returning transaction %s->%s (%s)\n", - debit_payto, - credit_payto, - TALER_B2S (&pos->subject)); + "Returning transaction %s->%s (%s) at %llu\n", + pos->debit_account, + pos->credit_account, + TALER_B2S (&pos->subject.credit.reserve_pub), + (unsigned long long) pos->row_id); trans = json_pack ("{s:I, s:o, s:o, s:s, s:s, s:o}", "row_id", (json_int_t) pos->row_id, @@ -1067,7 +1088,7 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h, "credit_account", credit_payto, "debit_account", debit_payto, "reserve_pub", GNUNET_JSON_from_data_auto ( - &pos->subject.credit)); + &pos->subject.credit.reserve_pub)); GNUNET_free (credit_payto); GNUNET_free (debit_payto); GNUNET_assert (0 == @@ -1078,9 +1099,18 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h, else ha.delta++; } - if (ha.delta > 0) + else if (T_CREDIT == pos->type) + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Skipping transaction %s->%s (%s) at row %llu\n", + pos->debit_account, + pos->credit_account, + TALER_B2S (&pos->subject.credit.reserve_pub), + (unsigned long long) pos->row_id); + } + if (0 > ha.delta) pos = pos->prev; - else + if (0 < ha.delta) pos = pos->next; } return TALER_MHD_reply_json_pack (connection, diff --git a/src/exchange/taler-exchange-httpd_reserve_withdraw.c b/src/exchange/taler-exchange-httpd_reserve_withdraw.c index 8b59817a7..86633cd98 100644 --- a/src/exchange/taler-exchange-httpd_reserve_withdraw.c +++ b/src/exchange/taler-exchange-httpd_reserve_withdraw.c @@ -231,24 +231,9 @@ withdraw_transaction (void *cls, /* Check if balance is sufficient */ r.pub = wc->wsrd.reserve_pub; - - /** - * Debug block. - */ - { -#define PUBSIZE 80 - char pub_s[PUBSIZE]; - - GNUNET_break - (NULL != GNUNET_STRINGS_data_to_string (&r.pub, - sizeof (r.pub), - &pub_s[0], - PUBSIZE)); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Trying to withdraw from reserve: %s\n", - pub_s); - } - + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Trying to withdraw from reserve: %s\n", + TALER_B2S (&r.pub)); qs = TEH_plugin->reserve_get (TEH_plugin->cls, session, &r); diff --git a/src/lib/testing_api_cmd_batch.c b/src/lib/testing_api_cmd_batch.c index 84bd51b69..f3d162593 100644 --- a/src/lib/testing_api_cmd_batch.c +++ b/src/lib/testing_api_cmd_batch.c @@ -60,8 +60,8 @@ batch_run (void *cls, struct BatchState *bs = cls; if (NULL != bs->batch[bs->batch_ip].label) - TALER_LOG_DEBUG ("Running batched command: %s\n", - bs->batch[bs->batch_ip].label); + TALER_LOG_INFO ("Running batched command: %s\n", + bs->batch[bs->batch_ip].label); /* hit end command, leap to next top-level command. */ if (NULL == bs->batch[bs->batch_ip].label) -- cgit v1.2.3