summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------examples/blog/web-common0
m---------examples/shop/web-common0
-rw-r--r--src/backend/taler-merchant-httpd_track-transaction.c13
3 files changed, 13 insertions, 0 deletions
diff --git a/examples/blog/web-common b/examples/blog/web-common
-Subproject e2931f26c84cd577bba367a3e13cb5c0515c333
+Subproject 026ef2476676ef00b6c2a0cec135a8e64024ee5
diff --git a/examples/shop/web-common b/examples/shop/web-common
-Subproject e2931f26c84cd577bba367a3e13cb5c0515c333
+Subproject 026ef2476676ef00b6c2a0cec135a8e64024ee5
diff --git a/src/backend/taler-merchant-httpd_track-transaction.c b/src/backend/taler-merchant-httpd_track-transaction.c
index 0f1711fc..a2b558d1 100644
--- a/src/backend/taler-merchant-httpd_track-transaction.c
+++ b/src/backend/taler-merchant-httpd_track-transaction.c
@@ -514,6 +514,9 @@ trace_coins (struct TrackTransactionContext *tctx)
struct TrackCoinContext *tcc2;
int found = GNUNET_NO;
+ /* FIXME 1: How can a tcc without wtid (the 'for' loop above
+ looks exactly for wtid-less entries) have the same wtid of
+ another tcc2 ?*/
for (tcc2 = tctx->tcc_head; tcc2 != tcc; tcc2 = tcc2->next)
{
if (0 == memcmp (&tcc->wtid,
@@ -716,6 +719,16 @@ transfer_cb (void *cls,
{
struct TrackCoinContext *tcc = cls;
+ /* FIXME 2: the GNUNET_break statement below should (?) abort/return.
+ (According to gnunet_common.h, it just prints an ERROR-level message.)
+ Otherwise, consider the following scenario: let
+ tcc=coin1,
+ transaction_id=x,
+ transaction x be such that it is paid by coin1 and coin2 but
+ coin1 has been paid back by wtid=1 and coin2 by wtid=2.
+ Since transfer_cb gets called *for each* coin involved in transaction x
+ and tcc remains the same, tcc will get wtid=2, if coin2 is the last in
+ the iteration. */
GNUNET_break (0 == memcmp (coin_pub,
&tcc->coin_pub,
sizeof (struct TALER_CoinSpendPublicKeyP)));