Fri, 21 Nov 2025 17:16:46 +0100
set token delimeters for the server.config parser, fixes #760
| src/server/config/objconf.c | file | annotate | diff | comparison | revisions | |
| src/server/config/serverconfig.c | file | annotate | diff | comparison | revisions |
--- a/src/server/config/objconf.c Wed Nov 12 18:27:15 2025 +0100 +++ b/src/server/config/objconf.c Fri Nov 21 17:16:46 2025 +0100 @@ -52,7 +52,7 @@ memset(&parser, 0, sizeof(ConfigParser2)); parser.mp = mp; parser.filename = file; - parser.delim = "()/*%"; + parser.delim = "(){}/*%"; parser.validateDirective = objectconf_validate_directive; parser.validateObjBegin = objectconf_validate_objbegin; parser.validateObjEnd = objectconf_validate_objend;
--- a/src/server/config/serverconfig.c Wed Nov 12 18:27:15 2025 +0100 +++ b/src/server/config/serverconfig.c Fri Nov 21 17:16:46 2025 +0100 @@ -50,7 +50,7 @@ parser.mp = mp; parser.filename = file; parser.allow_hierarchy = true; - parser.delim = ""; + parser.delim = "{}"; ConfigNode *root = serverconfig_load_file(&parser, file); if(!root) { cxMempoolFree(mp); @@ -123,7 +123,7 @@ int i; char prev = 0; for(i=start;i<content.length;i++) { - char c = content.ptr[i]; + char c = content.ptr[i]; if(c == '\n') { if(quote) { *pos = i; @@ -302,7 +302,6 @@ int err = 0; while((token = get_next_token(parser, content, &pos)).type != CFG_NO_TOKEN) { //printf("[%.*s]\n", (int)token.content.length, token.content.ptr); fflush(stdout); - switch(token.type) { case CFG_NO_TOKEN: break; case CFG_TOKEN_COMMENT: { @@ -331,6 +330,10 @@ } // done with this object, remove it from the stack ConfigNodeStack *remove_item = node_stack; + if(!node_stack) { + err = 1; + break; + } node_stack = node_stack->next; cxFree(a, remove_item); } else if(current->type == CONFIG_NODE_OPEN_OBJECT) {