modify TALER_EXCHANGE_deposits_get() API to avoid NULL pointers and need for deep copies
This commit is contained in:
parent
cde71b7fe7
commit
4844023f69
@ -1691,22 +1691,22 @@ struct TALER_EXCHANGE_DepositData
|
|||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* exchange key used to sign, NULL if exchange did not
|
* exchange key used to sign, all zeros if exchange did not
|
||||||
* yet execute the transaction
|
* yet execute the transaction
|
||||||
*/
|
*/
|
||||||
const struct TALER_ExchangePublicKeyP *exchange_pub;
|
struct TALER_ExchangePublicKeyP exchange_pub;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* signature from the exchange over the deposit data, NULL if exchange did not
|
* signature from the exchange over the deposit data, all zeros if exchange did not
|
||||||
* yet execute the transaction
|
* yet execute the transaction
|
||||||
*/
|
*/
|
||||||
const struct TALER_ExchangeSignatureP *exchange_sig;
|
struct TALER_ExchangeSignatureP exchange_sig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wire transfer identifier used by the exchange, NULL if exchange did not
|
* wire transfer identifier used by the exchange, all zeros if exchange did not
|
||||||
* yet execute the transaction
|
* yet execute the transaction
|
||||||
*/
|
*/
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid;
|
struct TALER_WireTransferIdentifierRawP wtid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* actual or planned execution time for the wire transfer
|
* actual or planned execution time for the wire transfer
|
||||||
@ -1714,10 +1714,10 @@ struct TALER_EXCHANGE_DepositData
|
|||||||
struct GNUNET_TIME_Absolute execution_time;
|
struct GNUNET_TIME_Absolute execution_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* contribution to the total amount by this coin, NULL if exchange did not
|
* contribution to the total amount by this coin, all zeros if exchange did not
|
||||||
* yet execute the transaction
|
* yet execute the transaction
|
||||||
*/
|
*/
|
||||||
const struct TALER_Amount *coin_contribution;
|
struct TALER_Amount coin_contribution;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,16 +146,13 @@ handle_deposit_wtid_finished (void *cls,
|
|||||||
break;
|
break;
|
||||||
case MHD_HTTP_OK:
|
case MHD_HTTP_OK:
|
||||||
{
|
{
|
||||||
struct GNUNET_TIME_Absolute execution_time;
|
struct TALER_EXCHANGE_DepositData dd;
|
||||||
struct TALER_Amount coin_contribution;
|
|
||||||
struct TALER_ExchangePublicKeyP exchange_pub;
|
|
||||||
struct TALER_ExchangeSignatureP exchange_sig;
|
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto ("wtid", &dwh->depconf.wtid),
|
GNUNET_JSON_spec_fixed_auto ("wtid", &dwh->depconf.wtid),
|
||||||
GNUNET_JSON_spec_absolute_time ("execution_time", &execution_time),
|
GNUNET_JSON_spec_absolute_time ("execution_time", &dd.execution_time),
|
||||||
TALER_JSON_spec_amount ("coin_contribution", &coin_contribution),
|
TALER_JSON_spec_amount ("coin_contribution", &dd.coin_contribution),
|
||||||
GNUNET_JSON_spec_fixed_auto ("exchange_sig", &exchange_sig),
|
GNUNET_JSON_spec_fixed_auto ("exchange_sig", &dd.exchange_sig),
|
||||||
GNUNET_JSON_spec_fixed_auto ("exchange_pub", &exchange_pub),
|
GNUNET_JSON_spec_fixed_auto ("exchange_pub", &dd.exchange_pub),
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -169,14 +166,15 @@ handle_deposit_wtid_finished (void *cls,
|
|||||||
hr.ec = TALER_EC_DEPOSITS_INVALID_BODY_BY_EXCHANGE;
|
hr.ec = TALER_EC_DEPOSITS_INVALID_BODY_BY_EXCHANGE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dwh->depconf.execution_time = GNUNET_TIME_absolute_hton (execution_time);
|
dwh->depconf.execution_time = GNUNET_TIME_absolute_hton (
|
||||||
|
dd.execution_time);
|
||||||
TALER_amount_hton (&dwh->depconf.coin_contribution,
|
TALER_amount_hton (&dwh->depconf.coin_contribution,
|
||||||
&coin_contribution);
|
&dd.coin_contribution);
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
verify_deposit_wtid_signature_ok (dwh,
|
verify_deposit_wtid_signature_ok (dwh,
|
||||||
j,
|
j,
|
||||||
&exchange_pub,
|
&dd.exchange_pub,
|
||||||
&exchange_sig))
|
&dd.exchange_sig))
|
||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
hr.http_status = 0;
|
hr.http_status = 0;
|
||||||
@ -184,14 +182,7 @@ handle_deposit_wtid_finished (void *cls,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct TALER_EXCHANGE_DepositData dd = {
|
dd.wtid = dwh->depconf.wtid;
|
||||||
.exchange_pub = &exchange_pub,
|
|
||||||
.exchange_sig = &exchange_sig,
|
|
||||||
.wtid = &dwh->depconf.wtid,
|
|
||||||
.execution_time = execution_time,
|
|
||||||
.coin_contribution = &coin_contribution
|
|
||||||
};
|
|
||||||
|
|
||||||
dwh->cb (dwh->cb_cls,
|
dwh->cb (dwh->cb_cls,
|
||||||
&hr,
|
&hr,
|
||||||
&dd);
|
&dd);
|
||||||
|
@ -111,8 +111,7 @@ deposit_wtid_cb (void *cls,
|
|||||||
switch (hr->http_status)
|
switch (hr->http_status)
|
||||||
{
|
{
|
||||||
case MHD_HTTP_OK:
|
case MHD_HTTP_OK:
|
||||||
GNUNET_assert (NULL != dd->wtid);
|
tts->wtid = dd->wtid;
|
||||||
tts->wtid = *dd->wtid;
|
|
||||||
if (NULL != tts->bank_transfer_reference)
|
if (NULL != tts->bank_transfer_reference)
|
||||||
{
|
{
|
||||||
const struct TALER_TESTING_Command *bank_transfer_cmd;
|
const struct TALER_TESTING_Command *bank_transfer_cmd;
|
||||||
@ -140,7 +139,7 @@ deposit_wtid_cb (void *cls,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Compare that expected and gotten subjects match. */
|
/* Compare that expected and gotten subjects match. */
|
||||||
if (0 != GNUNET_memcmp (dd->wtid,
|
if (0 != GNUNET_memcmp (&dd->wtid,
|
||||||
wtid_want))
|
wtid_want))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
Loading…
Reference in New Issue
Block a user