Hi Emiliano

Can you tell me what to do with this?  I don't have any experience with patching modules.

Thanks
James

Emiliano Heyns wrote:
On Sun, Jun 29, 2003 at 05:36:48PM +1000, James Gifford wrote:

  
I created a virtual directory in apache with the same path as my Midgard 
host.  But when I call my root page, Apache handles it even when there 
is no index page in the folder and indexes are not allowed in the apache 
settings.
    

Try the patch below.

=================================
Index: mod_midgard.c
===================================================================
RCS file: /home/cvsmgd/midgard/mod-preparser/mod_midgard.c,v
retrieving revision 1.38
diff -u -d -B -u -b -r1.38 mod_midgard.c
--- mod_midgard.c	14 Jun 2003 16:00:30 -0000	1.38
+++ mod_midgard.c	29 Jun 2003 08:42:26 -0000
@@ -1296,6 +1296,8 @@
 	const char *parser;
    GArray *path;
    char *uri;
+   int urilen;
+
 #if ! HAVE_MIDGARD_MULTILANG
    int auth_res;
 #else /* HAVE_MIDGARD_MULTILANG */
@@ -1320,27 +1322,6 @@
 	if (!dcfg || !dcfg->engine.on)
 		return DECLINED;
 
-   /*[eeh]  determine translated filename + handler by subrequest
-    *       _unless_ we're requesting the root page. The root page will
-    *       generally resolve to the docroot, and that'll allways
-    *       match in favor of the midgard request => root page
-    *       unreachable. Another way would be to check for
-    *       directories, but given the fact that most people
-    *       (including me) like and use directory => index.html
-    *       mapping, I'd rather use this hack.
-    */
-   if (favor_files && r->uri[0] != '\0' && (r->uri[0] != '/' || r->uri[1] != '\0')) {
-	   if ((subreq = ap_sub_req_lookup_uri(r->uri, r)) != NULL && subreq->finfo.st_mode != 0) {
-       ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r,
-           "Midgard: file %s exists [%s], not serving from database",
-           subreq->filename, subreq->content_type);
-       ap_destroy_sub_req(subreq);
-       return DECLINED;
-     }
-
-     ap_destroy_sub_req(subreq);
-   }
-
 	ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r,
 		      "midgard_translate_handler(%s, http://%s:%d%s)",
 		      dcfg->parser ?  dcfg->parser : default_parser,
@@ -1397,6 +1378,32 @@
 			      ap_get_server_name(r), ap_get_server_port(r));
 		return DECLINED;
 	}
+
+   /*[eeh]  determine translated filename + handler by subrequest
+    *       _unless_ we're requesting the root page. The root page will
+    *       generally resolve to the docroot, and that'll allways
+    *       match in favor of the midgard request => root page
+    *       unreachable. Another way would be to check for
+    *       directories, but given the fact that most people
+    *       (including me) like and use directory => index.html
+    *       mapping, I'd rather use this hack.
+    */
+   urilen = strlen(r->uri);
+   /* remove trailing '/' since prefixes in the midgard database
+    * should not have them
+    */
+   if (urilen > 0 && r->uri[urilen - 1] == '/') { urilen--; }
+   if (favor_files && host.prefix_length != urilen) {
+	   if ((subreq = ap_sub_req_lookup_uri(r->uri, r)) != NULL && subreq->finfo.st_mode != 0) {
+       ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r,
+           "Midgard: file %s exists [%s], not serving from database",
+           subreq->filename, subreq->content_type);
+       ap_destroy_sub_req(subreq);
+       return DECLINED;
+     }
+
+     ap_destroy_sub_req(subreq);
+   }
 
    /* copy found values */
    rcfg->host = host.host;
=================================
  

Reply via email to