From 5f5babca93b915b4c957d1011248cbfdac41313a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 8 Mar 2017 11:59:01 +0100 Subject: fix #4851 --- src/exchange/taler-exchange-httpd.c | 13 +++++++------ src/exchange/taler-exchange-httpd_db.c | 2 +- src/exchange/taler-exchange-httpd_wire.c | 25 ++++++++++++++++++++++--- src/exchange/taler-exchange-httpd_wire.h | 10 ++++++++++ src/exchangedb/plugin_exchangedb_postgres.c | 4 ++-- 5 files changed, 42 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c index 11cf00dd1..fa000d06b 100644 --- a/src/exchange/taler-exchange-httpd.c +++ b/src/exchange/taler-exchange-httpd.c @@ -624,10 +624,6 @@ exchange_serve_process_config () (unsigned int) TALER_CURRENCY_LEN); return GNUNET_SYSERR; } - if (GNUNET_OK != - TEH_VALIDATION_init (cfg)) - return GNUNET_SYSERR; - if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "exchange", @@ -637,7 +633,6 @@ exchange_serve_process_config () GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "exchange", "master_public_key"); - TEH_VALIDATION_done (); return GNUNET_SYSERR; } if (GNUNET_OK != @@ -648,11 +643,17 @@ exchange_serve_process_config () fprintf (stderr, "Invalid master public key given in exchange configuration."); GNUNET_free (TEH_master_public_key_str); - TEH_VALIDATION_done (); return GNUNET_SYSERR; } GNUNET_free (TEH_master_public_key_str); + if ( (GNUNET_OK != + TEH_VALIDATION_init (cfg)) || + (GNUNET_OK != + TEH_WIRE_init ()) ) + return GNUNET_SYSERR; + + if (NULL == (TEH_plugin = TALER_EXCHANGEDB_plugin_load (cfg))) { diff --git a/src/exchange/taler-exchange-httpd_db.c b/src/exchange/taler-exchange-httpd_db.c index 9257cbef8..589229f7e 100644 --- a/src/exchange/taler-exchange-httpd_db.c +++ b/src/exchange/taler-exchange-httpd_db.c @@ -615,7 +615,7 @@ TEH_DB_execute_reserve_status (struct MHD_Connection *connection, "error", "Reserve not found", "parameter", "withdraw_pub"); res = TEH_RESPONSE_reply_reserve_status_success (connection, - rh); + rh); TEH_plugin->free_reserve_history (TEH_plugin->cls, rh); return res; diff --git a/src/exchange/taler-exchange-httpd_wire.c b/src/exchange/taler-exchange-httpd_wire.c index 9c8b2ff13..26cbb1870 100644 --- a/src/exchange/taler-exchange-httpd_wire.c +++ b/src/exchange/taler-exchange-httpd_wire.c @@ -120,15 +120,34 @@ TEH_WIRE_handler_wire (struct TEH_RequestHandler *rh, const char *upload_data, size_t *upload_data_size) { - if (NULL == wire_methods) - wire_methods = TEH_VALIDATION_get_wire_methods ("exchange-wire-incoming"); - + GNUNET_assert (NULL != wire_methods); return TEH_RESPONSE_reply_json (connection, wire_methods, MHD_HTTP_OK); } +/** + * Initialize wire subsystem. + * + * @return #GNUNET_OK on success, #GNUNET_SYSERR if we found no valid + * wire methods + */ +int +TEH_WIRE_init () +{ + wire_methods = TEH_VALIDATION_get_wire_methods ("exchange-wire-incoming"); + if ( (NULL == wire_methods) || + (0 == json_object_size (wire_methods)) ) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to find properly configured wire transfer method\n"); + return GNUNET_SYSERR; + } + return GNUNET_OK; +} + + /** * Initialize libgcrypt. */ diff --git a/src/exchange/taler-exchange-httpd_wire.h b/src/exchange/taler-exchange-httpd_wire.h index a85fde696..72dd2198f 100644 --- a/src/exchange/taler-exchange-httpd_wire.h +++ b/src/exchange/taler-exchange-httpd_wire.h @@ -26,6 +26,16 @@ #include "taler-exchange-httpd.h" +/** + * Initialize wire subsystem. + * + * @return #GNUNET_OK on success, #GNUNET_SYSERR if we found no valid + * wire methods + */ +int +TEH_WIRE_init (void); + + /** * Obtain fee structure for @a wire_plugin_name wire transfers. * diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 179d60976..febbf0c6c 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -2186,8 +2186,8 @@ postgres_get_reserve_history (void *cls, GNUNET_assert (NULL != rh_tail); GNUNET_assert (NULL == rh_tail->next); result = GNUNET_PQ_exec_prepared (session->conn, - "get_reserves_out", - params); + "get_reserves_out", + params); if (PGRES_TUPLES_OK != PQresultStatus (result)) { QUERY_ERR (result); -- cgit v1.2.3