summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_track-transaction.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-10-20 15:09:13 +0200
committerChristian Grothoff <christian@grothoff.org>2016-10-20 15:09:13 +0200
commitf02036b3cb59135c5df2fda57627e42f344b5a96 (patch)
tree9cdc6f03c4a872d4d742757dc24515b90810b05b /src/backend/taler-merchant-httpd_track-transaction.c
parent964478942eb1c85114d88e6298f8a8e8759c0ded (diff)
downloadmerchant-f02036b3cb59135c5df2fda57627e42f344b5a96.tar.gz
merchant-f02036b3cb59135c5df2fda57627e42f344b5a96.tar.bz2
merchant-f02036b3cb59135c5df2fda57627e42f344b5a96.zip
add 'code' with error code details to merchant backend error responses (#4497)
Diffstat (limited to 'src/backend/taler-merchant-httpd_track-transaction.c')
-rw-r--r--src/backend/taler-merchant-httpd_track-transaction.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/backend/taler-merchant-httpd_track-transaction.c b/src/backend/taler-merchant-httpd_track-transaction.c
index ad0492b5..50572f2b 100644
--- a/src/backend/taler-merchant-httpd_track-transaction.c
+++ b/src/backend/taler-merchant-httpd_track-transaction.c
@@ -688,7 +688,8 @@ handle_track_transaction_timeout (void *cls)
}
resume_track_transaction_with_response (tctx,
MHD_HTTP_SERVICE_UNAVAILABLE,
- TMH_RESPONSE_make_internal_error ("exchange not reachable"));
+ TMH_RESPONSE_make_internal_error (TALER_EC_PAY_EXCHANGE_TIMEOUT,
+ "exchange not reachable"));
}
@@ -872,11 +873,12 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
MHD_GET_ARGUMENT_KIND,
"id");
if (NULL == str)
- return TMH_RESPONSE_reply_bad_request (connection,
- "id argument missing");
+ return TMH_RESPONSE_reply_arg_missing (connection,
+ TALER_EC_PARAMETER_MISSING,
+ "id");
receiver = MHD_lookup_connection_value (connection,
MHD_GET_ARGUMENT_KIND,
- "receiver");
+ "receiver" /* FIXME: rename to 'instance' */);
if (NULL == receiver)
receiver = "default";
GNUNET_CRYPTO_hash (receiver,
@@ -885,14 +887,16 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
tctx->mi = GNUNET_CONTAINER_multihashmap_get (by_id_map,
&h_receiver);
if (NULL == tctx->mi)
- return TMH_RESPONSE_reply_bad_request (connection,
- "unknown receiver");
+ return TMH_RESPONSE_reply_not_found (connection,
+ TALER_EC_TRACK_TRANSACTION_INSTANCE_UNKNOWN,
+ "unknown instance");
if (1 !=
sscanf (str,
"%llu",
&transaction_id))
- return TMH_RESPONSE_reply_bad_request (connection,
- "id argument must be a number");
+ return TMH_RESPONSE_reply_arg_invalid (connection,
+ TALER_EC_PARAMETER_MALFORMED,
+ "id");
ret = db->find_transaction (db->cls,
transaction_id,
@@ -902,6 +906,7 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
if (GNUNET_NO == ret)
{
return TMH_RESPONSE_reply_not_found (connection,
+ TALER_EC_TRACK_TRANSACTION_TRANSACTION_UNKNOWN,
"id");
}
if ( (GNUNET_SYSERR == ret) ||
@@ -910,6 +915,7 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
{
GNUNET_break (0);
return TMH_RESPONSE_reply_internal_error (connection,
+ TALER_EC_TRACK_TRANSACTION_DB_FETCH_TRANSACTION_ERROR,
"Database error");
}
ret = db->find_payments (db->cls,
@@ -921,11 +927,13 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
{
GNUNET_break (0);
return TMH_RESPONSE_reply_internal_error (connection,
- "Database error");
+ TALER_EC_TRACK_TRANSACTION_DB_FETCH_PAYMENT_ERROR,
+ "Database error");
}
if (GNUNET_NO == ret)
{
return TMH_RESPONSE_reply_not_found (connection,
+ TALER_EC_TRACK_TRANSACTION_DB_NO_DEPOSITS_ERROR,
"deposits");
}
*connection_cls = tctx;
@@ -937,9 +945,10 @@ MH_handler_track_transaction (struct TMH_RequestHandler *rh,
&process_track_transaction_with_exchange,
tctx);
- tctx->timeout_task = GNUNET_SCHEDULER_add_delayed (TRACK_TIMEOUT,
- &handle_track_transaction_timeout,
- tctx);
+ tctx->timeout_task
+ = GNUNET_SCHEDULER_add_delayed (TRACK_TIMEOUT,
+ &handle_track_transaction_timeout,
+ tctx);
return MHD_YES;
}