Fix httpd example config
authortb <tb@openbsd.org>
Mon, 18 Jan 2021 18:47:49 +0000 (18:47 +0000)
committertb <tb@openbsd.org>
Mon, 18 Jan 2021 18:47:49 +0000 (18:47 +0000)
commit35afa99f4712356c83f9153e4b325c967bd51d1e
tree62cc5bedb754bf06284fb281259f32bbf4818fd7
parentcb1ff3299d13a81633c2f0aaff44b7d5850b3ade
Fix httpd example config

A server configuration yields multiple struct server_config in the
env->sc_servers queue: an actual server ("parent") and one for each
location directive in httpd.conf.  In parent_configure(), the parents
are configured first, then the corresponding locations.

parse.y r1.118 kills the parent if an error is encountered on loading
the TLS keypairs but leaves the locations in the sc_servers queue.
When running the default config without TLS keys already in place, this
then leads to the self-explanatory "invalid location" error message. Its
intention is to indicates the unexpected situation that config_setserver()
encounters a location without an associated server.

Fix this by not only destroying the parent but also removing all of its
locations.

ok jsing
usr.sbin/httpd/parse.y