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;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
struct TALER_Amount deposit_fee;
|
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? */
|
/* Check for idempotency: did we get this request before? */
|
||||||
qs = TEH_plugin->have_deposit (TEH_plugin->cls,
|
qs = TEH_plugin->have_deposit (TEH_plugin->cls,
|
||||||
deposit,
|
deposit,
|
||||||
@ -490,6 +483,31 @@ TEH_handler_deposit (struct MHD_Connection *connection,
|
|||||||
NULL);
|
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 */
|
/* execute transaction */
|
||||||
{
|
{
|
||||||
MHD_RESULT mhd_ret;
|
MHD_RESULT mhd_ret;
|
||||||
|
@ -380,6 +380,16 @@ static MHD_RESULT
|
|||||||
handle_melt (struct MHD_Connection *connection,
|
handle_melt (struct MHD_Connection *connection,
|
||||||
struct MeltContext *rmc)
|
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 */
|
/* verify signature of coin for melt operation */
|
||||||
{
|
{
|
||||||
struct TALER_RefreshMeltCoinAffirmationPS body = {
|
struct TALER_RefreshMeltCoinAffirmationPS body = {
|
||||||
|
@ -130,13 +130,6 @@ recoup_transaction (void *cls,
|
|||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
int existing_recoup_found;
|
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
|
/* Check whether a recoup is allowed, and if so, to which
|
||||||
reserve / account the money should go */
|
reserve / account the money should go */
|
||||||
if (pc->refreshed)
|
if (pc->refreshed)
|
||||||
@ -471,6 +464,21 @@ verify_and_execute_recoup (
|
|||||||
pc.coin_bks = coin_bks;
|
pc.coin_bks = coin_bks;
|
||||||
pc.coin = coin;
|
pc.coin = coin;
|
||||||
pc.refreshed = refreshed;
|
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;
|
MHD_RESULT mhd_ret;
|
||||||
|
|
||||||
|
@ -5778,6 +5778,8 @@ postgres_ensure_coin_known (void *cls,
|
|||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
||||||
case GNUNET_DB_STATUS_SOFT_ERROR:
|
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;
|
return TALER_EXCHANGEDB_CKS_SOFT_FAIL;
|
||||||
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
|
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
|
||||||
/* continued below */
|
/* continued below */
|
||||||
@ -5794,8 +5796,11 @@ postgres_ensure_coin_known (void *cls,
|
|||||||
switch (qs)
|
switch (qs)
|
||||||
{
|
{
|
||||||
case GNUNET_DB_STATUS_HARD_ERROR:
|
case GNUNET_DB_STATUS_HARD_ERROR:
|
||||||
|
GNUNET_break (0);
|
||||||
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
return TALER_EXCHANGEDB_CKS_HARD_FAIL;
|
||||||
case GNUNET_DB_STATUS_SOFT_ERROR:
|
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;
|
return TALER_EXCHANGEDB_CKS_SOFT_FAIL;
|
||||||
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
||||||
if (0 == GNUNET_memcmp (&denom_pub_hash,
|
if (0 == GNUNET_memcmp (&denom_pub_hash,
|
||||||
@ -5865,7 +5870,6 @@ postgres_insert_deposit (void *cls,
|
|||||||
&kyc);
|
&kyc);
|
||||||
if (qs <= 0)
|
if (qs <= 0)
|
||||||
{
|
{
|
||||||
GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
|
|
||||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||||
return qs;
|
return qs;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user