At 06:34 AM 7/15/2005, Roy T. Fielding wrote: >>All of it, except for the preference to RB_STREAM_CHUNKED when, >>perhaps, we could be more sub-optimal, falling back on RB_SPOOL_CL. >> >>Many RB_STREAM_CL choices, before, were equally dangerous, and that >>C-L == length_read test in the stream_reqbody_chunked() was meant >>to exclude future abuse. > >We should be sending C-L if the brigade includes the entire message. >CL is always preferred for requests. The only time we should send >T-E on a proxied request is if we cannot buffer enough of the >received request to know how large it will be.
++1 and committed! The solution was blindingly obvious, try to fetch MAX_MEM_SPOOL bytes, and determine if we hit EOS before proceeding to elect -any- C-L or T-E method :) The logic works out like this once it exceeds MAX_MEM_SPOOL; was it T-E? Unless the user overrides by setting proxy-sendcl or by setting force-proxy-downgrade-1.0, keep using T-E. proxy-sendchunks causes proxy-sendcl to be ignored for this case. was it C-L? Only stream (for unfiltered requests) or spool as C-L, unless the user overrides with proxy-sendchunks (probably to specific applications or servers that they are certain will handle chunked request bodies effectively.) proxy-sendcl causes proxy-sendchunks to be ignored for this case. Question for folks familiar with the input stack; should we loop until MAX_MEM_SPOOL is hit, or is one call to the filter (as my patch has done) enough to get about MAX_MEM_SPOOL bytes? >> * No longer upgrade HTTP/1.0 requests to the origin server as >> HTTP/1.1 unless the force-proxy-request-1.1 envvar is set. >> [William Rowe] > >-1 (veto), since it is a clear violation of > http://www.ietf.org/rfc/rfc2145.txt >and the intent of HTTP versions. Thanks! Reverted. Bill