diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mint/plugin.c | 31 | ||||
| -rw-r--r-- | src/mint/plugin_mintdb_postgres.c | 5 | ||||
| -rw-r--r-- | src/mint/taler_mintdb_plugin.h | 5 | ||||
| -rw-r--r-- | src/mint/test_mint_db.c | 1 | 
4 files changed, 39 insertions, 3 deletions
| diff --git a/src/mint/plugin.c b/src/mint/plugin.c index 4fb75f87..455c7e8f 100644 --- a/src/mint/plugin.c +++ b/src/mint/plugin.c @@ -43,7 +43,34 @@ static char *old_dlsearchpath;  int  TALER_MINT_plugin_load (const struct GNUNET_CONFIGURATION_Handle *cfg)  { -  return GNUNET_SYSERR; +  char *plugin_name; +  char *lib_name; +  struct GNUNET_CONFIGURATION_Handle *cfg_dup; + +  if (NULL != plugin) +    return GNUNET_OK; +  if (GNUNET_SYSERR == +      GNUNET_CONFIGURATION_get_value_string (cfg, +                                             "mint", +                                             "db", +                                             &plugin_name)) +  { +    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, +                               "mint", +                               "db"); +    return GNUNET_SYSERR; +  } +  (void) GNUNET_asprintf (&lib_name, +                          "libtaler_plugin_mintdb_%s", +                          plugin_name); +  GNUNET_free (plugin_name); +  cfg_dup = GNUNET_CONFIGURATION_dup (cfg); +  plugin = GNUNET_PLUGIN_load (lib_name, cfg_dup); +  GNUNET_CONFIGURATION_destroy (cfg_dup); +  GNUNET_free (lib_name); +  if (NULL == plugin) +    return GNUNET_SYSERR; +  return GNUNET_OK;  } @@ -55,6 +82,8 @@ TALER_MINT_plugin_unload ()  {    if (NULL == plugin)      return; +  GNUNET_assert (NULL == GNUNET_PLUGIN_unload (plugin->library_name, +                                               plugin));  } diff --git a/src/mint/plugin_mintdb_postgres.c b/src/mint/plugin_mintdb_postgres.c index 5a1ff8c0..8edee59a 100644 --- a/src/mint/plugin_mintdb_postgres.c +++ b/src/mint/plugin_mintdb_postgres.c @@ -2289,16 +2289,17 @@ libtaler_plugin_mintdb_postgres_init (void *cls)    /* FIXME: use configuration section with "postgres" in its name... */    if (GNUNET_OK !=        GNUNET_CONFIGURATION_get_value_string (cfg, -                                             "mint", "db", +                                             "mint", "db_conn_str",                                               &pg->TALER_MINT_db_connection_cfg_str))    {      GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,                                 "mint", -                               "db"); +                               "db_conn_str");      return NULL;    }    plugin = GNUNET_new (struct TALER_MINTDB_Plugin);    plugin->cls = pg; +  plugin->library_name = "libtaler_plugin_mintdb_postgres";    plugin->get_session = &postgres_get_session;    plugin->drop_temporary = &postgres_drop_temporary;    plugin->create_tables = &postgres_create_tables; diff --git a/src/mint/taler_mintdb_plugin.h b/src/mint/taler_mintdb_plugin.h index 08a73479..4d74b88d 100644 --- a/src/mint/taler_mintdb_plugin.h +++ b/src/mint/taler_mintdb_plugin.h @@ -479,6 +479,11 @@ struct TALER_MINTDB_Plugin    void *cls;    /** +   * Name of the library which generated this plugin +   */ +  const char *library_name; + +  /**     * Get the thread-local database-handle.     * Connect to the db if the connection does not exist yet.     * diff --git a/src/mint/test_mint_db.c b/src/mint/test_mint_db.c index 0b61818f..ef882b90 100644 --- a/src/mint/test_mint_db.c +++ b/src/mint/test_mint_db.c @@ -343,6 +343,7 @@ run (void *cls,    if (NULL != cbc2.sig.rsa_signature)      GNUNET_CRYPTO_rsa_signature_free (cbc2.sig.rsa_signature);    dkp = NULL; +  TALER_MINT_plugin_unload ();  } | 
