I have a very minimal config file with no mod_autoindex that reacts
strangely to an HTTP 0.9 GET for /.

On AIX, I get back the raw contents of the directory file (gibberish).
It turns out that default_handler opened the htdocs directory via
apr_file_open()/open() which caused the raw directory to be returned.
On Linux, I get a 500 error and I/O errors in the log (I guess Linux
doesn't like normal I/O on directories :) ).

r->finfo.filetype is APR_DIR.  r->handler is httpd/unix-directory.

Why don't we decline if filetype is APR_DIR?  (Conceivably it could be
useful to read from some of the other filetypes?)

Here is a silly patch.  For now I'm filtering out APR_DIR files.
WW1D?  ("1" == "1.3")

Index: server/core.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/core.c,v
retrieving revision 1.138
diff -u -r1.138 core.c
--- server/core.c       27 Jan 2002 12:52:07 -0000      1.138
+++ server/core.c       29 Jan 2002 00:29:43 -0000
@@ -2900,8 +2900,9 @@
      * have a / in the middle, which probably captures the original
      * intent, but may cause problems at first - Ben 7th Jan 01
      */
-    if (strcmp(r->handler, "default-handler")
-        && !ap_strchr_c(r->handler, '/'))
+    if ((strcmp(r->handler, "default-handler")
+         && !ap_strchr_c(r->handler, '/'))
+        || r->finfo.filetype == APR_DIR)
        return DECLINED;
 
     d = (core_dir_config *)ap_get_module_config(r->per_dir_config,

Now the client should portably get a 500 error.  Better yet, error_log
has 

[warn] [client 127.0.0.1] handler "httpd/unix-directory" not found for: 
/tmp/xxx/htdocs/

On Linux, it did have

[error] (21)Is a directory: core_output_filter: Error reading from bucket.
[info] (22)Invalid argument: core_output_filter: writing data to the network

-- 
Jeff Trawick | [EMAIL PROTECTED] | PGP public key at web site:
       http://www.geocities.com/SiliconValley/Park/9289/
             Born in Roswell... married an alien...

Reply via email to