fix use of struct TALER_DepositConfirmationPS

This commit is contained in:
Christian Grothoff 2015-03-28 17:21:51 +01:00
parent 3c87b1a0b3
commit cf13997ffc
3 changed files with 30 additions and 23 deletions

View File

@ -130,12 +130,13 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
&deposit->h_wire, &deposit->h_wire,
&deposit->h_contract, &deposit->h_contract,
deposit->transaction_id, deposit->transaction_id,
deposit->refund_deadline,
&deposit->merchant_pub, &deposit->merchant_pub,
&amount_without_fee); &amount_without_fee);
} }
mks = TMH_KS_acquire (); mks = TMH_KS_acquire ();
dki = TMH_KS_denomination_key_lookup (mks, dki = TMH_KS_denomination_key_lookup (mks,
&deposit->coin.denom_pub); &deposit->coin.denom_pub);
TALER_amount_ntoh (&value, TALER_amount_ntoh (&value,
&dki->issue.value); &dki->issue.value);
TMH_KS_release (mks); TMH_KS_release (mks);
@ -151,15 +152,15 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
spent = deposit->amount_with_fee; spent = deposit->amount_with_fee;
/* add cost of all previous transactions */ /* add cost of all previous transactions */
tl = TMH_plugin->get_coin_transactions (TMH_plugin->cls, tl = TMH_plugin->get_coin_transactions (TMH_plugin->cls,
session, session,
&deposit->coin.coin_pub); &deposit->coin.coin_pub);
if (GNUNET_OK != if (GNUNET_OK !=
calculate_transaction_list_totals (tl, calculate_transaction_list_totals (tl,
&spent, &spent,
&spent)) &spent))
{ {
TMH_plugin->free_coin_transaction_list (TMH_plugin->cls, TMH_plugin->free_coin_transaction_list (TMH_plugin->cls,
tl); tl);
return TMH_RESPONSE_reply_internal_db_error (connection); return TMH_RESPONSE_reply_internal_db_error (connection);
} }
/* Check that cost of all transactions is smaller than /* Check that cost of all transactions is smaller than
@ -170,18 +171,18 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
TMH_plugin->rollback (TMH_plugin->cls, TMH_plugin->rollback (TMH_plugin->cls,
session); session);
ret = TMH_RESPONSE_reply_deposit_insufficient_funds (connection, ret = TMH_RESPONSE_reply_deposit_insufficient_funds (connection,
tl); tl);
TMH_plugin->free_coin_transaction_list (TMH_plugin->cls, TMH_plugin->free_coin_transaction_list (TMH_plugin->cls,
tl); tl);
return ret; return ret;
} }
TMH_plugin->free_coin_transaction_list (TMH_plugin->cls, TMH_plugin->free_coin_transaction_list (TMH_plugin->cls,
tl); tl);
if (GNUNET_OK != if (GNUNET_OK !=
TMH_plugin->insert_deposit (TMH_plugin->cls, TMH_plugin->insert_deposit (TMH_plugin->cls,
session, session,
deposit)) deposit))
{ {
TALER_LOG_WARNING ("Failed to store /deposit information in database\n"); TALER_LOG_WARNING ("Failed to store /deposit information in database\n");
TMH_plugin->rollback (TMH_plugin->cls, TMH_plugin->rollback (TMH_plugin->cls,
@ -197,12 +198,13 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
return TMH_RESPONSE_reply_commit_error (connection); return TMH_RESPONSE_reply_commit_error (connection);
} }
return TMH_RESPONSE_reply_deposit_success (connection, return TMH_RESPONSE_reply_deposit_success (connection,
&deposit->coin.coin_pub, &deposit->coin.coin_pub,
&deposit->h_wire, &deposit->h_wire,
&deposit->h_contract, &deposit->h_contract,
deposit->transaction_id, deposit->transaction_id,
&deposit->merchant_pub, deposit->refund_deadline,
&deposit->amount_with_fee); &deposit->merchant_pub,
&deposit->amount_with_fee);
} }

View File

@ -276,18 +276,20 @@ TMH_RESPONSE_reply_invalid_json (struct MHD_Connection *connection)
* @param h_wire hash of wire details * @param h_wire hash of wire details
* @param h_contract hash of contract details * @param h_contract hash of contract details
* @param transaction_id transaction ID * @param transaction_id transaction ID
* @param refund_deadline until when this deposit be refunded
* @param merchant merchant public key * @param merchant merchant public key
* @param amount_without_fee fraction of coin value to deposit, without the fee * @param amount_without_fee fraction of coin value to deposit, without the fee
* @return MHD result code * @return MHD result code
*/ */
int int
TMH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection, TMH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
const union TALER_CoinSpendPublicKeyP *coin_pub, const union TALER_CoinSpendPublicKeyP *coin_pub,
const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_wire,
const struct GNUNET_HashCode *h_contract, const struct GNUNET_HashCode *h_contract,
uint64_t transaction_id, uint64_t transaction_id,
const struct TALER_MerchantPublicKeyP *merchant, struct GNUNET_TIME_Absolute refund_deadline,
const struct TALER_Amount *amount_without_fee) const struct TALER_MerchantPublicKeyP *merchant,
const struct TALER_Amount *amount_without_fee)
{ {
struct TALER_DepositConfirmationPS dc; struct TALER_DepositConfirmationPS dc;
struct TALER_MintSignatureP sig; struct TALER_MintSignatureP sig;
@ -299,12 +301,14 @@ TMH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
dc.h_contract = *h_contract; dc.h_contract = *h_contract;
dc.h_wire = *h_wire; dc.h_wire = *h_wire;
dc.transaction_id = GNUNET_htonll (transaction_id); dc.transaction_id = GNUNET_htonll (transaction_id);
dc.timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
dc.refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline);
TALER_amount_hton (&dc.amount_without_fee, TALER_amount_hton (&dc.amount_without_fee,
amount_without_fee); amount_without_fee);
dc.coin_pub = *coin_pub; dc.coin_pub = *coin_pub;
dc.merchant = *merchant; dc.merchant = *merchant;
TMH_KS_sign (&dc.purpose, TMH_KS_sign (&dc.purpose,
&sig); &sig);
sig_json = TALER_json_from_eddsa_sig (&dc.purpose, sig_json = TALER_json_from_eddsa_sig (&dc.purpose,
&sig.eddsa_signature); &sig.eddsa_signature);
ret = TMH_RESPONSE_reply_json_pack (connection, ret = TMH_RESPONSE_reply_json_pack (connection,

View File

@ -179,6 +179,7 @@ TMH_RESPONSE_reply_invalid_json (struct MHD_Connection *connection);
* @param h_wire hash of wire details * @param h_wire hash of wire details
* @param h_contract hash of contract details * @param h_contract hash of contract details
* @param transaction_id transaction ID * @param transaction_id transaction ID
* @param refund_deadline until when this deposit be refunded
* @param merchant merchant public key * @param merchant merchant public key
* @param amount_without_fee fraction of coin value to deposit (without fee) * @param amount_without_fee fraction of coin value to deposit (without fee)
* @return MHD result code * @return MHD result code
@ -189,7 +190,7 @@ TMH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_wire,
const struct GNUNET_HashCode *h_contract, const struct GNUNET_HashCode *h_contract,
uint64_t transaction_id, uint64_t transaction_id,
const struct TALER_MerchantPublicKeyP *merchant, struct GNUNET_TIME_Absolute refund_deadline, const struct TALER_MerchantPublicKeyP *merchant,
const struct TALER_Amount *amount_without_fee); const struct TALER_Amount *amount_without_fee);