diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-03-03 19:44:27 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-03-03 19:44:27 +0100 |
commit | 364abbaea1383bd7d8311269d596bdc3c1d4b591 (patch) | |
tree | 9448251a29c317fd904fc94f57889587039ad1ce | |
parent | 243d8d18b1ea27a1160bc27a7334b41e87564257 (diff) |
use new ENABLE method to load wire plugins
-rw-r--r-- | src/exchange/taler-exchange-httpd_validation.c | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/src/exchange/taler-exchange-httpd_validation.c b/src/exchange/taler-exchange-httpd_validation.c index 541173f2a..14c1476b8 100644 --- a/src/exchange/taler-exchange-httpd_validation.c +++ b/src/exchange/taler-exchange-httpd_validation.c @@ -66,6 +66,38 @@ static struct Plugin *wire_tail; /** + * Load plugin @a name. + * + * @param cls pointer to `int` to set to #GNUNET_SYSERR on errors + * @param name name of the plugin to load + */ +static void +load_plugin (void *cls, + const char *name) +{ + int *ret = cls; + struct Plugin *p; + + p = GNUNET_new (struct Plugin); + p->type = GNUNET_strdup (name); + p->plugin = TALER_WIRE_plugin_load (cfg, + name); + if (NULL == p->plugin) + { + GNUNET_free (p); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to load plugin %s\n", + name); + *ret = GNUNET_SYSERR; + return; + } + GNUNET_CONTAINER_DLL_insert (wire_head, + wire_tail, + p); +} + + +/** * Initialize validation subsystem. * * @param cfg configuration to use @@ -74,54 +106,22 @@ static struct Plugin *wire_tail; int TEH_VALIDATION_init (const struct GNUNET_CONFIGURATION_Handle *cfg) { - struct Plugin *p; - char *wireformats; - const char *token; - - /* Find out list of supported wire formats */ - if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_string (cfg, - "exchange", - "wireformat", - &wireformats)) - { - GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, - "exchange", - "wireformat"); - return GNUNET_SYSERR; - } - for (token = strtok (wireformats, - " "); - NULL != token; - token = strtok (NULL, - " ")) - { - p = GNUNET_new (struct Plugin); - p->type = GNUNET_strdup (token); - 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", - token); - TEH_VALIDATION_done (); - return GNUNET_SYSERR; - } - GNUNET_CONTAINER_DLL_insert (wire_head, - wire_tail, - p); - } - GNUNET_free (wireformats); + int ret; + + ret = GNUNET_OK; + TALER_WIRE_find_enabled (cfg, + &load_plugin, + &ret); if (NULL == wire_head) { GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "exchange", "wireformat"); - return GNUNET_SYSERR; + ret = GNUNET_SYSERR; } - return GNUNET_OK; + if (GNUNET_OK != ret) + TEH_VALIDATION_done (); + return ret; } |