X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_dynamic.c;h=25a359aa9ecb548b2d25159c6ac474a5c623c543;hb=1ec1e2efdf4092233ac2136dff5a35cf6c7f4710;hp=5bc539ce25c0ee539b04d1ec1d0264c7eb80e966;hpb=2826e0222d6ad5148384d5d39ea748277093ab21;p=onak.git diff --git a/keydb_dynamic.c b/keydb_dynamic.c index 5bc539c..25a359a 100644 --- a/keydb_dynamic.c +++ b/keydb_dynamic.c @@ -214,6 +214,7 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg, char *initname; struct onak_dbctx *(*backend_init)(struct onak_db_config *, bool); struct onak_dynamic_dbctx *privctx; + char *type; if (dbcfg == NULL) { logthing(LOGTHING_CRITICAL, @@ -234,9 +235,9 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg, return (NULL); } + type = dbcfg->type; if (config.use_keyd) { - free(config.db_backend); - config.db_backend = strdup("keyd"); + type = "keyd"; } if (!config.db_backend) { @@ -245,21 +246,21 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg, } if (config.backends_dir == NULL) { - soname = malloc(strlen(dbcfg->type) + soname = malloc(strlen(type) + strlen("./libkeydb_") + strlen(".so") + 1); - sprintf(soname, "./libkeydb_%s.so", dbcfg->type); + sprintf(soname, "./libkeydb_%s.so", type); } else { - soname = malloc(strlen(dbcfg->type) + soname = malloc(strlen(type) + strlen("/libkeydb_") + strlen(".so") + strlen(config.backends_dir) + 1); sprintf(soname, "%s/libkeydb_%s.so", config.backends_dir, - dbcfg->type); + type); } logthing(LOGTHING_INFO, "Loading dynamic backend: %s", soname); @@ -278,7 +279,7 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg, + strlen("keydb_") + strlen("_init") + 1); - sprintf(initname, "keydb_%s_init", dbcfg->type); + sprintf(initname, "keydb_%s_init", type); *(void **) (&backend_init) = dlsym(privctx->backend_handle, initname); free(initname);