summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_track-transaction.c
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2017-02-07 19:08:47 +0100
committerMarcello Stanisci <marcello.stanisci@inria.fr>2017-02-07 19:08:47 +0100
commit1dc680a189a75bfca13bfc590d29e9e1dacfc89a (patch)
tree3063754c4e749506837aab149d5e63bcc1355530 /src/backend/taler-merchant-httpd_track-transaction.c
parent17e344a8aea027132631d8a423391fb9f77da2dc (diff)
downloadmerchant-1dc680a189a75bfca13bfc590d29e9e1dacfc89a.tar.gz
merchant-1dc680a189a75bfca13bfc590d29e9e1dacfc89a.tar.bz2
merchant-1dc680a189a75bfca13bfc590d29e9e1dacfc89a.zip
Huge renaming about removing transaction_id use
Diffstat (limited to 'src/backend/taler-merchant-httpd_track-transaction.c')
-rw-r--r--src/backend/taler-merchant-httpd_track-transaction.c51
1 files changed, 32 insertions, 19 deletions
diff --git a/src/backend/taler-merchant-httpd_track-transaction.c b/src/backend/taler-merchant-httpd_track-transaction.c
index aeb25637..94b3f6d1 100644
--- a/src/backend/taler-merchant-httpd_track-transaction.c
+++ b/src/backend/taler-merchant-httpd_track-transaction.c
@@ -205,6 +205,11 @@ struct TrackTransactionContext
const char *transaction_id;
/**
+ * Proposal's hashcode.
+ */
+ struct GNUNET_HashCode h_proposal_data;
+
+ /**
* Response code to return upon resume.
*/
unsigned int response_code;
@@ -397,7 +402,7 @@ wire_deposits_cb (void *cls,
if (GNUNET_OK !=
db->store_coin_to_transfer (db->cls,
- details[i].transaction_id,
+ &details[i].h_proposal_data,
&details[i].coin_pub,
&tctx->current_wtid))
{
@@ -563,8 +568,8 @@ trace_coins (struct TrackTransactionContext *tctx)
tcc->dwh = TALER_EXCHANGE_track_transaction (tctx->eh,
&tctx->mi->privkey,
&tctx->h_wire,
+ &tctx->h_proposal_data,
&tcc->coin_pub,
- 0, /*FIXME: tid*/
&wtid_cb,
tcc);
return;
@@ -715,6 +720,7 @@ handle_track_transaction_timeout (void *cls)
/**
* Function called with information about a transaction.
+ * Its duty is to fill up the "context" for the whole operation.
*
* @param cls closure
* @param transaction_id of the contract
@@ -730,7 +736,7 @@ static void
transaction_cb (void *cls,
const struct TALER_MerchantPublicKeyP *merchant_pub,
const char *exchange_uri,
- const char *transaction_id,
+ const struct GNUNET_HashCode *h_proposal_data,
const struct GNUNET_HashCode *h_wire,
struct GNUNET_TIME_Absolute timestamp,
struct GNUNET_TIME_Absolute refund,
@@ -738,7 +744,7 @@ transaction_cb (void *cls,
{
struct TrackTransactionContext *tctx = cls;
- tctx->transaction_id = GNUNET_strdup (transaction_id);
+ tctx->h_proposal_data = *h_proposal_data;
tctx->exchange_uri = GNUNET_strdup (exchange_uri);
tctx->h_wire = *h_wire;
tctx->timestamp = timestamp;
@@ -766,7 +772,7 @@ transaction_cb (void *cls,
*/
static void
transfer_cb (void *cls,
- const char *transaction_id,
+ const struct GNUNET_HashCode *h_proposal_data,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
const struct TALER_WireTransferIdentifierRawP *wtid,
struct GNUNET_TIME_Absolute execution_time,
@@ -796,7 +802,7 @@ transfer_cb (void *cls,
*/
static void
coin_cb (void *cls,
- const char *transaction_id,
+ const struct GNUNET_HashCode *h_proposal_data,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
const struct TALER_Amount *amount_with_fee,
const struct TALER_Amount *deposit_fee,
@@ -814,10 +820,10 @@ coin_cb (void *cls,
tctx->tcc_tail,
tcc);
GNUNET_break (GNUNET_SYSERR !=
- db->find_transfers_by_id (db->cls,
- transaction_id,
- &transfer_cb,
- tcc));
+ db->find_transfers_by_hash (db->cls,
+ h_proposal_data,
+ &transfer_cb,
+ tcc));
}
/**
@@ -838,10 +844,11 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
size_t *upload_data_size)
{
struct TrackTransactionContext *tctx;
- const char *transaction_id;
+ const char *h_proposal_data_str;
const char *instance;
int ret;
struct GNUNET_HashCode h_instance;
+ struct GNUNET_HashCode h_proposal_data;
if (NULL == *connection_cls)
{
@@ -886,13 +893,13 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
"Not sure why we are here, should be suspended\n");
return MHD_YES; /* still work in progress */
}
- transaction_id = MHD_lookup_connection_value (connection,
- MHD_GET_ARGUMENT_KIND,
- "id");
- if (NULL == transaction_id)
+ h_proposal_data_str = MHD_lookup_connection_value (connection,
+ MHD_GET_ARGUMENT_KIND,
+ "hash");
+ if (NULL == h_proposal_data_str)
return TMH_RESPONSE_reply_arg_missing (connection,
TALER_EC_PARAMETER_MISSING,
- "id");
+ "hash");
instance = MHD_lookup_connection_value (connection,
MHD_GET_ARGUMENT_KIND,
"instance");
@@ -901,6 +908,10 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
GNUNET_CRYPTO_hash (instance,
strlen (instance),
&h_instance);
+ GNUNET_CRYPTO_hash (h_proposal_data_str,
+ strlen (h_proposal_data_str),
+ &h_proposal_data);
+
tctx->mi = GNUNET_CONTAINER_multihashmap_get (by_id_map,
&h_instance);
if (NULL == tctx->mi)
@@ -908,7 +919,7 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
TALER_EC_TRACK_TRANSACTION_INSTANCE_UNKNOWN,
"unknown instance");
ret = db->find_transaction (db->cls,
- transaction_id,
+ &h_proposal_data,
&tctx->mi->pubkey,
&transaction_cb,
tctx);
@@ -919,7 +930,9 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
"id");
}
if ( (GNUNET_SYSERR == ret) ||
- (0 != strcmp (tctx->transaction_id, transaction_id)) ||
+ (0 != memcmp (&tctx->h_proposal_data,
+ &h_proposal_data,
+ sizeof (struct GNUNET_HashCode))) ||
(NULL == tctx->exchange_uri) )
{
GNUNET_break (0);
@@ -928,7 +941,7 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
"Database error");
}
ret = db->find_payments (db->cls,
- transaction_id,
+ &h_proposal_data,
&tctx->mi->pubkey,
&coin_cb,
tctx);