clean up link logic
This commit is contained in:
parent
f29a7e3155
commit
efdc91ead4
@ -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 ();
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user