diff options
m--------- | examples/blog/web-common | 0 | ||||
m--------- | examples/shop/web-common | 0 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_track-transaction.c | 13 |
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))); |