Hello!
Noticed strange delays, or even and seemingly endless loop while parsing a bunch of config files. Was able to determine that
| double=r'\s*"[^"]*"' |
| single=r'\s*\'[^\']*\'' |
| normal=r'\s*[^;\s]*' |
| s1=r'{}|{}|{}'.format(double, single, normal) |
| s=r'^\s*({})\s*((?:{})+);'.format(s1, s1) |
| m=re.compile(s).search(data[index:]) |
| ifm: |
| logging.debug("Key {0} {1}".format(m.group(1), m.group(2))) |
| k=Key(m.group(1), m.group(2)) |
| iflopenandisinstance(lopen[0], (Container, Server)): |
| lopen[0].add(k) |
| else: |
| f.add(k) ifconfelsef.append(k) |
| index+=m.end() |
| continue |
in "loads" function (lines 540-554)
takes an exponentially long time if the end of config file has lot's of spaces (starting from 18 it can take up to 5 seconds end each next space increases time more)
Sadly I'm not a regexp ninja so I can't fix it by myself and just started to clean end of a file with strip, but maybe this knowledge will help someone somehow.
python-nginx==1.5.6
Python 3.6.12 (default, Dec 1 2020, 13:45:56)
[GCC 10.2.0] on linux
Example config file attached
example.conf.txt
Hello!
Noticed strange delays, or even and seemingly endless loop while parsing a bunch of config files. Was able to determine that
python-nginx/nginx.py
Lines 540 to 554 in 20a8484
in "loads" function (lines 540-554)
takes an exponentially long time if the end of config file has lot's of spaces (starting from 18 it can take up to 5 seconds end each next space increases time more)
Sadly I'm not a regexp ninja so I can't fix it by myself and just started to clean end of a file with strip, but maybe this knowledge will help someone somehow.
python-nginx==1.5.6
Python 3.6.12 (default, Dec 1 2020, 13:45:56)
[GCC 10.2.0] on linux
Example config file attached
example.conf.txt