]> arthur.barton.de Git - netdata.git/commitdiff
fix to update tc (QoS) names if they are updated
authorCosta Tsaousis <costa@tsaousis.gr>
Mon, 25 Jan 2016 20:43:54 +0000 (22:43 +0200)
committerCosta Tsaousis <costa@tsaousis.gr>
Mon, 25 Jan 2016 20:43:54 +0000 (22:43 +0200)
src/appconfig.c
src/appconfig.h
src/rrd.c

index 7cbb053b455dd8e33e491e492e597086c4651c98..49eca90f0b00d96dbdca9041395851318b11b565 100755 (executable)
@@ -340,6 +340,34 @@ int config_get_boolean_ondemand(const char *section, const char *name, int value
        return value;
 }
 
+const char *config_set_default(const char *section, const char *name, const char *value)
+{
+       struct config_value *cv;
+
+       debug(D_CONFIG, "request to set config in section '%s', name '%s', value '%s'", section, name, value);
+
+       struct config *co = config_find_section(section);
+       if(!co) return config_set(section, name, value);
+
+       cv = config_value_index_find(co, name, 0);
+       if(!cv) return config_set(section, name, value);
+
+       cv->flags |= CONFIG_VALUE_USED;
+
+       if(cv->flags & CONFIG_VALUE_LOADED)
+               return cv->value;
+
+       if(strcmp(cv->value, value) != 0) {
+               cv->flags |= CONFIG_VALUE_CHANGED;
+
+               free(cv->value);
+               cv->value = strdup(value);
+               if(!cv->value) fatal("Cannot allocate config.value");
+       }
+
+       return cv->value;
+}
+
 const char *config_set(const char *section, const char *name, const char *value)
 {
        struct config_value *cv;
@@ -353,11 +381,13 @@ const char *config_set(const char *section, const char *name, const char *value)
        if(!cv) cv = config_value_create(co, name, value);
        cv->flags |= CONFIG_VALUE_USED;
 
-       if(strcmp(cv->value, value) != 0) cv->flags |= CONFIG_VALUE_CHANGED;
+       if(strcmp(cv->value, value) != 0) {
+               cv->flags |= CONFIG_VALUE_CHANGED;
 
-       free(cv->value);
-       cv->value = strdup(value);
-       if(!cv->value) fatal("Cannot allocate config.value");
+               free(cv->value);
+               cv->value = strdup(value);
+               if(!cv->value) fatal("Cannot allocate config.value");
+       }
 
        return value;
 }
index 5cfda99be38a1e7947357ee0a018d8613dee3632..41d1e19bb54e32dcb60e31a732e20d60a8dd5650 100755 (executable)
@@ -22,6 +22,7 @@ extern int config_get_boolean(const char *section, const char *name, int value);
 extern int config_get_boolean_ondemand(const char *section, const char *name, int value);
 
 extern const char *config_set(const char *section, const char *name, const char *value);
+extern const char *config_set_default(const char *section, const char *name, const char *value);
 extern long long config_set_number(const char *section, const char *name, long long value);
 extern int config_set_boolean(const char *section, const char *name, int value);
 
index 26dee5ff22616921ab09487b774c0a56f1184299..1115eac0026691237475f4f662e9106c5cedfaca 100755 (executable)
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -592,7 +592,7 @@ void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name)
 
        char varname[CONFIG_MAX_NAME + 1];
        snprintf(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
-       config_get(st->id, varname, name);
+       config_set_default(st->id, varname, name);
 }
 
 void rrddim_free(RRDSET *st, RRDDIM *rd)