summaryrefslogtreecommitdiffstats
path: root/src/server/ini.c
diff options
context:
space:
mode:
authorSimon Rettberg2019-09-04 19:49:11 +0200
committerSimon Rettberg2019-09-04 19:49:11 +0200
commit778fb6d2d15d534869461560d80524d74446bb84 (patch)
tree89fab1938a7cf8f317f8621ceb0e12a8f4fd575d /src/server/ini.c
parent[SERVER] Fix indentation (diff)
downloaddnbd3-778fb6d2d15d534869461560d80524d74446bb84.tar.gz
dnbd3-778fb6d2d15d534869461560d80524d74446bb84.tar.xz
dnbd3-778fb6d2d15d534869461560d80524d74446bb84.zip
[SERVER] Fix altservers_getListForClient()
The score wasn't reset when adding clients to the list, resulting in exactly one server filling up the whole list.
Diffstat (limited to 'src/server/ini.c')
-rw-r--r--src/server/ini.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/ini.c b/src/server/ini.c
index 216543b..c796d5c 100644
--- a/src/server/ini.c
+++ b/src/server/ini.c
@@ -110,7 +110,17 @@ int ini_parse_file(FILE* file, int (*handler)(void*, const char*, const char*, c
#endif
else if ( *start == '[' ) {
/* A "[section]" line */
- end = find_char_or_comment( start + 1, ']' );
+ int cnt = 0;
+ char *f = start, *sstart = start;
+ while ( *++f ) {
+ if ( *f == '[' ) cnt++;
+ if ( *f == ']' ) cnt--;
+ if ( cnt < 0 ) {
+ sstart = f - 1;
+ break;
+ }
+ }
+ end = find_char_or_comment( sstart + 1, ']' );
if ( *end == ']' ) {
*end = '\0';
strncpy0( section, start + 1, sizeof(section) );