[Ur] mod_fcgid and Ur/Web

Edward Z. Yang ezyang at MIT.EDU
Thu May 3 12:19:28 EDT 2012


To be more concrete, this patch makes routing work:

diff -r 5b678adda1c9 src/c/fastcgi.c
--- a/src/c/fastcgi.c   Wed May 02 17:17:57 2012 -0400
+++ b/src/c/fastcgi.c   Thu May 03 12:18:54 2012 -0400
@@ -327,8 +327,6 @@
   headers hs;
   size_t body_size = 0;
   char *body = malloc(0);
-  size_t path_size = 0;
-  char *path_buf = malloc(0);
 
   hs.uppercased = malloc(0);
   hs.uppercased_len = 0;
@@ -459,16 +457,7 @@
     }
 
     if ((path_info = search_nvps(hs.nvps, "PATH_INFO"))) {
-      int len1 = strlen(path), len2 = strlen(path_info);
-      int len = len1 + len2 + 1;
-
-      if (len > path_size) {
-        path_size = len;
-        path_buf = realloc(path_buf, path_size);
-      }
-
-      sprintf(path_buf, "%s%s", path, path_info);
-      path = path_buf;
+      path = path_info;
     }

Excerpts from Edward Z. Yang's message of Thu May 03 11:03:42 -0400 2012:
> Because you're using the FastCgiServer directive, you are using
> mod_fastcgi, *not* mod_fcgid. (This directive is only available
> for the former.  Also, it is not a valid directive in .htaccess)
> It would be a godo thing to have a story for mod_fcgid, since
> it is the "real" FastCGI module endorsed by Apache.
> 
> Getting the web server to pass exactly the right path format
> is exactly the problem here.  The convention for FastCGI deployment
> is that you setup some mod_rewrite rules which rewrite:
> 
>     /internal/path
> 
> to
> 
>     /script.fcgi/internal/path
> 
> The FastCGI itself sees the second path, and essentially every
> other FastCGI application knows that it should refer to PATH_INFO
> (which is equal to /internal/path) not REQUEST_URI (which is
> /scripts.fcgi/internal/path) for routing.
> 
> Edward
> 
> Excerpts from Adam Chlipala's message of Thu May 03 10:39:06 -0400 2012:
> > Edward Z. Yang wrote:
> > > Has anyone on this list gotten Ur/Web to work with mod_fcgid,
> > > using only .htaccess available directives?  (I keep getting
> > > 404 errors in the error log, even when I try rewriting
> > > the paths.)
> > 
> > I run all the demos on www.impredicative.com using FastCGI in Apache, 
> > though I don't remember which module I'm using.  It's the one that adds 
> > the 'FastCgiServer' directive, and the manual documents how to make such 
> > things work.
> > 
> > Getting things to work properly with an arbitrary module shouldn't be 
> > complicated.  You just have to get the web server to pass the 
> > application URI's in exactly the format it would get if you had compiled 
> > a standalone web server.
> > 
> > If you can point to a small set of short source and configuration files 
> > that illustrates the problem, I may be able to offer more specific advice.
> > 
> 



More information about the Ur mailing list