aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------contrib/wallet-core0
m---------doc/prebuilt0
-rw-r--r--src/auditor/report-lib.c3
-rw-r--r--src/auditor/taler-helper-auditor-aggregation.c54
-rw-r--r--src/auditor/taler-helper-auditor-coins.c2
-rw-r--r--src/auditordb/pg_get_balance.c17
-rw-r--r--src/auditordb/test_auditordb.c13
-rw-r--r--src/exchange/taler-exchange-httpd_coins_get.c1
-rw-r--r--src/exchangedb/pg_commit.c1
-rw-r--r--src/exchangedb/pg_get_coin_transactions.c36
-rw-r--r--src/exchangedb/pg_get_coin_transactions.h2
-rw-r--r--src/exchangedb/test_exchangedb.c2
-rw-r--r--src/include/taler_exchangedb_plugin.h2
13 files changed, 79 insertions, 54 deletions
diff --git a/contrib/wallet-core b/contrib/wallet-core
-Subproject 4c59144f6e2a9b5748de42fa108a3a164cacc4e
+Subproject 5934e007f637bd9834a811e67c0a030d7a59f2c
diff --git a/doc/prebuilt b/doc/prebuilt
-Subproject ab2e09b5a3711ab04f1f77f79158cc006cab319
+Subproject c1a885ac1f9d9b2fdef19a976bed01dab4f7d85
diff --git a/src/auditor/report-lib.c b/src/auditor/report-lib.c
index 6dd20d677..ad7b3d6f3 100644
--- a/src/auditor/report-lib.c
+++ b/src/auditor/report-lib.c
@@ -282,8 +282,7 @@ transact (TALER_ARL_Analysis analysis,
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Processing failed (or no changes), rolling back transaction\n")
- ;
+ "Processing failed; rolling back transaction\n");
TALER_ARL_adb->rollback (TALER_ARL_adb->cls);
TALER_ARL_edb->rollback (TALER_ARL_edb->cls);
}
diff --git a/src/auditor/taler-helper-auditor-aggregation.c b/src/auditor/taler-helper-auditor-aggregation.c
index 0011e3607..5b890a168 100644
--- a/src/auditor/taler-helper-auditor-aggregation.c
+++ b/src/auditor/taler-helper-auditor-aggregation.c
@@ -798,7 +798,9 @@ wire_transfer_information_cb (
{
struct TALER_Amount balance;
struct TALER_DenominationHashP h_denom_pub;
+
qs = TALER_ARL_edb->get_coin_transactions (TALER_ARL_edb->cls,
+ false,
coin_pub,
0,
0,
@@ -1363,34 +1365,34 @@ analyze_aggregations (void *cls)
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == ac.qs);
return ac.qs;
}
- if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qsx)
- {
- qs = TALER_ARL_adb->insert_balance (
- TALER_ARL_adb->cls,
- TALER_ARL_SET_AB (aggregation_total_wire_fee_revenue),
- TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_plus),
- TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_minus),
- TALER_ARL_SET_AB (aggregation_total_bad_sig_loss),
- TALER_ARL_SET_AB (aggregation_total_wire_out_delta_plus),
- TALER_ARL_SET_AB (aggregation_total_wire_out_delta_minus),
- TALER_ARL_SET_AB (aggregation_total_coin_delta_plus),
- NULL);
- }
- else
+ qs = TALER_ARL_adb->insert_balance (
+ TALER_ARL_adb->cls,
+ TALER_ARL_SET_AB (aggregation_total_wire_fee_revenue),
+ TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_plus),
+ TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_minus),
+ TALER_ARL_SET_AB (aggregation_total_bad_sig_loss),
+ TALER_ARL_SET_AB (aggregation_total_wire_out_delta_plus),
+ TALER_ARL_SET_AB (aggregation_total_wire_out_delta_minus),
+ TALER_ARL_SET_AB (aggregation_total_coin_delta_plus),
+ NULL);
+ if (0 > qs)
{
- GNUNET_assert (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qsx);
- qs = TALER_ARL_adb->update_balance (
- TALER_ARL_adb->cls,
- TALER_ARL_SET_AB (aggregation_total_wire_fee_revenue),
- TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_plus),
- TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_minus),
- TALER_ARL_SET_AB (aggregation_total_bad_sig_loss),
- TALER_ARL_SET_AB (aggregation_total_wire_out_delta_plus),
- TALER_ARL_SET_AB (aggregation_total_wire_out_delta_minus),
- TALER_ARL_SET_AB (aggregation_total_coin_delta_plus),
- NULL);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Failed to update auditor DB, not recording progress\n");
+ GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
+ return qs;
}
- if (0 >= qs)
+ qs = TALER_ARL_adb->update_balance (
+ TALER_ARL_adb->cls,
+ TALER_ARL_SET_AB (aggregation_total_wire_fee_revenue),
+ TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_plus),
+ TALER_ARL_SET_AB (aggregation_total_arithmetic_delta_minus),
+ TALER_ARL_SET_AB (aggregation_total_bad_sig_loss),
+ TALER_ARL_SET_AB (aggregation_total_wire_out_delta_plus),
+ TALER_ARL_SET_AB (aggregation_total_wire_out_delta_minus),
+ TALER_ARL_SET_AB (aggregation_total_coin_delta_plus),
+ NULL);
+ if (0 > qs)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Failed to update auditor DB, not recording progress\n");
diff --git a/src/auditor/taler-helper-auditor-coins.c b/src/auditor/taler-helper-auditor-coins.c
index f21d9fca4..b3bc4cbe6 100644
--- a/src/auditor/taler-helper-auditor-coins.c
+++ b/src/auditor/taler-helper-auditor-coins.c
@@ -453,7 +453,9 @@ check_coin_history (const struct TALER_CoinSpendPublicKeyP *coin_pub,
{
struct TALER_Amount balance;
struct TALER_DenominationHashP h_denom_pub;
+
qs = TALER_ARL_edb->get_coin_transactions (TALER_ARL_edb->cls,
+ false,
coin_pub,
0,
0,
diff --git a/src/auditordb/pg_get_balance.c b/src/auditordb/pg_get_balance.c
index 2bacbb507..7a0b7c38c 100644
--- a/src/auditordb/pg_get_balance.c
+++ b/src/auditordb/pg_get_balance.c
@@ -80,13 +80,12 @@ balance_cb (void *cls,
GNUNET_assert (num_results <= ctx->len);
for (unsigned int i = 0; i < num_results; i++)
{
- bool is_missing = false;
struct GNUNET_PQ_ResultSpec rs[] = {
GNUNET_PQ_result_spec_allow_null (
TALER_PQ_result_spec_amount ("balance",
pg->currency,
ctx->dst[i]),
- &is_missing),
+ NULL),
GNUNET_PQ_result_spec_end
};
@@ -99,11 +98,6 @@ balance_cb (void *cls,
ctx->failure = true;
return;
}
- if (is_missing)
- {
- TALER_amount_set_zero (pg->currency,
- ctx->dst[i]);
- }
ctx->off++;
}
}
@@ -124,9 +118,13 @@ TAH_PG_get_balance (void *cls,
while (NULL != va_arg (ap,
const char *))
{
+ struct TALER_Amount *dst;
+
cnt++;
- (void) va_arg (ap,
- struct TALER_Amount *);
+ dst = va_arg (ap,
+ struct TALER_Amount *);
+ TALER_amount_set_zero (pg->currency,
+ dst);
}
va_end (ap);
{
@@ -148,7 +146,6 @@ TAH_PG_get_balance (void *cls,
keys[0] = balance_key;
dsts[0] = balance_value;
-
va_start (ap,
balance_value);
while (off < cnt)
diff --git a/src/auditordb/test_auditordb.c b/src/auditordb/test_auditordb.c
index b72e95ab1..ab08a9bb7 100644
--- a/src/auditordb/test_auditordb.c
+++ b/src/auditordb/test_auditordb.c
@@ -106,6 +106,7 @@ static struct TALER_Amount reserve_profits;
static enum GNUNET_GenericReturnValue
select_historic_denom_revenue_result (
void *cls,
+ uint64_t rowid,
const struct TALER_DenominationHashP *denom_pub_hash2,
struct GNUNET_TIME_Timestamp revenue_timestamp2,
const struct TALER_Amount *revenue_balance2,
@@ -144,6 +145,7 @@ select_historic_denom_revenue_result (
static enum GNUNET_GenericReturnValue
select_historic_reserve_revenue_result (
void *cls,
+ uint64_t rowid,
struct GNUNET_TIME_Timestamp start_time2,
struct GNUNET_TIME_Timestamp end_time2,
const struct TALER_Amount *reserve_profits2)
@@ -414,6 +416,8 @@ run (void *cls)
FAILIF (0 >=
plugin->select_historic_denom_revenue (
plugin->cls,
+ 0,
+ 1024,
&select_historic_denom_revenue_result,
NULL));
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -434,9 +438,12 @@ run (void *cls)
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Test: select_historic_reserve_revenue\n");
FAILIF (0 >=
- plugin->select_historic_reserve_revenue (plugin->cls,
- select_historic_reserve_revenue_result,
- NULL));
+ plugin->select_historic_reserve_revenue (
+ plugin->cls,
+ 0,
+ 1024,
+ &select_historic_reserve_revenue_result,
+ NULL));
FAILIF (0 >
plugin->commit (plugin->cls));
diff --git a/src/exchange/taler-exchange-httpd_coins_get.c b/src/exchange/taler-exchange-httpd_coins_get.c
index 8644395e5..7d61fd5a4 100644
--- a/src/exchange/taler-exchange-httpd_coins_get.c
+++ b/src/exchange/taler-exchange-httpd_coins_get.c
@@ -609,6 +609,7 @@ TEH_handler_coins_get (struct TEH_RequestContext *rc,
enum GNUNET_DB_QueryStatus qs;
qs = TEH_plugin->get_coin_transactions (TEH_plugin->cls,
+ true,
coin_pub,
start_off,
etag_in,
diff --git a/src/exchangedb/pg_commit.c b/src/exchangedb/pg_commit.c
index 8c4f87c90..66adfd79b 100644
--- a/src/exchangedb/pg_commit.c
+++ b/src/exchangedb/pg_commit.c
@@ -45,7 +45,6 @@ TEH_PG_commit (void *cls)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Committing transaction `%s'\n",
pg->transaction_name);
- /* used in #postgres_commit */
PREPARE (pg,
"do_commit",
"COMMIT");
diff --git a/src/exchangedb/pg_get_coin_transactions.c b/src/exchangedb/pg_get_coin_transactions.c
index b2db935a5..56fb55db3 100644
--- a/src/exchangedb/pg_get_coin_transactions.c
+++ b/src/exchangedb/pg_get_coin_transactions.c
@@ -807,6 +807,7 @@ handle_history_entry (void *cls,
enum GNUNET_DB_QueryStatus
TEH_PG_get_coin_transactions (
void *cls,
+ bool begin_transaction,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
uint64_t start_off,
uint64_t etag_in,
@@ -1010,7 +1011,7 @@ TEH_PG_get_coin_transactions (
" ON (denoms.denominations_serial = coins.denominations_serial)"
" WHERE rcp.recoup_uuid=$2"
" AND coins.coin_pub=$1;");
- /* Used in #postgres_get_coin_transactions() to obtain recoup transactions
+ /* Used to obtain recoup transactions
for a refreshed coin */
PREPARE (pg,
"recoup_by_refreshed_coin",
@@ -1062,12 +1063,15 @@ TEH_PG_get_coin_transactions (
GNUNET_PQ_result_spec_end
};
- if (GNUNET_OK !=
- TEH_PG_start_read_committed (pg,
- "get-coin-transactions"))
+ if (begin_transaction)
{
- GNUNET_break (0);
- return GNUNET_DB_STATUS_HARD_ERROR;
+ if (GNUNET_OK !=
+ TEH_PG_start_read_committed (pg,
+ "get-coin-transactions"))
+ {
+ GNUNET_break (0);
+ return GNUNET_DB_STATUS_HARD_ERROR;
+ }
}
/* First only check the last item, to see if
we even need to iterate */
@@ -1079,13 +1083,16 @@ TEH_PG_get_coin_transactions (
switch (qs)
{
case GNUNET_DB_STATUS_HARD_ERROR:
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
return qs;
case GNUNET_DB_STATUS_SOFT_ERROR:
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
continue;
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
return qs;
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
*etag_out = end;
@@ -1107,21 +1114,26 @@ TEH_PG_get_coin_transactions (
switch (qs)
{
case GNUNET_DB_STATUS_HARD_ERROR:
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
return qs;
case GNUNET_DB_STATUS_SOFT_ERROR:
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
continue;
default:
break;
}
if (chc.failed)
{
- TEH_PG_rollback (pg);
+ if (begin_transaction)
+ TEH_PG_rollback (pg);
TEH_COMMON_free_coin_transaction_list (pg,
chc.head);
return GNUNET_DB_STATUS_SOFT_ERROR;
}
+ if (! begin_transaction)
+ return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
qs = TEH_PG_commit (pg);
switch (qs)
{
diff --git a/src/exchangedb/pg_get_coin_transactions.h b/src/exchangedb/pg_get_coin_transactions.h
index 46e32e094..c844a51f2 100644
--- a/src/exchangedb/pg_get_coin_transactions.h
+++ b/src/exchangedb/pg_get_coin_transactions.h
@@ -34,6 +34,7 @@
* to the last row ID of the given @a coin_pub in the coin history table.
*
* @param cls the @e cls of this struct with the plugin-specific state
+ * @param begin_transaction true to run this in its own transaction(s)
* @param coin_pub coin to investigate
* @param start_off starting offset from which on to return entries
* @param etag_in up to this offset the client already has a response, do not
@@ -49,6 +50,7 @@
enum GNUNET_DB_QueryStatus
TEH_PG_get_coin_transactions (
void *cls,
+ bool begin_transaction,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
uint64_t start_off,
uint64_t etag_in,
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index cb78d0544..4868e1501 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -1739,6 +1739,7 @@ run (void *cls)
struct TALER_DenominationHashP h_denom_pub;
qs = plugin->get_coin_transactions (plugin->cls,
+ true,
&refresh.coin.coin_pub,
0,
0,
@@ -2004,6 +2005,7 @@ run (void *cls)
struct TALER_DenominationHashP h_denom_pub;
qs = plugin->get_coin_transactions (plugin->cls,
+ true,
&refund.coin.coin_pub,
0,
0,
diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h
index 2037fde95..e5c03cd72 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -4854,6 +4854,7 @@ struct TALER_EXCHANGEDB_Plugin
* to the last row ID of the given @a coin_pub in the coin history table.
*
* @param cls the @e cls of this struct with the plugin-specific state
+ * @param begin_transaction true to run this in its own transaction(s)
* @param coin_pub coin to investigate
* @param start_off starting offset from which on to return entries
* @param etag_in up to this offset the client already has a response, do not
@@ -4869,6 +4870,7 @@ struct TALER_EXCHANGEDB_Plugin
enum GNUNET_DB_QueryStatus
(*get_coin_transactions)(
void *cls,
+ bool begin_transaction,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
uint64_t start_off,
uint64_t etag_in,