/[Apache-SVN]
ViewVC logotype

Revision 1853407


Jump to revision: Previous Next
Author: ylavic
Date: Mon Feb 11 21:55:43 2019 UTC (5 years, 2 months ago)
Changed paths: 2
Log Message:
mod_proxy_http: rework the flushing strategy when forwarding the request body.

Since the forwarding of 100-continue (end to end) in r1836588, we depended on
reading all of the requested HUGE_STRING_LEN bytes to avoid the flushes, but
this is a bit fragile.

This commit introduces the new stream_reqbody_read() function which will try a
nonblocking read first and, if it fails with EAGAIN, will flush on the backend
side before blocking for the next client side read.

We can then use it in stream_reqbody_{chunked,cl}() to flush client forwarded
data only when necessary. This both allows "optimal" flushing and simplifies
code (note that spool_reqbody_cl() also makes use of the new function but not
its nonblocking/flush functionality, thus only for consistency with the two
others, simplification and common error handling).

Also, since proxy_http_req_t::flushall/subprocess_env::proxy-flushall are now
meaningless (and unused) on the backend side, they are renamed respectively to
prefetch_nonblocking/proxy-prefetch-nonblocking, and solely determine whether
to prefetch in nonblocking mode or not. These flags were trunk only and may
not be really useful if we decided to prefetch in nonblocking mode in any case,
but for 2.4.x the opt-in looks wise.


Changed paths

Path Details
Directoryhttpd/httpd/trunk/modules/http2/mod_proxy_http2.c modified , text changed
Directoryhttpd/httpd/trunk/modules/proxy/mod_proxy_http.c modified , text changed

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26