cfparser: silently ignore CF_NO_RELOAD or CF_READONLY updates.
authorMarko Kreen <markokr@gmail.com>
Tue, 30 Nov 2010 12:55:17 +0000 (14:55 +0200)
committerMarko Kreen <markokr@gmail.com>
Tue, 30 Nov 2010 12:55:17 +0000 (14:55 +0200)
usual/cfparser.c

index 9c25a93988cf0c5f51e7e60da889161c119e3a60..9a856a26bdc37cd5e08ca66501a2552a31cdc734 100644 (file)
@@ -229,8 +229,10 @@ bool cf_set(const struct CfContext *cf, const char *sect, const char *key, const
 
        /* find section */
        s = find_sect(cf, sect);
-       if (!s)
+       if (!s) {
+               log_error("Unknown section: %s", sect);
                return false;
+       }
 
        /* find section base */
        base = cf->base;
@@ -243,15 +245,23 @@ bool cf_set(const struct CfContext *cf, const char *sect, const char *key, const
 
        /* set fixed key */
        k = find_key(s, key);
-       if (!k || !k->op.setter)
-               return false;
-       if (k->flags & CF_READONLY)
-               return false;
-       if ((k->flags & CF_NO_RELOAD) && cf->loaded)
+       if (!k) {
+               log_error("Unknown parameter: %s/%s", sect, key);
                return false;
+       }
+       if (!k->op.setter || (k->flags & CF_READONLY)) {
+               /* silently ignore */
+               return true;
+       }
+       if ((k->flags & CF_NO_RELOAD) && cf->loaded) {
+               /* silently ignore */
+               return true;
+       }
        p = get_dest(base, k);
-       if (!p)
+       if (!p) {
+               log_error("Bug - no base for relative key: %s/%s", sect, key);
                return false;
+       }
        cv.key_name = k->key_name;
        cv.extra = k->op.op_extra;
        cv.value_p = p;