X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Fappconfig.c;h=50e4c31fbdcb017d81874c5af7efabc258365f69;hb=81d54680d41c1a7c8808db88557b850bb0f31fe7;hp=2de6f69c085af1f138d45a1db6dc70eb14c6bb61;hpb=62796ac50b1ae2807a187ac39855762fd3aefdc7;p=netdata.git diff --git a/src/appconfig.c b/src/appconfig.c index 2de6f69c..50e4c31f 100644 --- a/src/appconfig.c +++ b/src/appconfig.c @@ -157,8 +157,7 @@ static inline struct section *appconfig_section_create(struct config *root, cons // ---------------------------------------------------------------------------- // config name-value methods -static inline struct config_option *appconfig_value_create(struct section *co, const char *name, const char *value) -{ +static inline struct config_option *appconfig_value_create(struct section *co, const char *name, const char *value) { debug(D_CONFIG, "Creating config entry for name '%s', value '%s', in section '%s'.", name, value, co->name); struct config_option *cv = callocz(1, sizeof(struct config_option)); @@ -166,8 +165,14 @@ static inline struct config_option *appconfig_value_create(struct section *co, c cv->hash = simple_hash(cv->name); cv->value = strdupz(value); - if(unlikely(appconfig_option_index_add(co, cv) != cv)) - error("INTERNAL ERROR: indexing of config '%s' in section '%s': already exists.", cv->name, co->name); + struct config_option *found = appconfig_option_index_add(co, cv); + if(found != cv) { + error("indexing of config '%s' in section '%s': already exists - using the existing one.", cv->name, co->name); + freez(cv->value); + freez(cv->name); + freez(cv); + return found; + } config_section_wrlock(co); struct config_option *cv2 = co->values; @@ -240,7 +245,7 @@ int appconfig_move(struct config *root, const char *section_old, const char *nam co_new->values = cv_new; if(unlikely(appconfig_option_index_add(co_new, cv_old) != cv_old)) - error("INTERNAL ERROR: indexing of config '%s' in section '%s', already exists.", cv_old->name, co_new->name); + error("INTERNAL ERROR: re-indexing of config '%s' in section '%s', already exists.", cv_old->name, co_new->name); ret = 0; @@ -525,7 +530,7 @@ void appconfig_generate(struct config *root, BUFFER *wb, int only_changed) appconfig_wrlock(root); for(co = root->sections; co ; co = co->next) { if(!strcmp(co->name, CONFIG_SECTION_GLOBAL) - || !strcmp(co->name, CONFIG_SECTION_API) + || !strcmp(co->name, CONFIG_SECTION_WEB) || !strcmp(co->name, CONFIG_SECTION_PLUGINS) || !strcmp(co->name, CONFIG_SECTION_REGISTRY) || !strcmp(co->name, CONFIG_SECTION_HEALTH)