summaryrefslogtreecommitdiff
path: root/src/exchange
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-03-15 22:24:15 +0100
committerChristian Grothoff <christian@grothoff.org>2020-03-15 22:24:15 +0100
commitefdc91ead4a74afb9b858ea3377bbf5581aabb0d (patch)
tree30be70823b36f128565f28b1f676bc4d88dc3f02 /src/exchange
parentf29a7e31558e28a6612a4cc73f0b25309135046f (diff)
downloadexchange-efdc91ead4a74afb9b858ea3377bbf5581aabb0d.tar.gz
exchange-efdc91ead4a74afb9b858ea3377bbf5581aabb0d.tar.bz2
exchange-efdc91ead4a74afb9b858ea3377bbf5581aabb0d.zip
clean up link logic
Diffstat (limited to 'src/exchange')
-rw-r--r--src/exchange/taler-exchange-httpd.c4
-rw-r--r--src/exchange/taler-exchange-httpd_link.c65
-rw-r--r--src/exchange/taler-exchange-httpd_mhd.c16
-rw-r--r--src/exchange/taler-exchange-httpd_responses.c24
-rw-r--r--src/exchange/taler-exchange-httpd_responses.h24
5 files changed, 71 insertions, 62 deletions
diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c
index 8aa2b198b..eba6e42a1 100644
--- a/src/exchange/taler-exchange-httpd.c
+++ b/src/exchange/taler-exchange-httpd.c
@@ -701,7 +701,7 @@ handle_mhd_request (void *cls,
* @return #GNUNET_OK on success
*/
static int
-exchange_serve_process_config ()
+exchange_serve_process_config (void)
{
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_number (TEH_cfg,
@@ -812,7 +812,7 @@ exchange_serve_process_config ()
* stats if requested.
*/
static void
-write_stats ()
+write_stats (void)
{
struct GNUNET_DISK_FileHandle *fh;
pid_t pid = getpid ();
diff --git a/src/exchange/taler-exchange-httpd_link.c b/src/exchange/taler-exchange-httpd_link.c
index 1de8e683d..f1838dacf 100644
--- a/src/exchange/taler-exchange-httpd_link.c
+++ b/src/exchange/taler-exchange-httpd_link.c
@@ -32,13 +32,13 @@
/**
- * Closure for #handle_transfer_data().
+ * Closure for #handle_link_data().
*/
struct HTD_Context
{
/**
- * Public key of the coin for which we are running /refresh/link.
+ * Public key of the coin for which we are running link.
*/
struct TALER_CoinSpendPublicKeyP coin_pub;
@@ -70,10 +70,9 @@ handle_link_data (void *cls,
{
struct HTD_Context *ctx = cls;
json_t *list;
- json_t *root;
if (NULL == ctx->mlist)
- return;
+ return; /* we failed earlier */
if (NULL == (list = json_array ()))
goto fail;
@@ -101,16 +100,20 @@ handle_link_data (void *cls,
goto fail;
}
}
- root = json_pack ("{s:o, s:o}",
- "new_coins",
- list,
- "transfer_pub",
- GNUNET_JSON_from_data_auto (transfer_pub));
- if ( (NULL == root) ||
- (0 !=
- json_array_append_new (ctx->mlist,
- root)) )
- goto fail;
+ {
+ json_t *root;
+
+ root = json_pack ("{s:o, s:o}",
+ "new_coins",
+ list,
+ "transfer_pub",
+ GNUNET_JSON_from_data_auto (transfer_pub));
+ if ( (NULL == root) ||
+ (0 !=
+ json_array_append_new (ctx->mlist,
+ root)) )
+ goto fail;
+ }
return;
fail:
ctx->ec = TALER_EC_JSON_ALLOCATION_FAILURE;
@@ -120,15 +123,13 @@ fail:
/**
- * Execute a "/refresh/link". Returns the linkage information that
- * will allow the owner of a coin to follow the refresh trail to
- * the refreshed coin.
+ * Execute a link operation. Returns the linkage information that will allow
+ * the owner of a coin to follow the trail to the refreshed coin.
*
- * If it returns a non-error code, the transaction logic MUST
- * NOT queue a MHD response. IF it returns an hard error, the
- * transaction logic MUST queue a MHD response and set @a mhd_ret. IF
- * it returns the soft error code, the function MAY be called again to
- * retry and MUST not queue a MHD response.
+ * If it returns a non-error code, the transaction logic MUST NOT queue a MHD
+ * response. IF it returns an hard error, the transaction logic MUST queue a
+ * MHD response and set @a mhd_ret. IF it returns the soft error code, the
+ * function MAY be called again to retry and MUST not queue a MHD response.
*
* @param cls closure
* @param connection MHD request which triggered the transaction
@@ -138,10 +139,10 @@ fail:
* @return transaction status
*/
static enum GNUNET_DB_QueryStatus
-refresh_link_transaction (void *cls,
- struct MHD_Connection *connection,
- struct TALER_EXCHANGEDB_Session *session,
- int *mhd_ret)
+link_transaction (void *cls,
+ struct MHD_Connection *connection,
+ struct TALER_EXCHANGEDB_Session *session,
+ int *mhd_ret)
{
struct HTD_Context *ctx = cls;
enum GNUNET_DB_QueryStatus qs;
@@ -204,11 +205,19 @@ TEH_handler_link (const struct TEH_RequestHandler *rh,
"coin public key malformed");
}
ctx.mlist = json_array ();
+ if (NULL == ctx.mlist)
+ {
+ GNUNET_break (0);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_JSON_ALLOCATION_FAILURE,
+ "json_array() call failed");
+ }
if (GNUNET_OK !=
TEH_DB_run_transaction (connection,
"run link",
&mhd_ret,
- &refresh_link_transaction,
+ &link_transaction,
&ctx))
{
if (NULL != ctx.mlist)
@@ -223,4 +232,4 @@ TEH_handler_link (const struct TEH_RequestHandler *rh,
}
-/* end of taler-exchange-httpd_refresh_link.c */
+/* end of taler-exchange-httpd_link.c */
diff --git a/src/exchange/taler-exchange-httpd_mhd.c b/src/exchange/taler-exchange-httpd_mhd.c
index 6d05aeb64..a0b0d2844 100644
--- a/src/exchange/taler-exchange-httpd_mhd.c
+++ b/src/exchange/taler-exchange-httpd_mhd.c
@@ -33,6 +33,7 @@
#include "taler-exchange-httpd.h"
#include "taler-exchange-httpd_mhd.h"
+
/**
* Function to call to handle the request by sending
* back static data from the @a rh.
@@ -48,7 +49,6 @@ TEH_handler_static_response (const struct TEH_RequestHandler *rh,
const char *const args[])
{
struct MHD_Response *response;
- int ret;
size_t dlen;
(void) args;
@@ -68,11 +68,15 @@ TEH_handler_static_response (const struct TEH_RequestHandler *rh,
(void) MHD_add_response_header (response,
MHD_HTTP_HEADER_CONTENT_TYPE,
rh->mime_type);
- ret = MHD_queue_response (connection,
- rh->response_code,
- response);
- MHD_destroy_response (response);
- return ret;
+ {
+ int ret;
+
+ ret = MHD_queue_response (connection,
+ rh->response_code,
+ response);
+ MHD_destroy_response (response);
+ return ret;
+ }
}
diff --git a/src/exchange/taler-exchange-httpd_responses.c b/src/exchange/taler-exchange-httpd_responses.c
index e2a20243d..cd03ba767 100644
--- a/src/exchange/taler-exchange-httpd_responses.c
+++ b/src/exchange/taler-exchange-httpd_responses.c
@@ -39,10 +39,9 @@
* @return json representation of the @a rh, NULL on error
*/
json_t *
-TEH_RESPONSE_compile_transaction_history (const struct
- TALER_CoinSpendPublicKeyP *coin_pub,
- const struct
- TALER_EXCHANGEDB_TransactionList *tl)
+TEH_RESPONSE_compile_transaction_history (
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_EXCHANGEDB_TransactionList *tl)
{
json_t *history;
@@ -421,12 +420,11 @@ TEH_RESPONSE_compile_transaction_history (const struct
* @return MHD result code
*/
int
-TEH_RESPONSE_reply_coin_insufficient_funds (struct MHD_Connection *connection,
- enum TALER_ErrorCode ec,
- const struct
- TALER_CoinSpendPublicKeyP *coin_pub,
- const struct
- TALER_EXCHANGEDB_TransactionList *tl)
+TEH_RESPONSE_reply_coin_insufficient_funds (
+ struct MHD_Connection *connection,
+ enum TALER_ErrorCode ec,
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_EXCHANGEDB_TransactionList *tl)
{
json_t *history;
@@ -458,9 +456,9 @@ TEH_RESPONSE_reply_coin_insufficient_funds (struct MHD_Connection *connection,
* @return json representation of the @a rh, NULL on error
*/
json_t *
-TEH_RESPONSE_compile_reserve_history (const struct
- TALER_EXCHANGEDB_ReserveHistory *rh,
- struct TALER_Amount *balance)
+TEH_RESPONSE_compile_reserve_history (
+ const struct TALER_EXCHANGEDB_ReserveHistory *rh,
+ struct TALER_Amount *balance)
{
struct TALER_Amount deposit_total;
struct TALER_Amount withdraw_total;
diff --git a/src/exchange/taler-exchange-httpd_responses.h b/src/exchange/taler-exchange-httpd_responses.h
index 07298322f..5dd98174f 100644
--- a/src/exchange/taler-exchange-httpd_responses.h
+++ b/src/exchange/taler-exchange-httpd_responses.h
@@ -42,9 +42,9 @@
* @return json representation of the @a rh, NULL on error
*/
json_t *
-TEH_RESPONSE_compile_reserve_history (const struct
- TALER_EXCHANGEDB_ReserveHistory *rh,
- struct TALER_Amount *balance);
+TEH_RESPONSE_compile_reserve_history (
+ const struct TALER_EXCHANGEDB_ReserveHistory *rh,
+ struct TALER_Amount *balance);
/**
@@ -60,12 +60,11 @@ TEH_RESPONSE_compile_reserve_history (const struct
* @return MHD result code
*/
int
-TEH_RESPONSE_reply_coin_insufficient_funds (struct MHD_Connection *connection,
- enum TALER_ErrorCode ec,
- const struct
- TALER_CoinSpendPublicKeyP *coin_pub,
- const struct
- TALER_EXCHANGEDB_TransactionList *tl);
+TEH_RESPONSE_reply_coin_insufficient_funds (
+ struct MHD_Connection *connection,
+ enum TALER_ErrorCode ec,
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_EXCHANGEDB_TransactionList *tl);
/**
@@ -76,10 +75,9 @@ TEH_RESPONSE_reply_coin_insufficient_funds (struct MHD_Connection *connection,
* @return json representation of the @a rh, NULL on error
*/
json_t *
-TEH_RESPONSE_compile_transaction_history (const struct
- TALER_CoinSpendPublicKeyP *coin_pub,
- const struct
- TALER_EXCHANGEDB_TransactionList *tl);
+TEH_RESPONSE_compile_transaction_history (
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_EXCHANGEDB_TransactionList *tl);
#endif