Hi, I found a problem with mod_cache and mod_proxy...
when cache is storing the data + headers in memory, it doesn't care about Transfert-Encoding... So if reverse proxy receive a response by multiple brigade, with the header Transfert-Encoding=chunked, mod_cache store it in mobj->header_out. When cache_out serve the document from cache, it setup the content-length with mobj->m_len which is the len of the file stored in mobj->m So if we had before the Transfer-Encoding set up, the response contains now these 2 headers: Transfer-Encoding: chunked\r\n Content-Length: 12457 \r\n and in case of this response, the browser refuse to display the document (html, gif, css...etc) I inserted these 2 lines before copying the headers (see patch) to delete the Transfer-Encoding in case reverse proxy receive it. and now, the browser receive only content length and can display the document. I am not sure my dirty patch is good because i don't know all what Transfer-Encoding can take as value, and all impact of this header. regards, Estrade Matthieu
? patch_cache Index: mod_mem_cache.c =================================================================== RCS file: /home/cvspublic/httpd-2.0/modules/experimental/mod_mem_cache.c,v retrieving revision 1.85 diff -u -r1.85 mod_mem_cache.c --- mod_mem_cache.c 2 Oct 2002 18:26:52 -0000 1.85 +++ mod_mem_cache.c 12 Oct 2002 14:58:46 -0000 @@ -819,6 +819,12 @@ mem_cache_object_t *mobj = (mem_cache_object_t*) obj->vobj; int rc; + /* Delete Transfer-Encoding if present, coming from reverse proxy */ + + if (apr_table_get(r->headers_out,"Transfer-Encoding")){ + apr_table_unset(r->headers_out,"Transfer-Encoding"); + } + /* * The cache needs to keep track of the following information: * - Date, LastMod, Version, ReqTime, RespTime, ContentLength