On Tue, 26 Mar 2002, Jerry Baker wrote:

> Jerry Baker wrote:
> > 
> > I just noticed something about this problem. If you request
> > /nonexistentfile.html then the error response is sent back with
> > text/html, but if you request /nonexistentfile then it still comes back
> > as text/plain.
> > 
> > --
> > Jerry Baker
> 
> Not only that. If you request /nonexistentfile.exe, it gets sent back as
> application/octet-stream. The ErrorDocument is being returned with
> whatever content-type matches the file extension of the requested
> document. I doubt many people want to download the ErrorDocument in the
> case that they request a non-existent application/octet-stream URI.


yeah - the sub request content type is getting set by negotiation, but it 
is not being propagated up.  i am not sure how this is supposed to take 
place, but the following patch actually makes the content type set 
properly in my test cases..... although i don't think its the right fix - 
isn't that content type supposed to be propagated?  i know this stuff is 
kinda whacky - maybe this sheds some light on the situation.  anyways 
here's the patch 

Index: modules/mappers/mod_negotiation.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/mappers/mod_negotiation.c,v
retrieving revision 1.100
diff -u -r1.100 mod_negotiation.c
--- modules/mappers/mod_negotiation.c   20 Mar 2002 17:41:55 -0000      1.100
+++ modules/mappers/mod_negotiation.c   26 Mar 2002 20:54:33 -0000
@@ -942,10 +942,13 @@
             }
             else if (!strncmp(buffer, "content-type:", 13)) {
                 struct accept_rec accept_info;
+                request_rec *tmp_req;
 
                 get_entry(neg->pool, &accept_info, body);
                 set_mime_fields(&mime_info, &accept_info);
                 has_content = 1;
+                for( tmp_req = r; tmp_req != NULL; tmp_req = tmp_req->prev )
+                    tmp_req->content_type = mime_info.mime_type;
             }
             else if (!strncmp(buffer, "content-length:", 15)) {
                 mime_info.bytes = atol(body);

Reply via email to