[Haskell-cafe] Network.FastCGI does not emit stderr outputs to lighttpd's error.log?

Agent Zhang agentzh at gmail.com
Thu Jul 31 03:22:07 EDT 2008


On Thu, Jul 31, 2008 at 1:56 AM, Don Stewart <dons at galois.com> wrote:
>
> We've had no problems with this and apache at least. Is lighttpd
> doing something funny with error logging?

It seems that Apache is doing something funny :) According to my
teammate chaoslawful, apache redirects stderr to its error log files
(if any) but the fastcgi spec actually says everything should go
through the socket. And lighttpd seems to be following the spec
exactly :)

chaoslawful++ finally come up with the following patch for lighttpd
1.4.19 to make lighttpd behave in the same way as apache. Devel.Debug
is now finally working for me for my Haskell fastcgi hacking :))

 --- lighttpd-1.4.19/src/log.c    2007-08-22 01:40:03.000000000 +0800
+++ lighttpd-1.4.19-patched/src/log.c    2008-07-31 15:13:10.000000000 +0800
@@ -83,9 +83,14 @@
        /* move stderr to /dev/null */
        if (close_stderr &&
            -1 != (fd = open("/dev/null", O_WRONLY))) {
-            close(STDERR_FILENO);
+                // XXX: modified by chaoslawful, don't close stderr
when log into file
+            close(STDERR_FILENO);
+                if (srv->errorlog_mode == ERRORLOG_FILE &&
srv->errorlog_fd >=0 ) {
+                    dup2(srv->errorlog_fd,STDERR_FILENO);
+                } else {
            dup2(fd, STDERR_FILENO);
-            close(fd);
+                }
+                close(fd);
        }
        return 0;
    }

Best,
-agentzh


More information about the Haskell-Cafe mailing list