move ensure_coin_known for melt and recoup outside of transaction, more logging
This commit is contained in:
parent
2e6e2387b8
commit
9d3f7d3a56
@ -162,13 +162,6 @@ deposit_transaction (void *cls,
|
||||
enum GNUNET_DB_QueryStatus qs;
|
||||
struct TALER_Amount deposit_fee;
|
||||
|
||||
/* make sure coin is 'known' in database */
|
||||
qs = TEH_make_coin_known (&deposit->coin,
|
||||
connection,
|
||||
mhd_ret);
|
||||
if (qs < 0)
|
||||
return qs;
|
||||
|
||||
/* Check for idempotency: did we get this request before? */
|
||||
qs = TEH_plugin->have_deposit (TEH_plugin->cls,
|
||||
deposit,
|
||||
@ -490,6 +483,31 @@ TEH_handler_deposit (struct MHD_Connection *connection,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (GNUNET_SYSERR ==
|
||||
TEH_plugin->preflight (TEH_plugin->cls))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
return TALER_MHD_reply_with_error (connection,
|
||||
MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||
TALER_EC_GENERIC_DB_START_FAILED,
|
||||
"preflight failure");
|
||||
}
|
||||
|
||||
{
|
||||
MHD_RESULT mhd_ret = MHD_NO;
|
||||
enum GNUNET_DB_QueryStatus qs;
|
||||
|
||||
/* make sure coin is 'known' in database */
|
||||
qs = TEH_make_coin_known (&deposit.coin,
|
||||
connection,
|
||||
&mhd_ret);
|
||||
/* no transaction => no serialization failures should be possible */
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR != qs);
|
||||
if (qs < 0)
|
||||
return mhd_ret;
|
||||
}
|
||||
|
||||
|
||||
/* execute transaction */
|
||||
{
|
||||
MHD_RESULT mhd_ret;
|
||||
|
@ -380,6 +380,16 @@ static MHD_RESULT
|
||||
handle_melt (struct MHD_Connection *connection,
|
||||
struct MeltContext *rmc)
|
||||
{
|
||||
if (GNUNET_SYSERR ==
|
||||
TEH_plugin->preflight (TEH_plugin->cls))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
return TALER_MHD_reply_with_error (connection,
|
||||
MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||
TALER_EC_GENERIC_DB_START_FAILED,
|
||||
"preflight failure");
|
||||
}
|
||||
|
||||
/* verify signature of coin for melt operation */
|
||||
{
|
||||
struct TALER_RefreshMeltCoinAffirmationPS body = {
|
||||
|
@ -130,13 +130,6 @@ recoup_transaction (void *cls,
|
||||
enum GNUNET_DB_QueryStatus qs;
|
||||
int existing_recoup_found;
|
||||
|
||||
/* make sure coin is 'known' in database */
|
||||
qs = TEH_make_coin_known (pc->coin,
|
||||
connection,
|
||||
mhd_ret);
|
||||
if (qs < 0)
|
||||
return qs;
|
||||
|
||||
/* Check whether a recoup is allowed, and if so, to which
|
||||
reserve / account the money should go */
|
||||
if (pc->refreshed)
|
||||
@ -471,6 +464,21 @@ verify_and_execute_recoup (
|
||||
pc.coin_bks = coin_bks;
|
||||
pc.coin = coin;
|
||||
pc.refreshed = refreshed;
|
||||
|
||||
{
|
||||
MHD_RESULT mhd_ret = MHD_NO;
|
||||
enum GNUNET_DB_QueryStatus qs;
|
||||
|
||||
/* make sure coin is 'known' in database */
|
||||
qs = TEH_make_coin_known (coin,
|
||||
connection,
|
||||
&mhd_ret);
|
||||
/* no transaction => no serialization failures should be possible */
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR != qs);
|
||||
if (qs < 0)
|
||||
return mhd_ret;
|
||||
}
|
||||
|
||||
{
|
||||
MHD_RESULT mhd_ret;
|
||||
|
||||
|
@ -5778,6 +5778,8 @@ postgres_ensure_coin_known (void *cls,
|
||||
GNUNET_break (0);
|
||||
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
||||
case GNUNET_DB_STATUS_SOFT_ERROR:
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||
"Serialization failure in insert_known_coin? Strange!\n");
|
||||
return TALER_EXCHANGEDB_CKS_SOFT_FAIL;
|
||||
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
|
||||
/* continued below */
|
||||
@ -5794,8 +5796,11 @@ postgres_ensure_coin_known (void *cls,
|
||||
switch (qs)
|
||||
{
|
||||
case GNUNET_DB_STATUS_HARD_ERROR:
|
||||
GNUNET_break (0);
|
||||
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
||||
case GNUNET_DB_STATUS_SOFT_ERROR:
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||
"Serialization failure in get_known_coin_dh? Strange!\n");
|
||||
return TALER_EXCHANGEDB_CKS_SOFT_FAIL;
|
||||
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
||||
if (0 == GNUNET_memcmp (&denom_pub_hash,
|
||||
@ -5865,7 +5870,6 @@ postgres_insert_deposit (void *cls,
|
||||
&kyc);
|
||||
if (qs <= 0)
|
||||
{
|
||||
GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user