Merge branch 'master' of git+ssh://git.taler.net/exchange

This commit is contained in:
Christian Grothoff 2022-11-21 14:21:01 +01:00
commit 0c94dcb79e
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
12 changed files with 81 additions and 30 deletions

View File

@ -1,6 +1,7 @@
[Unit] [Unit]
Description=GNU Taler payment system exchange aggregator service Description=GNU Taler payment system exchange aggregator service
PartOf=taler-exchange.target PartOf=taler-exchange.target
After=postgres.service
[Service] [Service]
User=taler-exchange-aggregator User=taler-exchange-aggregator

View File

@ -1,6 +1,7 @@
[Unit] [Unit]
Description=GNU Taler payment system exchange closer service Description=GNU Taler payment system exchange closer service
PartOf=taler-exchange.target PartOf=taler-exchange.target
After=network.target postgres.service
[Service] [Service]
User=taler-exchange-closer User=taler-exchange-closer

View File

@ -1,6 +1,7 @@
[Unit] [Unit]
Description=GNU Taler payment system exchange expire service Description=GNU Taler payment system exchange expire service
PartOf=taler-exchange.target PartOf=taler-exchange.target
After=postgres.service
[Service] [Service]
User=taler-exchange-expire User=taler-exchange-expire

View File

@ -1,6 +1,6 @@
[Unit] [Unit]
Description=Taler Exchange Transfer Service Description=Taler Exchange Transfer Service
After=network.target After=network.target postgres.service
PartOf=taler-exchange.target PartOf=taler-exchange.target
[Service] [Service]

View File

@ -1,6 +1,6 @@
[Unit] [Unit]
Description=GNU Taler payment system exchange wirewatch service Description=GNU Taler payment system exchange wirewatch service
After=network.target After=network.target postgres.service
PartOf=taler-exchange.target PartOf=taler-exchange.target
[Service] [Service]

View File

@ -1775,13 +1775,16 @@ conclude_account (struct WireAccount *wa)
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Reconciling CREDIT processing of account `%s'\n", "Reconciling CREDIT processing of account `%s'\n",
wa->ai->section_name); wa->ai->section_name);
GNUNET_CONTAINER_multihashmap_iterate (in_map, if (NULL != in_map)
&complain_in_not_found, {
wa); GNUNET_CONTAINER_multihashmap_iterate (in_map,
/* clean up before 2nd phase */ &complain_in_not_found,
GNUNET_CONTAINER_multihashmap_iterate (in_map, wa);
&free_rii, /* clean up before 2nd phase */
NULL); GNUNET_CONTAINER_multihashmap_iterate (in_map,
&free_rii,
NULL);
}
process_credits (wa->next); process_credits (wa->next);
} }

View File

@ -240,7 +240,13 @@ function audit_only () {
echo -n "." echo -n "."
$VALGRIND taler-helper-auditor-reserves -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-reserves-inc.json 2> ${MY_TMP_DIR}/test-audit-reserves-inc.log || exit_fail "incremental reserves audit failed" $VALGRIND taler-helper-auditor-reserves -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-reserves-inc.json 2> ${MY_TMP_DIR}/test-audit-reserves-inc.log || exit_fail "incremental reserves audit failed"
echo -n "." echo -n "."
$VALGRIND taler-helper-auditor-wire -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-wire.json 2> ${MY_TMP_DIR}/test-wire-audit.log || exit_fail "wire audit failed" rm -f ${MY_TMP_DIR}/test-wire-audit.log
thaw() {
$VALGRIND taler-helper-auditor-wire -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-wire.json 2>> ${MY_TMP_DIR}/test-wire-audit.log
}
thaw || ( echo -e " FIRST CALL TO taler-helper-auditor-wire FAILED,\nRETRY AFTER TWO SECONDS..." | tee -a ${MY_TMP_DIR}/test-wire-audit.log
sleep 2
thaw || exit_fail "wire audit failed" )
echo -n "." echo -n "."
$VALGRIND taler-helper-auditor-wire -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-wire-inc.json 2> ${MY_TMP_DIR}/test-wire-audit-inc.log || exit_fail "wire audit inc failed" $VALGRIND taler-helper-auditor-wire -i -L DEBUG -c $CONF -m $MASTER_PUB > test-audit-wire-inc.json 2> ${MY_TMP_DIR}/test-wire-audit-inc.log || exit_fail "wire audit inc failed"
echo -n "." echo -n "."

View File

@ -20,6 +20,7 @@
#include "platform.h" #include "platform.h"
#include <gnunet/gnunet_json_lib.h> #include <gnunet/gnunet_json_lib.h>
#include "taler_dbevents.h" #include "taler_dbevents.h"
#include "taler-exchange-httpd_keys.h"
#include "taler-exchange-httpd_responses.h" #include "taler-exchange-httpd_responses.h"
#include "taler-exchange-httpd_extensions.h" #include "taler-exchange-httpd_extensions.h"
#include "taler_json_lib.h" #include "taler_json_lib.h"
@ -156,6 +157,10 @@ extension_update_event_cb (void *cls,
TALER_age_mask_to_string (&conf->mask)); TALER_age_mask_to_string (&conf->mask));
} }
// Finally, call TEH_keys_update_states in order to refresh the cached
// values.
TEH_keys_update_states ();
} }

View File

@ -2623,8 +2623,8 @@ TEH_keys_update_states ()
} }
struct TEH_KeyStateHandle * static struct TEH_KeyStateHandle *
TEH_keys_get_state2 (bool management_only) keys_get_state (bool management_only)
{ {
struct TEH_KeyStateHandle *old_ksh; struct TEH_KeyStateHandle *old_ksh;
struct TEH_KeyStateHandle *ksh; struct TEH_KeyStateHandle *ksh;
@ -2659,20 +2659,29 @@ TEH_keys_get_state2 (bool management_only)
} }
struct TEH_KeyStateHandle *
TEH_keys_get_state_for_management_only (void)
{
return keys_get_state (true);
}
struct TEH_KeyStateHandle * struct TEH_KeyStateHandle *
TEH_keys_get_state (void) TEH_keys_get_state (void)
{ {
struct TEH_KeyStateHandle *ksh; struct TEH_KeyStateHandle *ksh;
ksh = TEH_keys_get_state2 (false); ksh = keys_get_state (false);
if (NULL == ksh) if (NULL == ksh)
return NULL; return NULL;
if (ksh->management_only) if (ksh->management_only)
{ {
if (GNUNET_OK != if (GNUNET_OK !=
finish_keys_response (ksh)) finish_keys_response (ksh))
return NULL; return NULL;
} }
return ksh; return ksh;
} }
@ -2715,6 +2724,7 @@ TEH_keys_denomination_by_hash (
NULL); NULL);
return NULL; return NULL;
} }
return TEH_keys_denomination_by_hash2 (ksh, return TEH_keys_denomination_by_hash2 (ksh,
h_denom_pub, h_denom_pub,
conn, conn,
@ -3410,7 +3420,7 @@ TEH_keys_get_timing (const struct TALER_ExchangePublicKeyP *exchange_pub,
struct HelperSignkey *hsk; struct HelperSignkey *hsk;
struct GNUNET_PeerIdentity pid; struct GNUNET_PeerIdentity pid;
ksh = TEH_keys_get_state2 (true); ksh = TEH_keys_get_state_for_management_only ();
if (NULL == ksh) if (NULL == ksh)
{ {
GNUNET_break (0); GNUNET_break (0);
@ -3580,7 +3590,7 @@ TEH_keys_management_get_keys_handler (const struct TEH_RequestHandler *rh,
json_t *reply; json_t *reply;
(void) rh; (void) rh;
ksh = TEH_keys_get_state2 (true); ksh = TEH_keys_get_state_for_management_only ();
if (NULL == ksh) if (NULL == ksh)
{ {
return TALER_MHD_reply_with_error (connection, return TALER_MHD_reply_with_error (connection,

View File

@ -168,18 +168,12 @@ TEH_check_invariants (void);
struct TEH_KeyStateHandle * struct TEH_KeyStateHandle *
TEH_keys_get_state (void); TEH_keys_get_state (void);
/** /**
* Obtain the key state. Should ONLY be used * Obtain the key state if we should NOT run finish_keys_response() because we
* directly if @a management_only is true. Otherwise use #TEH_keys_get_state(). * only need the state for the /management/keys API
*
* @param management_only if we should NOT run finish_keys_response()
* because we only need the state for the /management/keys API
* @return NULL on error
*/ */
struct TEH_KeyStateHandle * struct TEH_KeyStateHandle *
TEH_keys_get_state2 (bool management_only); TEH_keys_get_state_for_management_only (void);
/** /**
* Something changed in the database. Rebuild all key states. This function * Something changed in the database. Rebuild all key states. This function

View File

@ -376,8 +376,7 @@ TEH_handler_management_post_keys (
} }
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Received /management/keys\n"); "Received /management/keys\n");
akc.ksh = TEH_keys_get_state2 (true); /* may start its own transaction, thus akc.ksh = TEH_keys_get_state_for_management_only (); /* may start its own transaction, thus must be done here, before we run ours! */
must be done here, before we run ours! */
if (NULL == akc.ksh) if (NULL == akc.ksh)
{ {
GNUNET_break_op (0); GNUNET_break_op (0);

View File

@ -90,8 +90,7 @@ TALER_TESTING_history_entry_cmp (
(GNUNET_TIME_timestamp_cmp ( (GNUNET_TIME_timestamp_cmp (
h1->details.history_details.request_timestamp, h1->details.history_details.request_timestamp,
==, ==,
h2->details.history_details. h2->details.history_details.request_timestamp)) &&
request_timestamp)) &&
(0 == (0 ==
GNUNET_memcmp (&h1->details.history_details.reserve_sig, GNUNET_memcmp (&h1->details.history_details.reserve_sig,
&h2->details.history_details.reserve_sig)) ) &h2->details.history_details.reserve_sig)) )
@ -131,10 +130,42 @@ TALER_TESTING_history_entry_cmp (
return 0; return 0;
return 1; return 1;
case TALER_EXCHANGE_RTT_OPEN: case TALER_EXCHANGE_RTT_OPEN:
// FIXME: verify response... if ( (0 ==
TALER_amount_cmp (&h1->amount,
&h2->amount)) &&
(GNUNET_TIME_timestamp_cmp (
h1->details.open_request.request_timestamp,
==,
h2->details.open_request.request_timestamp)) &&
(GNUNET_TIME_timestamp_cmp (
h1->details.open_request.reserve_expiration,
==,
h2->details.open_request.reserve_expiration)) &&
(h1->details.open_request.purse_limit ==
h2->details.open_request.purse_limit) &&
(0 ==
TALER_amount_cmp (&h1->details.open_request.reserve_payment,
&h2->details.open_request.reserve_payment)) &&
(0 ==
GNUNET_memcmp (&h1->details.open_request.reserve_sig,
&h2->details.open_request.reserve_sig)) )
return 0;
return 1; return 1;
case TALER_EXCHANGE_RTT_CLOSE: case TALER_EXCHANGE_RTT_CLOSE:
// FIXME: verify response... if ( (0 ==
TALER_amount_cmp (&h1->amount,
&h2->amount)) &&
(GNUNET_TIME_timestamp_cmp (
h1->details.close_request.request_timestamp,
==,
h2->details.close_request.request_timestamp)) &&
(0 ==
GNUNET_memcmp (&h1->details.close_request.target_account_h_payto,
&h2->details.close_request.target_account_h_payto)) &&
(0 ==
GNUNET_memcmp (&h1->details.close_request.reserve_sig,
&h2->details.close_request.reserve_sig)) )
return 0;
return 1; return 1;
} }
GNUNET_assert (0); GNUNET_assert (0);