summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_track-transaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/taler-merchant-httpd_track-transaction.c')
-rw-r--r--src/backend/taler-merchant-httpd_track-transaction.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/backend/taler-merchant-httpd_track-transaction.c b/src/backend/taler-merchant-httpd_track-transaction.c
index d2e95e51..b5b883cb 100644
--- a/src/backend/taler-merchant-httpd_track-transaction.c
+++ b/src/backend/taler-merchant-httpd_track-transaction.c
@@ -43,6 +43,10 @@
*/
struct TrackTransactionContext;
+/**
+ * Merchant instance being tracked
+ */
+struct MerchantInstance;
/**
* Information we keep for each coin in a /track/transaction operation.
@@ -205,6 +209,11 @@ struct TrackTransactionContext
*/
unsigned int response_code;
+ /**
+ * Which merchant instance is being tracked
+ */
+ struct MerchantInstance *mi;
+
};
@@ -591,7 +600,7 @@ trace_coins (struct TrackTransactionContext *tctx)
return;
}
tcc->dwh = TALER_EXCHANGE_track_transaction (tctx->eh,
- &privkey,
+ &tctx->mi->privkey,
&tctx->h_wire,
&tctx->h_contract,
&tcc->coin_pub,
@@ -752,6 +761,7 @@ coin_cb (void *cls,
tcc));
}
+extern struct MerchantInstance **instances;
/**
* Handle a "/track/transaction" request.
@@ -773,6 +783,8 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
struct TrackTransactionContext *tctx;
unsigned long long transaction_id;
const char *str;
+ const char *receiver;
+ unsigned int i;
int ret;
if (NULL == *connection_cls)
@@ -824,6 +836,20 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
if (NULL == str)
return TMH_RESPONSE_reply_bad_request (connection,
"id argument missing");
+ receiver = MHD_lookup_connection_value (connection,
+ MHD_GET_ARGUMENT_KIND,
+ "receiver");
+ if (NULL == receiver)
+ receiver = "default";
+
+ tctx->mi = NULL;
+ for (i=0; NULL != instances[i]; i++)
+ if (0 == strcmp (receiver, instances[i]->id))
+ tctx->mi = instances[i];
+
+ if (NULL == tctx->mi)
+ return TMH_RESPONSE_reply_bad_request (connection,
+ "unknown receiver");
if (1 !=
sscanf (str,
"%llu",