Hi,
I've been deploying Apache 1.3 instances for many years now, relying heavily on the mod_proxy / mod_rewrite couple to build our HTTP backbone.
In the past year I've met a problem with the proxying of requests made by MIDP (mobile devices) clients. Those requests were using 'Transfer-Encoding: chunked' and mod_proxy in Apache 1.3 was not willing to forward those requests correctly. I filed bug #17877 and provided a patch providing a workaround for this situation. My patch used REQUEST_CHUNKED_PASS instead of REQUEST_CHUNKED_ERROR in mod_proxy.c and passed unchanged the 'Transfer-Encoding: chunked' request header if it existed.
Even though there is a question in making mod_proxy pass hop by hop headers to the origin server as being legitimate, this patch solved my problem and has served us well since then.
I am now planning on rolling out Apache 2.0.49 and I am again faced with a similar problem. This time the 2.0.49 server is using mod_proxy / mod_rewrite / mod_dav and proxying DAV requests. DAV requests, especially those using method PUT rely heavily on 'Transfer-Encoding: chunked' as the data being PUT onto the DAV store might not have a known size in advance. The problem mentionend in bug #17877 happens again, but this time I do not see any easy way of patching httpd 2.0.49 as REQUEST_CHUNKED_PASS and the associated code has been removed back in 2000!
Is this issue a known one (I've not found anything in the bug DB about it apart from the bug I filed last year) or am I alone experiencing it? Is there any roadmap to make mod_proxy support the forwarding of chunked requests? Dechunking is really impractical in terms of memory consumption, just consider a PUT request writing an image file for a DVD, we're talking more than 4 gigs of data.
What is the position of the Apache community on the passing of 'hop by hop' headers to origin servers by mod_proxy? The code in proxy_http.c says 'RFC2616 13.5.1 says we should strip these headers', but RFC 2616 13.5.1 defines 'Hop-by-hop headers, which are meaningful only for a single transport-level connection, and are not stored by caches or
forwarded by proxies.' it never uses SHOULD or MUST as described in RFC 2119 and therefore allowing mod_proxy to forward the 'Transfer-Encoding' header would not, IMHO, violate RFC 2616 13.5.1.
Any comment welcome,
regards,
Mathias.
