commit 9d119f89e42b1953e0ed8a6f03dccf47b0a7c68d
parent b95af8714afdce4989d27fe9183107c849eb2871
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date: Thu, 15 Sep 2016 20:45:45 +0200
placing FIXMEs in track-transaction
Diffstat:
1 file changed, 13 insertions(+), 0 deletions(-)
diff --git 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)));