Thanks for the diff, commited.
Sebastian Benoit(be...@openbsd.org) on 2020.01.14 21:14:44 +0100:
> seems sensible.
>
> ok benno@
>
>
> Tracey Emery(tra...@traceyemery.net) on 2020.01.14 13:08:03 -0700:
> > Hello,
> >
> > In the server_response function of httpd, the if comparison to
> > srv_conf->maxrequests is using the wrong value. The value is derived from
> > the
> > first server configuration in httpd.conf, since we still don't know which
> > server
> > name the client is requesting.
> >
> > This small diff moves srv_conf->maxrequests usage in server_response to
> > where we finally know which configured server config to actually use.
> > This ensures we are not using the first configured server config in the
> > queue.
> >
> > Thanks,
> >
> > Tracey
> >
> > --
> >
> > Tracey Emery
> >
> > diff e80014c68b2561493718bbcef6e7fcb172d7f885 /usr/src
> > blob - 326daa6a687ff7159adc744f66b38e6ea9e266eb
> > file + usr.sbin/httpd/server_http.c
> > --- usr.sbin/httpd/server_http.c
> > +++ usr.sbin/httpd/server_http.c
> > @@ -1232,13 +1232,6 @@ server_response(struct httpd *httpd, struct client
> > *cl
> > clt->clt_persist = 0;
> > }
> >
> > - if (clt->clt_persist >= srv_conf->maxrequests)
> > - clt->clt_persist = 0;
> > -
> > - /* pipelining should end after the first "idempotent" method */
> > - if (clt->clt_pipelining && clt->clt_toread > 0)
> > - clt->clt_persist = 0;
> > -
> > /*
> > * Do we have a Host header and matching configuration?
> > * XXX the Host can also appear in the URL path.
> > @@ -1291,6 +1284,13 @@ server_response(struct httpd *httpd, struct client
> > *cl
> > goto fail;
> > srv_conf = clt->clt_srv_conf;
> > }
> > +
> > + if (clt->clt_persist >= srv_conf->maxrequests)
> > + clt->clt_persist = 0;
> > +
> > + /* pipelining should end after the first "idempotent" method */
> > + if (clt->clt_pipelining && clt->clt_toread > 0)
> > + clt->clt_persist = 0;
> >
> > if ((desc->http_host = strdup(hostname)) == NULL)
> > goto fail;
> >
>