use libtalerwire instead of duplicating logic

This commit is contained in:
Christian Grothoff 2016-04-11 13:01:20 +02:00
parent b018d4d5b0
commit af91cd87d6
4 changed files with 13 additions and 29 deletions

View File

@ -45,6 +45,7 @@ taler_exchange_wire_SOURCES = \
taler-exchange-wire.c
taler_exchange_wire_LDADD = \
$(LIBGCRYPT_LIBS) \
$(top_builddir)/src/wire/libtalerwire.la \
$(top_builddir)/src/util/libtalerutil.la \
-lgnunetjson \
-lgnunetutil \

View File

@ -23,6 +23,7 @@
#include <gnunet/gnunet_json_lib.h>
#include "taler_crypto_lib.h"
#include "taler_wire_plugin.h"
#include "taler_wire_lib.h"
#include "taler_signatures.h"
@ -90,7 +91,6 @@ main (int argc,
json_error_t err;
char *json_out;
struct GNUNET_HashCode salt;
char *lib_name;
struct TALER_WIRE_Plugin *plugin;
GNUNET_assert (GNUNET_OK ==
@ -159,20 +159,15 @@ main (int argc,
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
&salt,
sizeof (salt));
(void) GNUNET_asprintf (&lib_name,
"libtaler_plugin_wire_%s",
plugin = TALER_WIRE_plugin_load (cfg,
method);
plugin = GNUNET_PLUGIN_load (lib_name,
NULL);
if (NULL == plugin)
{
GNUNET_free (lib_name);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Wire transfer method `%s' not supported\n",
method);
return 1;
}
plugin->library_name = lib_name;
if (GNUNET_OK !=
plugin->sign_wire_details (plugin->cls,
j,
@ -182,14 +177,10 @@ main (int argc,
{
/* sign function should have logged applicable errors */
json_decref (j);
GNUNET_PLUGIN_unload (lib_name,
plugin);
GNUNET_free (lib_name);
TALER_WIRE_plugin_unload (plugin);
return 1;
}
GNUNET_PLUGIN_unload (lib_name,
plugin);
GNUNET_free (lib_name);
TALER_WIRE_plugin_unload (plugin);
GNUNET_free (eddsa_priv);
/* add signature and salt to JSON message */

View File

@ -42,9 +42,10 @@ taler_exchange_httpd_SOURCES = \
taler-exchange-httpd_validation.c taler-exchange-httpd_validation.h
taler_exchange_httpd_LDADD = \
$(LIBGCRYPT_LIBS) \
$(top_builddir)/src/wire/libtalerwire.la \
$(top_builddir)/src/json/libtalerjson.la \
$(top_builddir)/src/util/libtalerutil.la \
$(top_builddir)/src/exchangedb/libtalerexchangedb.la \
$(top_builddir)/src/util/libtalerutil.la \
-lmicrohttpd \
-lgnunetutil \
-lgnunetjson \

View File

@ -23,6 +23,7 @@
#include <gnunet/gnunet_util_lib.h>
#include "taler-exchange-httpd.h"
#include "taler-exchange-httpd_validation.h"
#include "taler_wire_lib.h"
#include "taler_wire_plugin.h"
@ -76,7 +77,6 @@ TMH_VALIDATION_init (const struct GNUNET_CONFIGURATION_Handle *cfg)
{
struct Plugin *p;
char *wireformats;
char *lib_name;
const char *token;
/* Find out list of supported wire formats */
@ -97,24 +97,19 @@ TMH_VALIDATION_init (const struct GNUNET_CONFIGURATION_Handle *cfg)
token = strtok (NULL,
" "))
{
(void) GNUNET_asprintf (&lib_name,
"libtaler_plugin_wire_%s",
token);
p = GNUNET_new (struct Plugin);
p->type = GNUNET_strdup (token);
p->plugin = GNUNET_PLUGIN_load (lib_name,
(void *) cfg);
p->plugin = TALER_WIRE_plugin_load (cfg,
token);
if (NULL == p->plugin)
{
GNUNET_free (p);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to load plugin %s\n",
lib_name);
GNUNET_free (lib_name);
token);
TMH_VALIDATION_done ();
return GNUNET_SYSERR;
}
p->plugin->library_name = lib_name;
GNUNET_CONTAINER_DLL_insert (wire_head,
wire_tail,
p);
@ -131,17 +126,13 @@ void
TMH_VALIDATION_done ()
{
struct Plugin *p;
char *lib_name;
while (NULL != (p = wire_head))
{
GNUNET_CONTAINER_DLL_remove (wire_head,
wire_tail,
p);
lib_name = p->plugin->library_name;
GNUNET_assert (NULL == GNUNET_PLUGIN_unload (lib_name,
p->plugin));
GNUNET_free (lib_name);
TALER_WIRE_plugin_unload (p->plugin);
GNUNET_free (p->type);
GNUNET_free (p);
}