]> git.pld-linux.org Git - packages/lighttpd.git/commitdiff
- svn 1173
authorElan Ruusamäe <glen@pld-linux.org>
Sat, 15 Jul 2006 19:51:05 +0000 (19:51 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    lighttpd-branch.diff -> 1.5

lighttpd-branch.diff

index 3104f45512ff0d56d0b8dccf8bd6fc68975f81a5..e6de803d4f7cea66863edf64e963bb6ead67b4ff 100644 (file)
@@ -1,46 +1,4 @@
---- lighttpd-1.4.11/Makefile.in        2006-03-07 14:21:08.000000000 +0200
-+++ lighttpd-1.4.12/Makefile.in        2006-07-11 21:48:16.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -41,7 +41,7 @@
-       $(srcdir)/distribute.sh.in $(srcdir)/lighttpd.spec.in \
-       $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
-       compile config.guess config.sub depcomp install-sh ltmain.sh \
--      missing mkinstalldirs
-+      missing
- subdir = .
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
-@@ -49,7 +49,7 @@
-       $(ACLOCAL_M4)
- am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
-  configure.lineno configure.status.lineno
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = config.h
- CONFIG_CLEAN_FILES = lighttpd.spec distribute.sh
- SOURCES =
-@@ -126,7 +126,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -169,6 +168,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/NEWS       2006-03-09 19:34:33.000000000 +0200
+--- ../lighttpd-1.4.11/NEWS    2006-03-09 19:34:33.000000000 +0200
 +++ lighttpd-1.4.12/NEWS       2006-07-11 22:07:54.000000000 +0300
 @@ -3,6 +3,23 @@
  NEWS
@@ -66,8 +24,8 @@
  - 1.4.11 - 2006-03-09
  
    * added ability to specify which ip address spawn-fci listens on 
---- lighttpd-1.4.11/configure.in       2006-03-04 16:32:38.000000000 +0200
-+++ lighttpd-1.4.12/configure.in       2006-07-11 22:07:54.000000000 +0300
+--- ../lighttpd-1.4.11/configure.in    2006-03-04 16:32:38.000000000 +0200
++++ lighttpd-1.4.12/configure.in       2006-07-15 22:43:22.000000000 +0300
 @@ -1,7 +1,7 @@
  #                                               -*- Autoconf -*-
  # Process this file with autoconf to produce a configure script.
  fi
  
  dnl Check for gdbm
-@@ -440,7 +456,7 @@
+@@ -381,30 +397,11 @@
+ AC_MSG_RESULT($WITH_LUA)
+ if test "$WITH_LUA" != "no"; then
+- AC_PATH_PROG(LUACONFIG, lua-config)
+-
+- if test x"$LUACONFIG" != x; then
+-   LUA_CFLAGS=`$LUACONFIG --include`
+-   LUA_LIBS=`$LUACONFIG --libs --extralibs`
++ # try pkgconfig
++ PKG_CHECK_MODULES(LUA, lua >= 5.1, [
+    AC_DEFINE([HAVE_LUA], [1], [liblua])
+    AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
+- else
+-   AC_CHECK_LIB(lua, lua_open, [
+-     AC_CHECK_HEADERS([lua.h],[
+-       LUA_LIBS="-llua -llualib"
+-       AC_DEFINE([HAVE_LUA], [1], [liblua])
+-       AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
+-     ])
+-   ])
+- fi
+-
+- if test x"$LUA_LIBS" = x; then
+-   # try pkgconfig
+-   PKG_CHECK_MODULES(LUA, lua, [
+-     AC_DEFINE([HAVE_LUA], [1], [liblua])
+-     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
+-   ])
+- fi
++ ])
+  AC_SUBST(LUA_CFLAGS)
+  AC_SUBST(LUA_LIBS)
+@@ -440,7 +437,7 @@
  esac
  
  AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
                  gethostbyname poll sigtimedwait epoll_ctl getrlimit chroot \
                  getuid select signal pathconf madvise posix_fadvise posix_madvise \
                  writev sigaction sendfile64 send_file kqueue port_create localtime_r])
-@@ -538,7 +554,7 @@
+@@ -538,7 +535,7 @@
  AC_OUTPUT
  
  
  
  plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl"
  features="regex-conditionals"
-@@ -642,6 +658,14 @@
+@@ -642,6 +639,14 @@
        disable_feature="$disable_feature $features"
  fi
  
  ## output
  
  $ECHO
---- lighttpd-1.4.11/cygwin/Makefile.in 2006-03-07 14:20:57.000000000 +0200
-+++ lighttpd-1.4.12/cygwin/Makefile.in 2006-07-11 21:48:12.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -43,7 +43,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES = lighttpd.README
- SOURCES =
-@@ -101,7 +101,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -144,6 +143,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/cygwin/lighttpd.README     2006-03-07 14:22:19.000000000 +0200
+--- ../lighttpd-1.4.11/cygwin/lighttpd.README  2006-03-07 14:22:19.000000000 +0200
 +++ lighttpd-1.4.12/cygwin/lighttpd.README     2006-07-11 22:08:04.000000000 +0300
 @@ -1,114 +1,114 @@
 -lighttpd\r
 +Cygwin port maintained by: Jan Kneschke <jan@kneschke.de>
 +Please address all questions to the Cygwin mailing list at <cygwin@cygwin.com>
 +
---- lighttpd-1.4.11/cygwin/lighttpd.README.in  2005-08-11 01:26:59.000000000 +0300
+--- ../lighttpd-1.4.11/cygwin/lighttpd.README.in       2005-08-11 01:26:59.000000000 +0300
 +++ lighttpd-1.4.12/cygwin/lighttpd.README.in  2006-07-11 22:07:53.000000000 +0300
 @@ -1,114 +1,114 @@
 -lighttpd\r
 +Cygwin port maintained by: Jan Kneschke <jan@kneschke.de>
 +Please address all questions to the Cygwin mailing list at <cygwin@cygwin.com>
 +
---- lighttpd-1.4.11/doc/Makefile.in    2006-03-07 14:20:57.000000000 +0200
-+++ lighttpd-1.4.12/doc/Makefile.in    2006-07-11 21:48:12.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -43,7 +43,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -105,7 +105,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -148,6 +147,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/doc/authentication.txt     2006-01-12 20:34:26.000000000 +0200
+--- ../lighttpd-1.4.11/doc/authentication.txt  2006-01-12 20:34:26.000000000 +0200
 +++ lighttpd-1.4.12/doc/authentication.txt     2006-07-11 22:07:54.000000000 +0300
 @@ -7,8 +7,8 @@
  ----------------
  
  :abstract:
    The auth module provides ...
---- lighttpd-1.4.11/doc/compress.txt   2005-08-11 01:26:16.000000000 +0300
+--- ../lighttpd-1.4.11/doc/compress.txt        2005-08-11 01:26:16.000000000 +0300
 +++ lighttpd-1.4.12/doc/compress.txt   2006-07-11 22:07:54.000000000 +0300
 @@ -22,12 +22,38 @@
  ===========
  Compressing Dynamic Content
  ===========================
  
---- lighttpd-1.4.11/doc/configuration.txt      2006-03-09 02:10:40.000000000 +0200
+--- ../lighttpd-1.4.11/doc/configuration.txt   2006-03-09 02:10:40.000000000 +0200
 +++ lighttpd-1.4.12/doc/configuration.txt      2006-07-11 22:07:54.000000000 +0300
 @@ -7,8 +7,8 @@
  ------------
 +debug.log-condition-cache-handling
 +  for developers only
 +  default: disabled 
---- lighttpd-1.4.11/doc/fastcgi.txt    2006-02-16 17:03:52.000000000 +0200
+--- ../lighttpd-1.4.11/doc/fastcgi.txt 2006-02-16 17:03:52.000000000 +0200
 +++ lighttpd-1.4.12/doc/fastcgi.txt    2006-07-11 22:07:54.000000000 +0300
 @@ -144,8 +144,8 @@
                  PHP can extract PATH_INFO from it (default: disabled)
  
    If bin-path is set:
  
---- lighttpd-1.4.11/doc/lighttpd.conf  2006-03-04 14:41:12.000000000 +0200
+--- ../lighttpd-1.4.11/doc/lighttpd.conf       2006-03-04 14:41:12.000000000 +0200
 +++ lighttpd-1.4.12/doc/lighttpd.conf  2006-07-11 22:07:54.000000000 +0300
 @@ -172,10 +172,11 @@
  #dir-listing.activate       = "enable"
  
  ### only root can use these options
  #
---- lighttpd-1.4.11/doc/performance.txt        2006-02-02 13:01:08.000000000 +0200
+--- ../lighttpd-1.4.11/doc/performance.txt     2006-02-02 13:01:08.000000000 +0200
 +++ lighttpd-1.4.12/doc/performance.txt        2006-07-11 22:07:54.000000000 +0300
 @@ -183,6 +183,8 @@
  
  
  Platform-Specific Notes
  =======================
---- lighttpd-1.4.11/doc/secdownload.txt        2005-12-20 15:58:58.000000000 +0200
+--- ../lighttpd-1.4.11/doc/secdownload.txt     2005-12-20 15:58:58.000000000 +0200
 +++ lighttpd-1.4.12/doc/secdownload.txt        2006-07-11 22:07:54.000000000 +0300
 @@ -118,7 +118,7 @@
    $secret = "verysecret";
    $f = "/secret-file.txt";
    
    # current timestamp
---- lighttpd-1.4.11/lighttpd.spec      2006-03-07 14:22:18.000000000 +0200
+--- ../lighttpd-1.4.11/lighttpd.spec   2006-03-07 14:22:18.000000000 +0200
 +++ lighttpd-1.4.12/lighttpd.spec      2006-07-11 22:07:58.000000000 +0300
 @@ -1,6 +1,6 @@
  Summary: A fast webserver with minimal memory-footprint (lighttpd)
  Release: 1
  Source: http://jan.kneschke.de/projects/lighttpd/download/lighttpd-%version.tar.gz
  Packager: Jan Kneschke <jan@kneschke.de>
---- lighttpd-1.4.11/openwrt/Makefile.in        2006-03-07 14:20:58.000000000 +0200
-+++ lighttpd-1.4.12/openwrt/Makefile.in        2006-07-11 21:48:12.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -43,7 +43,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES = control lighttpd.mk
- SOURCES =
-@@ -101,7 +101,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -144,6 +143,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/openwrt/control    2006-03-07 14:22:19.000000000 +0200
+--- ../lighttpd-1.4.11/openwrt/control 2006-03-07 14:22:19.000000000 +0200
 +++ lighttpd-1.4.12/openwrt/control    2006-07-11 22:08:05.000000000 +0300
 @@ -1,8 +1,8 @@
  Package: lighttpd
  Section: net
  Priority: optional
  Depends:
---- lighttpd-1.4.11/openwrt/lighttpd.mk        2006-03-07 14:22:19.000000000 +0200
+--- ../lighttpd-1.4.11/openwrt/lighttpd.mk     2006-03-07 14:22:19.000000000 +0200
 +++ lighttpd-1.4.12/openwrt/lighttpd.mk        2006-07-11 22:08:05.000000000 +0300
 @@ -10,7 +10,7 @@
  
  LIGHTTPD_TARGET=.built
  LIGHTTPD_DIR=$(BUILD_DIR)/$(LIGHTTPD)
  LIGHTTPD_IPK=$(BUILD_DIR)/$(LIGHTTPD)_mipsel.ipk
---- lighttpd-1.4.11/src/Makefile.am    2006-03-07 14:20:20.000000000 +0200
-+++ lighttpd-1.4.12/src/Makefile.am    2006-07-11 22:07:52.000000000 +0300
-@@ -82,9 +82,9 @@
- lib_LTLIBRARIES += mod_webdav.la
- mod_webdav_la_SOURCES = mod_webdav.c
--mod_webdav_la_CFLAGS = $(AM_CFLAGS) $(XML_CFLAGS) $(SQLITE_CFLAGS)
-+mod_webdav_la_CFLAGS = $(AM_CFLAGS) $(XML_CFLAGS) $(SQLITE_CFLAGS) 
- mod_webdav_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
--mod_webdav_la_LIBADD = $(common_libadd) $(XML_LIBS) $(SQLITE_LIBS)
-+mod_webdav_la_LIBADD = $(common_libadd) $(XML_LIBS) $(SQLITE_LIBS) $(UUID_LIB)
- lib_LTLIBRARIES += mod_cml.la
- mod_cml_la_SOURCES = mod_cml.c mod_cml_lua.c mod_cml_funcs.c
---- lighttpd-1.4.11/src/Makefile.in    2006-03-07 14:21:02.000000000 +0200
-+++ lighttpd-1.4.12/src/Makefile.in    2006-07-11 22:04:27.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -16,8 +16,6 @@
+--- ../lighttpd-1.4.11/src/Makefile.am 2006-03-07 14:20:20.000000000 +0200
++++ lighttpd-1.4.12/src/Makefile.am    2006-07-15 22:43:21.000000000 +0300
+@@ -16,18 +16,24 @@
+ else
+ configparser.y: lemon
+ mod_ssi_exprparser.y: lemon
++http_resp_parser.y: lemon
+ configparser.c configparser.h: configparser.y
+       rm -f configparser.h
+-      $(LEMON) -q $(srcdir)/configparser.y $(srcdir)/lempar.c
++      $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
++
++http_resp_parser.c http_resp_parser.h: http_resp_parser.y
++      rm -f http_resp_parser.h
++      $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
+ mod_ssi_exprparser.c mod_ssi_exprparser.h: mod_ssi_exprparser.y 
+       rm -f mod_ssi_exprparser.h
+-      $(LEMON) -q $(srcdir)/mod_ssi_exprparser.y $(srcdir)/lempar.c
++      $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
+ endif
  
+ configfile.c: configparser.h
+ mod_ssi_expr.c: mod_ssi_exprparser.h
++http_resp.c: http_resp_parser.h
  
--SOURCES = $(liblightcomp_la_SOURCES) $(mod_access_la_SOURCES) $(mod_accesslog_la_SOURCES) $(mod_alias_la_SOURCES) $(mod_auth_la_SOURCES) $(mod_cgi_la_SOURCES) $(mod_cml_la_SOURCES) $(mod_compress_la_SOURCES) $(mod_dirlisting_la_SOURCES) $(mod_evasive_la_SOURCES) $(mod_evhost_la_SOURCES) $(mod_expire_la_SOURCES) $(mod_fastcgi_la_SOURCES) $(mod_flv_streaming_la_SOURCES) $(mod_indexfile_la_SOURCES) $(mod_mysql_vhost_la_SOURCES) $(mod_proxy_la_SOURCES) $(mod_redirect_la_SOURCES) $(mod_rewrite_la_SOURCES) $(mod_rrdtool_la_SOURCES) $(mod_scgi_la_SOURCES) $(mod_secdownload_la_SOURCES) $(mod_setenv_la_SOURCES) $(mod_simple_vhost_la_SOURCES) $(mod_ssi_la_SOURCES) $(mod_staticfile_la_SOURCES) $(mod_status_la_SOURCES) $(mod_trigger_b4_dl_la_SOURCES) $(mod_userdir_la_SOURCES) $(mod_usertrack_la_SOURCES) $(mod_webdav_la_SOURCES) $(lemon_SOURCES) $(lighttpd_SOURCES) $(proc_open_SOURCES) $(spawn_fcgi_SOURCES)
--
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -57,7 +55,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-@@ -84,7 +82,8 @@
-       inet_ntop_cache.c crc32.c connections-glue.c configfile-glue.c \
-       http-header-glue.c network_write.c network_linux_sendfile.c \
-       network_freebsd_sendfile.c network_writev.c \
--      network_solaris_sendfilev.c network_openssl.c splaytree.c
-+      network_solaris_sendfilev.c network_openssl.c splaytree.c \
-+      http_resp.c http_resp_parser.c
- am__objects_1 = liblightcomp_la-buffer.lo liblightcomp_la-log.lo \
-       liblightcomp_la-keyvalue.lo liblightcomp_la-chunk.lo \
-       liblightcomp_la-http_chunk.lo liblightcomp_la-stream.lo \
-@@ -111,7 +110,8 @@
-       liblightcomp_la-network_writev.lo \
-       liblightcomp_la-network_solaris_sendfilev.lo \
-       liblightcomp_la-network_openssl.lo \
--      liblightcomp_la-splaytree.lo
-+      liblightcomp_la-splaytree.lo liblightcomp_la-http_resp.lo \
-+      liblightcomp_la-http_resp_parser.lo
- @NO_RDYNAMIC_TRUE@am_liblightcomp_la_OBJECTS = $(am__objects_1)
- liblightcomp_la_OBJECTS = $(am_liblightcomp_la_OBJECTS)
- @NO_RDYNAMIC_TRUE@am_liblightcomp_la_rpath = -rpath $(libdir)
-@@ -193,6 +193,9 @@
- mod_simple_vhost_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
- am_mod_simple_vhost_la_OBJECTS = mod_simple_vhost.lo
- mod_simple_vhost_la_OBJECTS = $(am_mod_simple_vhost_la_OBJECTS)
-+mod_sql_vhost_core_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
-+am_mod_sql_vhost_core_la_OBJECTS = mod_sql_vhost_core.lo
-+mod_sql_vhost_core_la_OBJECTS = $(am_mod_sql_vhost_core_la_OBJECTS)
- mod_ssi_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
- am_mod_ssi_la_OBJECTS = mod_ssi_exprparser.lo mod_ssi_expr.lo \
-       mod_ssi.lo
-@@ -236,7 +239,8 @@
-       connections-glue.c configfile-glue.c http-header-glue.c \
-       network_write.c network_linux_sendfile.c \
-       network_freebsd_sendfile.c network_writev.c \
--      network_solaris_sendfilev.c network_openssl.c splaytree.c
-+      network_solaris_sendfilev.c network_openssl.c splaytree.c \
-+      http_resp.c http_resp_parser.c
- am__objects_2 = buffer.$(OBJEXT) log.$(OBJEXT) keyvalue.$(OBJEXT) \
-       chunk.$(OBJEXT) http_chunk.$(OBJEXT) stream.$(OBJEXT) \
-       fdevent.$(OBJEXT) stat_cache.$(OBJEXT) plugin.$(OBJEXT) \
-@@ -254,7 +258,8 @@
-       network_linux_sendfile.$(OBJEXT) \
-       network_freebsd_sendfile.$(OBJEXT) network_writev.$(OBJEXT) \
-       network_solaris_sendfilev.$(OBJEXT) network_openssl.$(OBJEXT) \
--      splaytree.$(OBJEXT)
-+      splaytree.$(OBJEXT) http_resp.$(OBJEXT) \
-+      http_resp_parser.$(OBJEXT)
- @NO_RDYNAMIC_FALSE@am__objects_3 = $(am__objects_2)
- am__objects_4 = server.$(OBJEXT) response.$(OBJEXT) \
-       connections.$(OBJEXT) network.$(OBJEXT) configfile.$(OBJEXT) \
-@@ -282,8 +287,8 @@
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
--      $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+LINK = $(LIBTOOL) --tag=CC --mode=link "$(CCLD)" $(AM_CFLAGS) \
-+      $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- SOURCES = $(liblightcomp_la_SOURCES) $(mod_access_la_SOURCES) \
-       $(mod_accesslog_la_SOURCES) $(mod_alias_la_SOURCES) \
-       $(mod_auth_la_SOURCES) $(mod_cgi_la_SOURCES) \
-@@ -296,11 +301,12 @@
-       $(mod_rewrite_la_SOURCES) $(mod_rrdtool_la_SOURCES) \
-       $(mod_scgi_la_SOURCES) $(mod_secdownload_la_SOURCES) \
-       $(mod_setenv_la_SOURCES) $(mod_simple_vhost_la_SOURCES) \
--      $(mod_ssi_la_SOURCES) $(mod_staticfile_la_SOURCES) \
--      $(mod_status_la_SOURCES) $(mod_trigger_b4_dl_la_SOURCES) \
--      $(mod_userdir_la_SOURCES) $(mod_usertrack_la_SOURCES) \
--      $(mod_webdav_la_SOURCES) $(lemon_SOURCES) $(lighttpd_SOURCES) \
--      $(proc_open_SOURCES) $(spawn_fcgi_SOURCES)
-+      $(mod_sql_vhost_core_la_SOURCES) $(mod_ssi_la_SOURCES) \
-+      $(mod_staticfile_la_SOURCES) $(mod_status_la_SOURCES) \
-+      $(mod_trigger_b4_dl_la_SOURCES) $(mod_userdir_la_SOURCES) \
-+      $(mod_usertrack_la_SOURCES) $(mod_webdav_la_SOURCES) \
-+      $(lemon_SOURCES) $(lighttpd_SOURCES) $(proc_open_SOURCES) \
-+      $(spawn_fcgi_SOURCES)
- DIST_SOURCES = $(am__liblightcomp_la_SOURCES_DIST) \
-       $(mod_access_la_SOURCES) $(mod_accesslog_la_SOURCES) \
-       $(mod_alias_la_SOURCES) $(mod_auth_la_SOURCES) \
-@@ -313,7 +319,8 @@
-       $(mod_redirect_la_SOURCES) $(mod_rewrite_la_SOURCES) \
-       $(mod_rrdtool_la_SOURCES) $(mod_scgi_la_SOURCES) \
-       $(mod_secdownload_la_SOURCES) $(mod_setenv_la_SOURCES) \
--      $(mod_simple_vhost_la_SOURCES) $(mod_ssi_la_SOURCES) \
-+      $(mod_simple_vhost_la_SOURCES) \
-+      $(mod_sql_vhost_core_la_SOURCES) $(mod_ssi_la_SOURCES) \
-       $(mod_staticfile_la_SOURCES) $(mod_status_la_SOURCES) \
-       $(mod_trigger_b4_dl_la_SOURCES) $(mod_userdir_la_SOURCES) \
-       $(mod_usertrack_la_SOURCES) $(mod_webdav_la_SOURCES) \
-@@ -375,7 +382,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -418,6 +424,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-@@ -479,7 +486,7 @@
+ common_src=buffer.c log.c \
+       keyvalue.c chunk.c  \
+@@ -46,7 +52,7 @@
        network_write.c network_linux_sendfile.c \
        network_freebsd_sendfile.c network_writev.c \
        network_solaris_sendfilev.c network_openssl.c \
 -      splaytree.c 
 +      splaytree.c http_resp.c http_resp_parser.c 
+       
+ src = server.c response.c connections.c network.c \
+       configfile.c configparser.c request.c proc_open.c
+@@ -82,9 +88,9 @@
  
- src = server.c response.c connections.c network.c configfile.c \
-       configparser.c request.c proc_open.c $(am__append_2)
-@@ -491,10 +498,11 @@
- #mod_httptls_la_LIBADD = $(common_libadd)
- lib_LTLIBRARIES = $(am__append_1) mod_flv_streaming.la mod_evasive.la \
-       mod_webdav.la mod_cml.la mod_trigger_b4_dl.la \
--      mod_mysql_vhost.la mod_cgi.la mod_scgi.la mod_staticfile.la \
--      mod_dirlisting.la mod_indexfile.la mod_setenv.la mod_alias.la \
--      mod_userdir.la mod_rrdtool.la mod_usertrack.la mod_proxy.la \
--      mod_ssi.la mod_secdownload.la mod_expire.la mod_evhost.la \
-+      mod_mysql_vhost.la mod_sql_vhost_core.la mod_cgi.la \
-+      mod_scgi.la mod_staticfile.la mod_dirlisting.la \
-+      mod_indexfile.la mod_setenv.la mod_alias.la mod_userdir.la \
-+      mod_rrdtool.la mod_usertrack.la mod_proxy.la mod_ssi.la \
-+      mod_secdownload.la mod_expire.la mod_evhost.la \
-       mod_simple_vhost.la mod_fastcgi.la mod_access.la \
-       mod_compress.la mod_auth.la mod_rewrite.la mod_redirect.la \
-       mod_status.la mod_accesslog.la
-@@ -511,9 +519,9 @@
- mod_evasive_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
- mod_evasive_la_LIBADD = $(common_libadd)
+ lib_LTLIBRARIES += mod_webdav.la
  mod_webdav_la_SOURCES = mod_webdav.c
 -mod_webdav_la_CFLAGS = $(AM_CFLAGS) $(XML_CFLAGS) $(SQLITE_CFLAGS)
 +mod_webdav_la_CFLAGS = $(AM_CFLAGS) $(XML_CFLAGS) $(SQLITE_CFLAGS) 
  mod_webdav_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
 -mod_webdav_la_LIBADD = $(common_libadd) $(XML_LIBS) $(SQLITE_LIBS)
 +mod_webdav_la_LIBADD = $(common_libadd) $(XML_LIBS) $(SQLITE_LIBS) $(UUID_LIB)
+ lib_LTLIBRARIES += mod_cml.la
  mod_cml_la_SOURCES = mod_cml.c mod_cml_lua.c mod_cml_funcs.c
- mod_cml_la_CFLAGS = $(AM_CFLAGS) $(LUA_CFLAGS)
- mod_cml_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
-@@ -525,6 +533,9 @@
- mod_mysql_vhost_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
+@@ -103,6 +109,11 @@
  mod_mysql_vhost_la_LIBADD = $(MYSQL_LIBS) $(common_libadd)
  mod_mysql_vhost_la_CPPFLAGS = $(MYSQL_INCLUDE)
++lib_LTLIBRARIES += mod_sql_vhost_core.la
 +mod_sql_vhost_core_la_SOURCES = mod_sql_vhost_core.c
 +mod_sql_vhost_core_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
 +mod_sql_vhost_core_la_LIBADD = $(common_libadd)
++
+ lib_LTLIBRARIES += mod_cgi.la
  mod_cgi_la_SOURCES = mod_cgi.c 
  mod_cgi_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
- mod_cgi_la_LIBADD = $(common_libadd)
-@@ -608,7 +619,8 @@
+@@ -240,7 +251,8 @@
        mod_ssi.h mod_ssi_expr.h inet_ntop_cache.h \
        configparser.h mod_ssi_exprparser.h \
        sys-mmap.h sys-socket.h mod_cml.h mod_cml_funcs.h \
 -      splaytree.h proc_open.h
 +      splaytree.h proc_open.h http_resp.h mod_sql_vhost_core.h \
-+        sys-files.h sys-process.h sys-strings.h
- lighttpd_SOURCES = $(src)
- lighttpd_LDADD = $(PCRE_LIB) $(DL_LIB) $(SENDFILE_LIB) $(ATTR_LIB) $(common_libadd) $(SSL_LIB) $(FAM_LIBS)
-@@ -739,6 +751,8 @@
-       $(LINK) -rpath $(libdir) $(mod_setenv_la_LDFLAGS) $(mod_setenv_la_OBJECTS) $(mod_setenv_la_LIBADD) $(LIBS)
- mod_simple_vhost.la: $(mod_simple_vhost_la_OBJECTS) $(mod_simple_vhost_la_DEPENDENCIES) 
-       $(LINK) -rpath $(libdir) $(mod_simple_vhost_la_LDFLAGS) $(mod_simple_vhost_la_OBJECTS) $(mod_simple_vhost_la_LIBADD) $(LIBS)
-+mod_sql_vhost_core.la: $(mod_sql_vhost_core_la_OBJECTS) $(mod_sql_vhost_core_la_DEPENDENCIES) 
-+      $(LINK) -rpath $(libdir) $(mod_sql_vhost_core_la_LDFLAGS) $(mod_sql_vhost_core_la_OBJECTS) $(mod_sql_vhost_core_la_LIBADD) $(LIBS)
- mod_ssi.la: $(mod_ssi_la_OBJECTS) $(mod_ssi_la_DEPENDENCIES) 
-       $(LINK) -rpath $(libdir) $(mod_ssi_la_LDFLAGS) $(mod_ssi_la_OBJECTS) $(mod_ssi_la_LIBADD) $(LIBS)
- mod_staticfile.la: $(mod_staticfile_la_OBJECTS) $(mod_staticfile_la_DEPENDENCIES) 
-@@ -863,6 +877,8 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_auth.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_auth_digest.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_chunk.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_resp.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_resp_parser.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet_ntop_cache.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/joblist.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyvalue.Po@am__quote@
-@@ -890,6 +906,8 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-fdevent_solaris_devpoll.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-http-header-glue.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-http_chunk.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-http_resp.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-http_resp_parser.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-inet_ntop_cache.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-joblist.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblightcomp_la-keyvalue.Plo@am__quote@
-@@ -932,6 +950,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_secure_download.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_setenv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_simple_vhost.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_sql_vhost_core.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_ssi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_ssi_expr.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_ssi_exprparser.Plo@am__quote@
-@@ -1247,6 +1266,20 @@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblightcomp_la_CFLAGS) $(CFLAGS) -c -o liblightcomp_la-splaytree.lo `test -f 'splaytree.c' || echo '$(srcdir)/'`splaytree.c
-+liblightcomp_la-http_resp.lo: http_resp.c
-+@am__fastdepCC_TRUE@  if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblightcomp_la_CFLAGS) $(CFLAGS) -MT liblightcomp_la-http_resp.lo -MD -MP -MF "$(DEPDIR)/liblightcomp_la-http_resp.Tpo" -c -o liblightcomp_la-http_resp.lo `test -f 'http_resp.c' || echo '$(srcdir)/'`http_resp.c; \
-+@am__fastdepCC_TRUE@  then mv -f "$(DEPDIR)/liblightcomp_la-http_resp.Tpo" "$(DEPDIR)/liblightcomp_la-http_resp.Plo"; else rm -f "$(DEPDIR)/liblightcomp_la-http_resp.Tpo"; exit 1; fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@     source='http_resp.c' object='liblightcomp_la-http_resp.lo' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblightcomp_la_CFLAGS) $(CFLAGS) -c -o liblightcomp_la-http_resp.lo `test -f 'http_resp.c' || echo '$(srcdir)/'`http_resp.c
-+
-+liblightcomp_la-http_resp_parser.lo: http_resp_parser.c
-+@am__fastdepCC_TRUE@  if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblightcomp_la_CFLAGS) $(CFLAGS) -MT liblightcomp_la-http_resp_parser.lo -MD -MP -MF "$(DEPDIR)/liblightcomp_la-http_resp_parser.Tpo" -c -o liblightcomp_la-http_resp_parser.lo `test -f 'http_resp_parser.c' || echo '$(srcdir)/'`http_resp_parser.c; \
-+@am__fastdepCC_TRUE@  then mv -f "$(DEPDIR)/liblightcomp_la-http_resp_parser.Tpo" "$(DEPDIR)/liblightcomp_la-http_resp_parser.Plo"; else rm -f "$(DEPDIR)/liblightcomp_la-http_resp_parser.Tpo"; exit 1; fi
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@     source='http_resp_parser.c' object='liblightcomp_la-http_resp_parser.lo' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblightcomp_la_CFLAGS) $(CFLAGS) -c -o liblightcomp_la-http_resp_parser.lo `test -f 'http_resp_parser.c' || echo '$(srcdir)/'`http_resp_parser.c
-+
- mod_cml_la-mod_cml.lo: mod_cml.c
- @am__fastdepCC_TRUE@  if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mod_cml_la_CFLAGS) $(CFLAGS) -MT mod_cml_la-mod_cml.lo -MD -MP -MF "$(DEPDIR)/mod_cml_la-mod_cml.Tpo" -c -o mod_cml_la-mod_cml.lo `test -f 'mod_cml.c' || echo '$(srcdir)/'`mod_cml.c; \
- @am__fastdepCC_TRUE@  then mv -f "$(DEPDIR)/mod_cml_la-mod_cml.Tpo" "$(DEPDIR)/mod_cml_la-mod_cml.Plo"; else rm -f "$(DEPDIR)/mod_cml_la-mod_cml.Tpo"; exit 1; fi
-@@ -1506,14 +1539,19 @@
- @CROSS_COMPILING_TRUE@mod_ssi_exprparser.c mod_ssi_exprparser.h: 
- @CROSS_COMPILING_FALSE@configparser.y: lemon
- @CROSS_COMPILING_FALSE@mod_ssi_exprparser.y: lemon
-+@CROSS_COMPILING_FALSE@http_resp_parser.y: lemon
- @CROSS_COMPILING_FALSE@configparser.c configparser.h: configparser.y
- @CROSS_COMPILING_FALSE@       rm -f configparser.h
--@CROSS_COMPILING_FALSE@       $(LEMON) -q $(srcdir)/configparser.y $(srcdir)/lempar.c
-+@CROSS_COMPILING_FALSE@       $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
-+
-+@CROSS_COMPILING_FALSE@http_resp_parser.c http_resp_parser.h: http_resp_parser.y
-+@CROSS_COMPILING_FALSE@       rm -f http_resp_parser.h
-+@CROSS_COMPILING_FALSE@       $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
- @CROSS_COMPILING_FALSE@mod_ssi_exprparser.c mod_ssi_exprparser.h: mod_ssi_exprparser.y 
- @CROSS_COMPILING_FALSE@       rm -f mod_ssi_exprparser.h
--@CROSS_COMPILING_FALSE@       $(LEMON) -q $(srcdir)/mod_ssi_exprparser.y $(srcdir)/lempar.c
-+@CROSS_COMPILING_FALSE@       $(LEMON) -q $(srcdir)/$< $(srcdir)/lempar.c
++      sys-files.h sys-process.h sys-strings.h http_resp_parser.h
  
- configfile.c: configparser.h
- mod_ssi_expr.c: mod_ssi_exprparser.h
---- lighttpd-1.4.11/src/array.c        2005-11-18 13:58:32.000000000 +0200
+ DEFS= @DEFS@ -DLIBRARY_DIR="\"$(libdir)\""
+@@ -267,4 +279,4 @@
+ #ajp_SOURCES = ajp.c
+ noinst_HEADERS   = $(hdr)
+-EXTRA_DIST = mod_skeleton.c configparser.y mod_ssi_exprparser.y lempar.c
++EXTRA_DIST = mod_skeleton.c configparser.y mod_ssi_exprparser.y lempar.c http_resp_parser.y
+--- ../lighttpd-1.4.11/src/array.c     2005-11-18 13:58:32.000000000 +0200
 +++ lighttpd-1.4.12/src/array.c        2006-07-11 22:07:51.000000000 +0300
 @@ -11,12 +11,12 @@
  
        return 0;
  }
  #endif
---- lighttpd-1.4.11/src/array.h        2005-09-23 21:24:18.000000000 +0300
+--- ../lighttpd-1.4.11/src/array.h     2005-09-23 21:24:18.000000000 +0300
 +++ lighttpd-1.4.12/src/array.h        2006-07-11 22:07:51.000000000 +0300
 @@ -16,7 +16,7 @@
  #define DATA_UNSET \
        int usage; /* fair-balancing needs the no. of connections active on this host */
        int last_used_ndx; /* round robin */
  } data_fastcgi;
---- lighttpd-1.4.11/src/base.h 2006-01-11 16:51:04.000000000 +0200
-+++ lighttpd-1.4.12/src/base.h 2006-07-11 22:07:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/base.h      2006-01-11 16:51:04.000000000 +0200
++++ lighttpd-1.4.12/src/base.h 2006-07-15 22:43:21.000000000 +0300
 @@ -2,7 +2,6 @@
  #define _BASE_H_
  
  /* solaris and NetBSD 1.3.x again */
  #if (!defined(HAVE_STDINT_H)) && (!defined(HAVE_INTTYPES_H)) && (!defined(uint32_t))
 -# define uint32_t u_int32_t
-+//# define uint32_t u_int32_t
++/* # define uint32_t u_int32_t */
 +typedef unsigned __int32 uint32_t;
  #endif
  
        config_values_type_t type;
        config_scope_type_t scope;
  } config_values_t;
-@@ -142,40 +137,40 @@
+@@ -118,18 +113,6 @@
+       short factor;
+ } fcgi_connections;
+-
+-typedef union {
+-#ifdef HAVE_IPV6
+-      struct sockaddr_in6 ipv6;
+-#endif
+-      struct sockaddr_in ipv4;
+-#ifdef HAVE_SYS_UN_H
+-      struct sockaddr_un un;
+-#endif
+-      struct sockaddr plain;
+-} sock_addr;
+-
+ /* fcgi_response_header contains ... */
+ #define HTTP_STATUS         BV(0)
+ #define HTTP_CONNECTION     BV(1)
+@@ -142,40 +125,40 @@
        /* the request-line */
        buffer *request;
        buffer *uri;
                HTTP_TRANSFER_ENCODING_IDENTITY, HTTP_TRANSFER_ENCODING_CHUNKED
        } transfer_encoding;
  } response;
-@@ -191,21 +186,21 @@
+@@ -191,21 +174,21 @@
  typedef struct {
        buffer *path;
        buffer *basedir; /* path = "(basedir)(.*)" */
  #ifdef HAVE_FAM_H
        int    dir_version;
        int    dir_ndx;
-@@ -215,8 +210,8 @@
+@@ -215,8 +198,8 @@
  } stat_cache_entry;
  
  typedef struct {
        buffer *dir_name; /* for building the dirname from the filename */
  #ifdef HAVE_FAM_H
        splay_tree *dirs; /* the nodes of the tree are fam_dir_entry */
-@@ -228,7 +223,7 @@
+@@ -228,7 +211,7 @@
  
  typedef struct {
        array *mimetypes;
        /* virtual-servers */
        buffer *document_root;
        buffer *server_name;
-@@ -236,7 +231,7 @@
+@@ -236,7 +219,7 @@
        buffer *server_tag;
        buffer *dirlist_encoding;
        buffer *errorfile_prefix;
        unsigned short max_keep_alive_requests;
        unsigned short max_keep_alive_idle;
        unsigned short max_read_idle;
-@@ -244,16 +239,17 @@
+@@ -244,16 +227,17 @@
        unsigned short use_xattr;
        unsigned short follow_symlink;
        unsigned short range_requests;
        /* server wide */
        buffer *ssl_pemfile;
        buffer *ssl_ca_file;
-@@ -268,22 +264,22 @@
+@@ -268,22 +252,22 @@
        /* configside */
        unsigned short global_kbytes_per_second; /*  */
  
  #ifdef USE_OPENSSL
        SSL_CTX *ssl_ctx;
  #endif
-@@ -291,18 +287,18 @@
+@@ -291,18 +275,18 @@
  
  /* the order of the items should be the same as they are processed
   * read before write as we use this later */
  } connection_state_t;
  
  typedef enum { COND_RESULT_UNSET, COND_RESULT_FALSE, COND_RESULT_TRUE } cond_result_t;
-@@ -315,88 +311,88 @@
+@@ -315,88 +299,88 @@
  
  typedef struct {
        connection_state_t state;
  #ifdef USE_OPENSSL
        SSL *ssl;
  #endif
-@@ -439,39 +435,48 @@
+@@ -439,39 +423,48 @@
        size_t size;
  } buffer_plugin;
  
        } stat_cache_engine;
        unsigned short enable_cores;
  } server_config;
-@@ -480,14 +485,14 @@
+@@ -480,14 +473,14 @@
        sock_addr addr;
        int       fd;
        int       fde_ndx;
  #ifdef USE_OPENSSL
        SSL_CTX *ssl_ctx;
  #endif
-@@ -495,37 +500,37 @@
+@@ -495,37 +488,37 @@
  
  typedef struct {
        server_socket **ptr;
        size_t max_conns;
  
        /* buffers */
-@@ -533,13 +538,13 @@
+@@ -533,13 +526,13 @@
        buffer *response_header;
        buffer *response_range;
        buffer *tmp_buf;
        /* caches */
  #ifdef HAVE_IPV6
        inet_ntop_cache_type inet_ntop_cache[INET_NTOP_CACHE_MAX];
-@@ -547,31 +552,31 @@
+@@ -547,31 +540,31 @@
        mtime_cache_type mtime_cache[FILE_CACHE_MAX];
  
        array *split_vals;
        stat_cache  *stat_cache;
  
        /**
-@@ -588,18 +593,20 @@
+@@ -588,18 +581,20 @@
         *   fastcgi.backend.<key>.disconnects = ...
         */
        array *status;
  } server;
  
  
---- lighttpd-1.4.11/src/buffer.c       2006-01-13 00:00:45.000000000 +0200
+--- ../lighttpd-1.4.11/src/buffer.c    2006-01-13 00:00:45.000000000 +0200
 +++ lighttpd-1.4.12/src/buffer.c       2006-07-11 22:07:52.000000000 +0300
 @@ -12,20 +12,20 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/buffer.h       2006-01-13 00:00:45.000000000 +0200
+--- ../lighttpd-1.4.11/src/buffer.h    2006-01-13 00:00:45.000000000 +0200
 +++ lighttpd-1.4.12/src/buffer.h       2006-07-11 22:07:52.000000000 +0300
 @@ -12,27 +12,44 @@
  
  #define SEGFAULT() do { fprintf(stderr, "%s.%d: aborted\n", __FILE__, __LINE__); abort(); } while(0)
  #define UNUSED(x) ( (void)(x) )
  
---- lighttpd-1.4.11/src/chunk.c        2005-11-18 15:18:19.000000000 +0200
+--- ../lighttpd-1.4.11/src/chunk.c     2005-11-18 15:18:19.000000000 +0200
 +++ lighttpd-1.4.12/src/chunk.c        2006-07-11 22:07:51.000000000 +0300
 @@ -1,16 +1,14 @@
  /**
                        break;
                }
  
---- lighttpd-1.4.11/src/chunk.h        2005-11-01 09:32:21.000000000 +0200
+--- ../lighttpd-1.4.11/src/chunk.h     2005-11-01 09:32:21.000000000 +0200
 +++ lighttpd-1.4.12/src/chunk.h        2006-07-11 22:07:51.000000000 +0300
 @@ -6,7 +6,7 @@
  
        chunk *unused;
        size_t unused_chunks;
  
---- lighttpd-1.4.11/src/configfile-glue.c      2006-03-03 20:14:56.000000000 +0200
+--- ../lighttpd-1.4.11/src/configfile-glue.c   2006-03-03 20:14:56.000000000 +0200
 +++ lighttpd-1.4.12/src/configfile-glue.c      2006-07-11 22:07:51.000000000 +0300
 @@ -1,4 +1,5 @@
  #include <string.h>
 +#endif
 +}
 +
---- lighttpd-1.4.11/src/configfile.c   2006-02-15 14:26:42.000000000 +0200
-+++ lighttpd-1.4.12/src/configfile.c   2006-07-11 22:07:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/configfile.c        2006-02-15 14:26:42.000000000 +0200
++++ lighttpd-1.4.12/src/configfile.c   2006-07-15 22:43:21.000000000 +0300
 @@ -2,7 +2,6 @@
  
  #include <stdlib.h>
  #include <errno.h>
  #include <string.h>
  #include <stdio.h>
-@@ -13,21 +12,23 @@
+@@ -13,21 +12,24 @@
  #include "log.h"
  #include "stream.h"
  #include "plugin.h"
  #include "proc_open.h"
  
 +#include "sys-files.h"
++#include "sys-process.h"
 +
 +#ifndef PATH_MAX
 +/* win32 */
                { "server.bind",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 0 */
                { "server.errorlog",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 1 */
                { "server.errorfile-prefix",     NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 2 */
-@@ -38,7 +39,7 @@
+@@ -38,7 +40,7 @@
                { "server.tag",                  NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 7 */
                { "server.use-ipv6",             NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */
                { "server.modules",              NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_SERVER },       /* 9 */
                { "server.event-handler",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 10 */
                { "server.pid-file",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 11 */
                { "server.max-request-size",     NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 12 */
-@@ -49,7 +50,7 @@
+@@ -49,7 +51,7 @@
                { "server.max-keep-alive-requests", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 17 */
                { "server.name",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 18 */
                { "server.max-keep-alive-idle",  NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 19 */
                { "server.max-read-idle",        NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 20 */
                { "server.max-write-idle",       NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 21 */
                { "server.error-handler-404",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 22 */
-@@ -60,19 +61,19 @@
+@@ -60,19 +62,19 @@
                { "mimetype.use-xattr",          NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 27 */
                { "mimetype.assign",             NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 28 */
                { "ssl.pemfile",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 29 */
                { "server.errorlog-use-syslog",  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 39 */
                { "server.range-requests",       NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 40 */
                { "server.stat-cache-engine",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 41 */
-@@ -80,7 +81,8 @@
+@@ -80,7 +82,8 @@
                { "server.network-backend",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 43 */
                { "server.upload-dirs",          NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 44 */
                { "server.core-files",           NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 45 */
                { "server.host",                 "use server.bind instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
                { "server.docroot",              "use server.document-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
                { "server.virtual-root",         "load mod_simple_vhost and use simple-vhost.server-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
-@@ -90,11 +92,11 @@
+@@ -90,11 +93,11 @@
                { "server.groupid",              "use server.groupname instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
                { "server.use-keep-alive",       "use server.max-keep-alive-requests = 0 instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
                { "server.force-lower-case-files",       "use server.force-lowercase-filenames instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        /* 0 */
        cv[0].destination = srv->srvconf.bindhost;
        cv[1].destination = srv->srvconf.errorlog_file;
-@@ -102,33 +104,33 @@
+@@ -102,33 +105,33 @@
        cv[4].destination = srv->srvconf.username;
        cv[5].destination = srv->srvconf.groupname;
        cv[6].destination = &(srv->srvconf.port);
                s = calloc(1, sizeof(specific_config));
                assert(s);
                s->document_root = buffer_init();
-@@ -154,17 +156,18 @@
+@@ -154,17 +157,18 @@
                s->global_kbytes_per_second = 0;
                s->global_bytes_per_second_cnt = 0;
                s->global_bytes_per_second_cnt_ptr = &s->global_bytes_per_second_cnt;
                cv[17].destination = &(s->max_keep_alive_requests);
                cv[18].destination = s->server_name;
                cv[19].destination = &(s->max_keep_alive_idle);
-@@ -179,23 +182,23 @@
+@@ -179,23 +183,23 @@
                cv[28].destination = s->mimetypes;
                cv[29].destination = s->ssl_pemfile;
                cv[30].destination = &(s->is_ssl);
        if (buffer_is_empty(stat_cache_string)) {
                srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_SIMPLE;
        } else if (buffer_is_equal_string(stat_cache_string, CONST_STR_LEN("simple"))) {
-@@ -205,22 +208,22 @@
+@@ -205,22 +209,22 @@
        } else if (buffer_is_equal_string(stat_cache_string, CONST_STR_LEN("disable"))) {
                srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_NONE;
        } else {
        PATCH(allow_http11);
        PATCH(mimetypes);
        PATCH(document_root);
-@@ -236,20 +239,21 @@
+@@ -236,20 +240,21 @@
        PATCH(kbytes_per_second);
        PATCH(global_kbytes_per_second);
        PATCH(global_bytes_per_second_cnt);
        PATCH(ssl_pemfile);
        PATCH(ssl_ca_file);
        return 0;
-@@ -257,22 +261,22 @@
+@@ -257,22 +262,22 @@
  
  int config_patch_connection(server *srv, connection *con, comp_key_t comp) {
        size_t i, j;
                        if (buffer_is_equal_string(du->key, CONST_STR_LEN("server.document-root"))) {
                                PATCH(document_root);
                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("server.range-requests"))) {
-@@ -315,11 +319,13 @@
+@@ -315,11 +320,13 @@
                                PATCH(log_response_header);
                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("debug.log-condition-handling"))) {
                                PATCH(log_condition_handling);
                                PATCH(force_lowercase_filenames);
                        } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("server.kbytes-per-second"))) {
                                PATCH(global_kbytes_per_second);
-@@ -328,7 +334,7 @@
+@@ -328,7 +335,7 @@
                        }
                }
        }
        return 0;
  }
  #undef PATCH
-@@ -336,15 +342,15 @@
+@@ -336,15 +343,15 @@
  typedef struct {
        int foo;
        int bar;
        int in_key;
        int in_brace;
        int in_cond;
-@@ -362,7 +368,7 @@
+@@ -362,7 +369,7 @@
        }
  
        if (0 != stream_open(&(t->s), t->file)) {
                                "opening configfile ", t->file, "failed:", strerror(errno));
                buffer_free(t->file);
                return -1;
-@@ -373,7 +379,7 @@
+@@ -373,7 +380,7 @@
        t->size = t->s.size;
        t->line = 1;
        t->line_pos = 1;
        t->in_key = 1;
        t->in_brace = 0;
        t->in_cond = 0;
-@@ -401,7 +407,7 @@
+@@ -401,7 +408,7 @@
  static int config_skip_comment(tokenizer_t *t) {
        int i;
        assert(t->input[t->offset] == '#');
             (t->input[t->offset + i] != '\n' && t->input[t->offset + i] != '\r');
             i++);
        t->offset += i;
-@@ -411,44 +417,44 @@
+@@ -411,44 +418,44 @@
  static int config_tokenizer(server *srv, tokenizer_t *t, int *token_id, buffer *token) {
        int tid = 0;
        size_t i;
                                                        "only =~ and == are allowed in the condition");
                                        return -1;
                                }
-@@ -456,51 +462,51 @@
+@@ -456,51 +463,51 @@
                                t->in_cond = 0;
                        } else if (t->in_key) {
                                tid = TK_ASSIGN;
                        break;
                case '\t':
                case ' ':
-@@ -546,10 +552,10 @@
+@@ -546,10 +553,10 @@
                case ',':
                        if (t->in_brace > 0) {
                                tid = TK_COMMA;
                        t->offset++;
                        t->line_pos++;
                        break;
-@@ -557,70 +563,70 @@
+@@ -557,70 +564,70 @@
                        /* search for the terminating " */
                        start = t->input + t->offset + 1;
                        buffer_copy_string(token, "");
                        break;
  
                case '+':
-@@ -637,96 +643,88 @@
+@@ -637,96 +644,88 @@
  
                case '{':
                        t->offset++;
                                        if (strcmp(token->ptr, "include") == 0) {
                                                tid = TK_INCLUDE;
                                        } else if (strcmp(token->ptr, "include_shell") == 0) {
-@@ -738,14 +736,14 @@
+@@ -738,14 +737,14 @@
                                        } else {
                                                tid = TK_LKEY;
                                        }
                                                        "invalid character in variable name");
                                        return -1;
                                }
-@@ -753,16 +751,16 @@
+@@ -753,16 +752,16 @@
                        break;
                }
        }
                return 1;
        } else if (t->offset < t->size) {
                fprintf(stderr, "%s.%d: %d, %s\n",
-@@ -781,10 +779,11 @@
+@@ -781,10 +780,11 @@
        pParser = configparserAlloc( malloc );
        lasttoken = buffer_init();
        token = buffer_init();
                token = buffer_init();
        }
        buffer_free(token);
-@@ -797,14 +796,14 @@
+@@ -797,14 +797,14 @@
                }
        }
        configparserFree(pParser, free);
                                "parser failed somehow near here:", lasttoken);
                ret = -1;
        }
-@@ -821,7 +820,7 @@
+@@ -821,7 +821,7 @@
        t->offset = 0;
        t->line = 1;
        t->line_pos = 1;
        t->in_key = 1;
        t->in_brace = 0;
        t->in_cond = 0;
-@@ -844,7 +843,7 @@
+@@ -844,7 +844,7 @@
        }
  
        if (0 != stream_open(&s, filename)) {
                                "opening configfile ", filename, "failed:", strerror(errno));
                ret = -1;
        } else {
-@@ -866,7 +865,7 @@
+@@ -866,7 +866,7 @@
        char oldpwd[PATH_MAX];
  
        if (NULL == getcwd(oldpwd, sizeof(oldpwd))) {
                                "cannot get cwd", strerror(errno));
                return -1;
        }
-@@ -879,7 +878,7 @@
+@@ -879,7 +879,7 @@
        }
  
        if (0 != proc_open_buffer(&proc, cmd, NULL, out, NULL)) {
                                "opening", source, "failed:", strerror(errno));
                ret = -1;
        } else {
-@@ -896,13 +895,12 @@
+@@ -896,13 +896,12 @@
  static void context_init(server *srv, config_t *context) {
        context->srv = srv;
        context->ok = 1;
        buffer_free(context->basedir);
  }
  
-@@ -918,18 +916,15 @@
+@@ -918,18 +917,15 @@
        context_init(srv, &context);
        context.all_configs = srv->config_context;
  
        dc = data_config_init();
        buffer_copy_string(dc->key, "global");
  
-@@ -941,10 +936,10 @@
-       /* default context */
-       srv->config = dc->value;
-       dpid = data_integer_init();
--      dpid->value = getpid();
-+      dpid->value = /* getpid() */0;
+@@ -944,7 +940,7 @@
+       dpid->value = getpid();
        buffer_copy_string(dpid->key, "var.PID");
        array_insert_unique(srv->config, (data_unset *)dpid);
 -      
        dcwd = data_string_init();
        buffer_prepare_copy(dcwd->value, 1024);
        if (NULL != getcwd(dcwd->value->ptr, dcwd->value->size - 1)) {
-@@ -968,7 +963,7 @@
+@@ -968,7 +964,7 @@
        } else {
                return -1;
        }
        if (NULL != (modules = (data_array *)array_get_element(srv->config, "server.modules"))) {
                data_string *ds;
                data_array *prepends;
-@@ -1026,22 +1021,23 @@
+@@ -1026,22 +1022,23 @@
                buffer_copy_string(modules->key, "server.modules");
                array_insert_unique(srv->config, (data_unset *)modules);
        }
                /* - poll is most reliable
                 * - select works everywhere
                 * - linux-* are experimental
-@@ -1067,20 +1063,21 @@
+@@ -1067,20 +1064,21 @@
  #endif
                { FDEVENT_HANDLER_UNSET,          NULL }
        };
                        return -1;
                }
  
-@@ -1088,18 +1085,18 @@
+@@ -1088,18 +1086,18 @@
                buffer_copy_string_buffer(srv->tmp_buf, srv->srvconf.changeroot);
                buffer_append_string_buffer(srv->tmp_buf, s->document_root);
  
  
        if (0 == stat(srv->tmp_buf->ptr, &st1)) {
                int is_lower = 0;
-@@ -1107,68 +1104,68 @@
+@@ -1107,68 +1105,68 @@
                is_lower = buffer_is_equal(srv->tmp_buf, s->document_root);
  
                /* lower-case existed, check upper-case */
                        return -1;
                }
        }
-@@ -1176,19 +1173,19 @@
+@@ -1176,19 +1174,19 @@
        if (s->is_ssl) {
                if (buffer_is_empty(s->ssl_pemfile)) {
                        /* PEM file is require */
 +
        return 0;
  }
---- lighttpd-1.4.11/src/configfile.h   2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/configfile.h        2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/configfile.h   2006-07-11 22:07:51.000000000 +0300
 @@ -9,7 +9,7 @@
        server *srv;
        data_config *current; /* current started with { */
        buffer *basedir;
  } config_t;
---- lighttpd-1.4.11/src/configparser.c 2006-02-01 19:51:15.000000000 +0200
+--- ../lighttpd-1.4.11/src/configparser.c      2006-02-01 19:51:15.000000000 +0200
 +++ lighttpd-1.4.12/src/configparser.c 2006-07-11 22:08:02.000000000 +0300
 @@ -24,52 +24,34 @@
      dc->parent = ctx->current;
        **
        ** This is what we do if the grammar does define ERROR:
        **
---- lighttpd-1.4.11/src/configparser.y 2006-01-26 18:46:25.000000000 +0200
+--- ../lighttpd-1.4.11/src/configparser.y      2006-01-26 18:46:25.000000000 +0200
 +++ lighttpd-1.4.12/src/configparser.y 2006-07-11 22:07:53.000000000 +0300
 @@ -21,52 +21,34 @@
      dc->parent = ctx->current;
  array(A) ::= LPARAN aelements(B) RPARAN. {
    A = B;
    B = NULL;
---- lighttpd-1.4.11/src/connections-glue.c     2005-09-12 10:04:23.000000000 +0300
+--- ../lighttpd-1.4.11/src/connections-glue.c  2005-09-12 10:04:23.000000000 +0300
 +++ lighttpd-1.4.12/src/connections-glue.c     2006-07-11 22:07:51.000000000 +0300
 @@ -13,7 +13,7 @@
        case CON_STATE_REQUEST_END: return "req-end";
        return 0;
  }
  
---- lighttpd-1.4.11/src/connections.c  2006-03-05 22:14:53.000000000 +0200
-+++ lighttpd-1.4.12/src/connections.c  2006-07-11 22:07:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/connections.c       2006-03-05 22:14:53.000000000 +0200
++++ lighttpd-1.4.12/src/connections.c  2006-07-15 22:43:21.000000000 +0300
 @@ -2,7 +2,6 @@
  
  #include <stdlib.h>
  #endif
  
  #ifdef HAVE_SYS_FILIO_H
-@@ -35,6 +34,7 @@
+@@ -35,15 +34,16 @@
  #endif
  
  #include "sys-socket.h"
 +#include "sys-files.h"
  
  typedef struct {
-               PLUGIN_DATA;
-@@ -43,7 +43,7 @@
+-              PLUGIN_DATA;
++      PLUGIN_DATA;
+ } plugin_data;
  static connection *connections_get_new_connection(server *srv) {
        connections *conns = srv->conns;
        size_t i;
 -                      return -1;
 -              }
 -              buffer_prepare_copy(b, toread);
-+    oldlen = chunkqueue_length(con->read_queue);
++      oldlen = chunkqueue_length(con->read_queue);
  
 -              len = read(con->fd, b->ptr, b->size - 1);
 -      }
 -#endif
 -      
 -      if (len < 0) {
--              con->is_readable = 0;
++      switch(network_read_chunkqueue(srv, con, con->read_queue)) {
++      case NETWORK_STATUS_SUCCESS:
++              break;
++      case NETWORK_STATUS_WAIT_FOR_EVENT:
++              con->is_readable = 0;
++              return NETWORK_STATUS_WAIT_FOR_EVENT;
++      case NETWORK_STATUS_INTERRUPTED:
++              con->is_readable = 1;
++              return NETWORK_STATUS_WAIT_FOR_EVENT;
++      case NETWORK_STATUS_CONNECTION_CLOSE:
++              /* pipelining */
++              con->is_readable = 0;
++              return NETWORK_STATUS_CONNECTION_CLOSE;
++      case NETWORK_STATUS_FATAL_ERROR:
+               con->is_readable = 0;
 -              
 -#ifdef USE_OPENSSL
 -              if (srv_sock->is_ssl) {
 -                                      log_error_write(srv, __FILE__, __LINE__, "sds", "SSL:", 
 -                                                      r, ERR_error_string(ssl_err, NULL));
 -                              }
-+    switch(network_read_chunkqueue(srv, con, con->read_queue)) {
-+    case NETWORK_STATUS_SUCCESS:
-+        break;
-+    case NETWORK_STATUS_WAIT_FOR_EVENT:
-+        con->is_readable = 0;
-+        return NETWORK_STATUS_WAIT_FOR_EVENT;
-+    case NETWORK_STATUS_INTERRUPTED:
-+        con->is_readable = 1;
-+        return NETWORK_STATUS_WAIT_FOR_EVENT;
-+    case NETWORK_STATUS_CONNECTION_CLOSE:
-+        /* pipelining */
-+        con->is_readable = 0;
-+        return NETWORK_STATUS_CONNECTION_CLOSE;
-+    case NETWORK_STATUS_FATAL_ERROR:
-+        con->is_readable = 0;
-+
-+        connection_set_state(srv, con, CON_STATE_ERROR);
-+        return NETWORK_STATUS_FATAL_ERROR;
-+    default:
-+        SEGFAULT();
-+        break;
-+    }
  
 -                              switch(errno) {
 -                              default:
 -                      log_error_write(srv, __FILE__, __LINE__, "ssd", "connection closed - read failed: ", strerror(errno), errno);
 -              }
 -#endif
--              connection_set_state(srv, con, CON_STATE_ERROR);
+               connection_set_state(srv, con, CON_STATE_ERROR);
 -              
 -              return -1;
 -      } else if (len == 0) {
 -              con->is_readable = 0;
 -              /* the other end close the connection -> KEEP-ALIVE */
--
++              return NETWORK_STATUS_FATAL_ERROR;
++      default:
++              SEGFAULT();
++              break;
++      }
 -              /* pipelining */
--
++      newlen = chunkqueue_length(con->read_queue);
 -              return -2;
 -      } else if ((size_t)len < b->size - 1) {
 -              /* we got less then expected, wait for the next fd-event */
 -#endif
 -      
 -      return 0;
-+    newlen = chunkqueue_length(con->read_queue);
-+
 +      con->bytes_read += (newlen - oldlen);
 +
 +      return NETWORK_STATUS_SUCCESS;
  }
  
  static int connection_handle_write(server *srv, connection *con) {
--      switch(network_write_chunkqueue(srv, con, con->write_queue)) {
+       switch(network_write_chunkqueue(srv, con, con->write_queue)) {
 -      case 0:
-+    switch(network_write_chunkqueue(srv, con, con->write_queue)) {
 +      case NETWORK_STATUS_SUCCESS:
                if (con->file_finished) {
                        connection_set_state(srv, con, CON_STATE_RESPONSE_END);
  
                        if (cq->first == cq->last &&
 -                          cq->first->mem->used == 0) {
-+                (NULL == cq->first ||
++                          (NULL == cq->first ||
 +                          cq->first->mem->used == 0)) {
  
                                /* conn-closed, leave here */
                                connection_set_state(srv, con, CON_STATE_ERROR);
 +
-+                return 0;
++                              return 0;
                        }
                default:
                        break;
  
        if (-1 == (cnt = accept(srv_socket->fd, (struct sockaddr *) &cnt_addr, &cnt_len))) {
 +#ifdef _WIN32
-+        errno = WSAGetLastError();
++              errno = WSAGetLastError();
 +#endif
                if ((errno != EAGAIN) &&
-+            (errno != EWOULDBLOCK) &&
++                  (errno != EWOULDBLOCK) &&
                    (errno != EINTR)) {
 -                      log_error_write(srv, __FILE__, __LINE__, "ssd", "accept failed:", strerror(errno), errno);
 +                      log_error_write(srv, __FILE__, __LINE__, "ssd", "accept failed:", strerror(errno), srv_socket->fd);
                    (con->is_writable == 0) &&
                    (con->traffic_limit_reached == 0)) {
                        fdevent_event_add(srv->ev, &(con->fde_ndx), con->fd, FDEVENT_OUT);
---- lighttpd-1.4.11/src/crc32.h        2005-09-30 20:18:59.000000000 +0300
+--- ../lighttpd-1.4.11/src/crc32.h     2005-09-30 20:18:59.000000000 +0300
 +++ lighttpd-1.4.12/src/crc32.h        2006-07-11 22:07:53.000000000 +0300
 @@ -6,6 +6,7 @@
  #endif
  uint32_t generate_crc32c(char *string, size_t length);
  
  #endif
---- lighttpd-1.4.11/src/data_array.c   2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_array.c        2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/data_array.c   2006-07-11 22:07:52.000000000 +0300
 @@ -17,16 +17,16 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/data_config.c  2005-08-17 12:53:19.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_config.c       2005-08-17 12:53:19.000000000 +0300
 +++ lighttpd-1.4.12/src/data_config.c  2006-07-11 22:07:51.000000000 +0300
 @@ -17,26 +17,26 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/data_count.c   2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_count.c        2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/data_count.c   2006-07-11 22:07:51.000000000 +0300
 @@ -16,53 +16,53 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/data_fastcgi.c 2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_fastcgi.c      2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/data_fastcgi.c 2006-07-11 22:07:53.000000000 +0300
 @@ -17,53 +17,53 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/data_integer.c 2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_integer.c      2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/data_integer.c 2006-07-11 22:07:51.000000000 +0300
 @@ -16,15 +16,15 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/data_string.c  2005-08-23 17:36:12.000000000 +0300
+--- ../lighttpd-1.4.11/src/data_string.c       2005-08-23 17:36:12.000000000 +0300
 +++ lighttpd-1.4.12/src/data_string.c  2006-07-11 22:07:53.000000000 +0300
 @@ -17,16 +17,16 @@
  
 +
        return ds;
  }
---- lighttpd-1.4.11/src/etag.c 2005-08-11 01:26:40.000000000 +0300
+--- ../lighttpd-1.4.11/src/etag.c      2005-08-11 01:26:40.000000000 +0300
 +++ lighttpd-1.4.12/src/etag.c 2006-07-11 22:07:51.000000000 +0300
 @@ -14,19 +14,19 @@
        buffer_append_off_t(etag, st->st_size);
 +
        return 0;
  }
---- lighttpd-1.4.11/src/etag.h 2005-08-11 01:26:40.000000000 +0300
+--- ../lighttpd-1.4.11/src/etag.h      2005-08-11 01:26:40.000000000 +0300
 +++ lighttpd-1.4.12/src/etag.h 2006-07-11 22:07:51.000000000 +0300
 @@ -3,13 +3,12 @@
  
 +
  
  #endif
---- lighttpd-1.4.11/src/fastcgi.h      2005-08-11 01:26:40.000000000 +0300
+--- ../lighttpd-1.4.11/src/fastcgi.h   2005-08-11 01:26:40.000000000 +0300
 +++ lighttpd-1.4.12/src/fastcgi.h      2006-07-11 22:07:51.000000000 +0300
 @@ -1,4 +1,4 @@
 -/* 
      unsigned char reserved[7];
  } FCGI_UnknownTypeBody;
  
---- lighttpd-1.4.11/src/fdevent.c      2005-11-15 10:51:05.000000000 +0200
+--- ../lighttpd-1.4.11/src/fdevent.c   2005-11-15 10:51:05.000000000 +0200
 +++ lighttpd-1.4.12/src/fdevent.c      2006-07-11 22:07:53.000000000 +0300
 @@ -2,7 +2,6 @@
  
        return -1;
  }
  
---- lighttpd-1.4.11/src/fdevent.h      2005-09-27 11:26:33.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent.h   2005-09-27 11:26:33.000000000 +0300
 +++ lighttpd-1.4.12/src/fdevent.h      2006-07-11 22:07:51.000000000 +0300
 @@ -17,13 +17,13 @@
  # include <sys/epoll.h>
        int (*fcntl_set)(struct fdevents *ev, int fd);
  } fdevents;
  
---- lighttpd-1.4.11/src/fdevent_freebsd_kqueue.c       2005-09-01 10:46:24.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent_freebsd_kqueue.c    2005-09-01 10:46:24.000000000 +0300
 +++ lighttpd-1.4.12/src/fdevent_freebsd_kqueue.c       2006-07-11 22:07:51.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
                return -1;
        }
  
---- lighttpd-1.4.11/src/fdevent_linux_rtsig.c  2005-11-21 19:56:11.000000000 +0200
-+++ lighttpd-1.4.12/src/fdevent_linux_rtsig.c  2006-07-11 22:07:53.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent_linux_rtsig.c       2005-11-21 19:56:11.000000000 +0200
++++ lighttpd-1.4.12/src/fdevent_linux_rtsig.c  2006-07-15 22:43:21.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
  
  #include <stdlib.h>
  #include <stdio.h>
  #include <string.h>
-@@ -26,19 +25,19 @@
+@@ -14,6 +13,7 @@
+ #include "fdevent.h"
+ #include "settings.h"
+ #include "buffer.h"
++#include "sys-process.h"
+ #ifdef USE_LINUX_SIGIO
+ static void fdevent_linux_rtsig_free(fdevents *ev) {
+@@ -26,19 +26,19 @@
  
  static int fdevent_linux_rtsig_event_del(fdevents *ev, int fde_ndx, int fd) {
        if (fde_ndx < 0) return -1;
                if (ev->unused.size == 0) {
                        ev->unused.size = 16;
                        ev->unused.ptr = malloc(sizeof(*(ev->unused.ptr)) * ev->unused.size);
-@@ -46,29 +45,29 @@
+@@ -46,29 +46,29 @@
                        ev->unused.size += 16;
                        ev->unused.ptr = realloc(ev->unused.ptr, sizeof(*(ev->unused.ptr)) * ev->unused.size);
                }
        return 0;
  }
  #endif
-@@ -78,21 +77,21 @@
+@@ -78,21 +78,21 @@
        if (fde_ndx != -1) {
                if (ev->pollfds[fde_ndx].fd == fd) {
                        ev->pollfds[fde_ndx].events = events;
                return k;
        } else {
                if (ev->size == 0) {
-@@ -102,12 +101,12 @@
+@@ -102,12 +102,12 @@
                        ev->size += 16;
                        ev->pollfds = realloc(ev->pollfds, sizeof(*ev->pollfds) * ev->size);
                }
                return ev->used++;
        }
  }
-@@ -115,20 +114,20 @@
+@@ -115,20 +115,20 @@
  static int fdevent_linux_rtsig_poll(fdevents *ev, int timeout_ms) {
        struct timespec ts;
        int r;
        } else if (r == SIGIO) {
                struct sigaction act;
  
-@@ -140,7 +139,7 @@
+@@ -140,7 +140,7 @@
                /* re-enable the signal queue */
                act.sa_handler = SIG_DFL;
                sigaction(ev->signum, &act, NULL);
                ev->in_sigio = 0;
                r = poll(ev->pollfds, ev->used, timeout_ms);
  
-@@ -162,12 +161,12 @@
+@@ -162,12 +162,12 @@
                if (ev->siginfo.si_band == POLLERR) {
                        fprintf(stderr, "event: %d %02lx %02x %s\n", ev->siginfo.si_fd, ev->siginfo.si_band, errno, strerror(errno));
                }
                return ev->siginfo.si_band & 0x3f;
        } else {
                if (ndx >= ev->used) {
-@@ -188,13 +187,13 @@
+@@ -188,13 +188,13 @@
  
  static int fdevent_linux_rtsig_fcntl_set(fdevents *ev, int fd) {
        static pid_t pid = 0;
        return fcntl(fd, F_SETFL, O_ASYNC | O_NONBLOCK | O_RDWR);
  }
  
-@@ -205,12 +204,12 @@
+@@ -205,12 +205,12 @@
                return -1;
        } else {
                size_t i;
                return i;
        }
  }
-@@ -219,34 +218,34 @@
+@@ -219,34 +219,34 @@
        ev->type = FDEVENT_HANDLER_LINUX_RTSIG;
  #define SET(x) \
        ev->x = fdevent_linux_rtsig_##x;
        return 0;
  }
  #else
---- lighttpd-1.4.11/src/fdevent_linux_sysepoll.c       2005-09-30 20:29:27.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent_linux_sysepoll.c    2005-09-30 20:29:27.000000000 +0300
 +++ lighttpd-1.4.12/src/fdevent_linux_sysepoll.c       2006-07-11 22:07:53.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
        return -1;
  }
  #endif
---- lighttpd-1.4.11/src/fdevent_poll.c 2005-11-18 13:59:16.000000000 +0200
+--- ../lighttpd-1.4.11/src/fdevent_poll.c      2005-11-18 13:59:16.000000000 +0200
 +++ lighttpd-1.4.12/src/fdevent_poll.c 2006-07-11 22:07:53.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
        return 0;
  }
  
---- lighttpd-1.4.11/src/fdevent_select.c       2005-08-31 11:12:46.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent_select.c    2005-08-31 11:12:46.000000000 +0300
 +++ lighttpd-1.4.12/src/fdevent_select.c       2006-07-11 22:07:53.000000000 +0300
 @@ -1,18 +1,19 @@
 -#include <sys/time.h>
        return 0;
  }
  
---- lighttpd-1.4.11/src/fdevent_solaris_devpoll.c      2005-09-01 10:45:26.000000000 +0300
+--- ../lighttpd-1.4.11/src/fdevent_solaris_devpoll.c   2005-09-01 10:45:26.000000000 +0300
 +++ lighttpd-1.4.12/src/fdevent_solaris_devpoll.c      2006-07-11 22:07:51.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
        return -1;
  }
  #endif
---- lighttpd-1.4.11/src/http-header-glue.c     2006-02-08 15:31:36.000000000 +0200
+--- ../lighttpd-1.4.11/src/http-header-glue.c  2006-02-08 15:31:36.000000000 +0200
 +++ lighttpd-1.4.12/src/http-header-glue.c     2006-07-11 22:07:53.000000000 +0300
 @@ -45,20 +45,20 @@
  #   ifdef HAVE_STRUCT_SOCKADDR_STORAGE
                }
        }
  
---- lighttpd-1.4.11/src/http_auth.c    2006-02-01 13:02:52.000000000 +0200
+--- ../lighttpd-1.4.11/src/http_auth.c 2006-02-01 13:02:52.000000000 +0200
 +++ lighttpd-1.4.12/src/http_auth.c    2006-07-11 22:07:53.000000000 +0300
 @@ -22,7 +22,6 @@
  #include <string.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/http_auth.h    2005-08-14 17:12:31.000000000 +0300
+--- ../lighttpd-1.4.11/src/http_auth.h 2005-08-14 17:12:31.000000000 +0300
 +++ lighttpd-1.4.12/src/http_auth.h    2006-07-11 22:07:53.000000000 +0300
 @@ -9,22 +9,26 @@
  # include <ldap.h>
        mod_auth_plugin_config conf; /* this is only used as long as no handler_ctx is setup */
  } mod_auth_plugin_data;
  
---- lighttpd-1.4.11/src/http_auth_digest.h     2006-01-05 00:54:01.000000000 +0200
+--- ../lighttpd-1.4.11/src/http_auth_digest.h  2006-01-05 00:54:01.000000000 +0200
 +++ lighttpd-1.4.12/src/http_auth_digest.h     2006-07-11 22:07:53.000000000 +0300
 @@ -12,7 +12,7 @@
  #ifdef USE_OPENSSL
  #endif
  #define OUT
  
---- lighttpd-1.4.11/src/http_chunk.c   2005-08-11 01:26:50.000000000 +0300
+--- ../lighttpd-1.4.11/src/http_chunk.c        2005-08-11 01:26:50.000000000 +0300
 +++ lighttpd-1.4.12/src/http_chunk.c   2006-07-11 22:07:53.000000000 +0300
 @@ -1,7 +1,7 @@
  /**
 +
        return chunkqueue_length(con->write_queue);
  }
---- lighttpd-1.4.11/src/http_resp.c    1970-01-01 03:00:00.000000000 +0300
-+++ lighttpd-1.4.12/src/http_resp.c    2006-07-11 22:07:53.000000000 +0300
-@@ -0,0 +1,261 @@
+--- ../lighttpd-1.4.11/src/http_resp.c 1970-01-01 03:00:00.000000000 +0300
++++ lighttpd-1.4.12/src/http_resp.c    2006-07-15 22:43:21.000000000 +0300
+@@ -0,0 +1,274 @@
 +#include <string.h>
 +#include <stdlib.h>
 +#include <stdio.h>
 +      chunkqueue *cq;
 +
 +      chunk *c; /* current chunk in the chunkqueue */
-+    size_t offset; /* current offset in current chunk */
++      size_t offset; /* current offset in current chunk */
 +
-+    chunk *lookup_c;
-+    size_t lookup_offset;
++      chunk *lookup_c;
++      size_t lookup_offset;
 +
-+    int is_key;
-+    int is_statusline;
++      int is_key;
++      int is_statusline;
 +} http_resp_tokenizer_t;
 +
 +http_resp *http_response_init(void) {
-+    http_resp *resp = calloc(1, sizeof(*resp));
++      http_resp *resp = calloc(1, sizeof(*resp));
 +
-+    resp->reason = buffer_init();
-+    resp->headers = array_init();
++      resp->reason = buffer_init();
++      resp->headers = array_init();
 +
-+    return resp;
++      return resp;
 +}
 +
 +void http_response_reset(http_resp *resp) {
-+    if (!resp) return;
++      if (!resp) return;
 +
-+    buffer_reset(resp->reason);
-+    array_reset(resp->headers);
++      buffer_reset(resp->reason);
++      array_reset(resp->headers);
 +
 +}
 +
 +void http_response_free(http_resp *resp) {
-+    if (!resp) return;
++      if (!resp) return;
 +
-+    buffer_free(resp->reason);
-+    array_free(resp->headers);
++      buffer_free(resp->reason);
++      array_free(resp->headers);
 +
-+    free(resp);
++      free(resp);
 +}
 +
 +static int http_resp_get_next_char(http_resp_tokenizer_t *t, unsigned char *c) {
-+    if (t->offset == t->c->mem->used - 1) {
-+        /* end of chunk, open next chunk */
++      if (t->offset == t->c->mem->used - 1) {
++              /* end of chunk, open next chunk */
 +
-+        if (!t->c->next) return -1;
++              if (!t->c->next) return -1;
 +
-+        t->c = t->c->next;
-+        t->offset = 0;
-+    }
++              t->c = t->c->next;
++              t->offset = 0;
++      }
 +
-+    *c = t->c->mem->ptr[t->offset++];
++      *c = t->c->mem->ptr[t->offset++];
 +
-+    t->lookup_offset = t->offset;
-+    t->lookup_c = t->c;
++      t->lookup_offset = t->offset;
++      t->lookup_c = t->c;
 +
-+    //fprintf(stderr, "%s.%d: get: %c (%d) at offset: %d\r\n", __FILE__, __LINE__, *c > 31 ? *c : ' ', *c, t->offset - 1);
++#if 0
++      fprintf(stderr, "%s.%d: get: %c (%d) at offset: %d\r\n", __FILE__, __LINE__, *c > 31 ? *c : ' ', *c, t->offset - 1);
++#endif
 +
-+    return 0;
++      return 0;
 +}
 +
 +static int http_resp_lookup_next_char(http_resp_tokenizer_t *t, unsigned char *c) {
-+    if (t->lookup_offset == t->lookup_c->mem->used - 1) {
-+        /* end of chunk, open next chunk */
++      if (t->lookup_offset == t->lookup_c->mem->used - 1) {
++              /* end of chunk, open next chunk */
 +
-+        if (!t->lookup_c->next) return -1;
++              if (!t->lookup_c->next) return -1;
 +
-+        t->lookup_c = t->lookup_c->next;
-+        t->lookup_offset = 0;
-+    }
-+
-+    *c = t->lookup_c->mem->ptr[t->lookup_offset++];
-+
-+    //fprintf(stderr, "%s.%d: lookup: %c (%d) at offset: %d\r\n", __FILE__, __LINE__, *c > 31 ? *c : ' ', *c, t->lookup_offset - 1);
++              t->lookup_c = t->lookup_c->next;
++              t->lookup_offset = 0;
++      }
 +
++      *c = t->lookup_c->mem->ptr[t->lookup_offset++];
++#if 0
++      fprintf(stderr, "%s.%d: lookup: %c (%d) at offset: %d\r\n", __FILE__, __LINE__, *c > 31 ? *c : ' ', *c, t->lookup_offset - 1);
++#endif
 +
-+    return 0;
++      return 0;
 +}
 +
 +
 +static int http_resp_tokenizer(
-+    http_resp_tokenizer_t *t,
-+    int *token_id,
-+    buffer *token
++      http_resp_tokenizer_t *t,
++      int *token_id,
++      buffer *token
 +) {
-+    unsigned char c;
-+    int tid = 0;
-+
-+    /* push the token to the parser */
-+
-+    while (tid == 0 && 0 == http_resp_get_next_char(t, &c)) {
-+        switch (c) {
-+        case ':':
-+            tid = TK_COLON;
-+
-+            t->is_key = 0;
-+
-+            break;
-+        case ' ':
-+        case '\t':
-+            /* ignore WS */
-+
-+            break;
-+        case '\r':
-+            if (0 != http_resp_lookup_next_char(t, &c)) return -1;
-+
-+            if (c == '\n') {
-+                tid = TK_CRLF;
-+
-+                t->c = t->lookup_c;
-+                t->offset = t->lookup_offset;
-+
-+                t->is_statusline = 0;
-+                t->is_key = 1;
-+            } else {
-+                fprintf(stderr, "%s.%d: CR with out LF\r\n", __FILE__, __LINE__);
-+                return -1;
-+            }
-+            break;
-+        case '\n':
-+            tid = TK_CRLF;
-+
-+            t->is_statusline = 0;
-+            t->is_key = 1;
-+
-+            break;
-+        default:
-+            while (c >= 32 && c != 127 && c != 255) {
-+                if (t->is_statusline) {
-+                      if (c == ':') {t->is_statusline = 0; break; } /* this is not a status line by a real header */
-+                    if (c == 32) break; /* the space is a splitter in the statusline */
-+                } else {
-+                    if (t->is_key) {
-+                        if (c == ':') break; /* the : is the splitter between key and value */
-+                    }
-+                }
-+                if (0 != http_resp_lookup_next_char(t, &c)) return -1;
-+            }
-+
-+            if (t->c == t->lookup_c &&
-+                t->offset == t->lookup_offset + 1) {
-+
-+                fprintf(stderr, "%s.%d: invalid char in string\n", __FILE__, __LINE__);
-+                return -1;
-+            }
-+
-+            tid = TK_STRING;
-+
-+            /* the lookup points to the first invalid char */
-+            t->lookup_offset--;
-+
-+            /* no overlapping string */
-+            if (t->c == t->lookup_c) {
-+                buffer_copy_string_len(token, t->c->mem->ptr + t->offset - 1, t->lookup_offset - t->offset + 1);
-+            } else {
-+                /* first chunk */
-+                buffer_copy_string_len(token, t->c->mem->ptr + t->offset - 1, t->c->mem->used - t->offset);
-+
-+                /* chunks in the middle */
-+                for (t->c = t->c->next; t->c != t->lookup_c; t->c = t->c->next) {
-+                    buffer_append_string_buffer(token, t->c->mem);
-+                    t->offset = t->c->mem->used - 1;
-+                }
-+
-+                /* last chunk */
-+                buffer_append_string_len(token, t->c->mem->ptr, t->lookup_offset);
-+            }
-+
-+            t->offset = t->lookup_offset;
-+
-+            break;
-+        }
++      unsigned char c;
++      int tid = 0;
++
++      /* push the token to the parser */
++
++      while (tid == 0 && 0 == http_resp_get_next_char(t, &c)) {
++              switch (c) {
++              case ':':
++                      tid = TK_COLON;
++
++                      t->is_key = 0;
++
++                      break;
++              case ' ':
++              case '\t':
++                      /* ignore WS */
++
++                      break;
++              case '\r':
++                      if (0 != http_resp_lookup_next_char(t, &c)) return -1;
++
++                      if (c == '\n') {
++                              tid = TK_CRLF;
++
++                              t->c = t->lookup_c;
++                              t->offset = t->lookup_offset;
++
++                              t->is_statusline = 0;
++                              t->is_key = 1;
++                      } else {
++                              fprintf(stderr, "%s.%d: CR with out LF\r\n", __FILE__, __LINE__);
++                              return -1;
++                      }
++                      break;
++              case '\n':
++                      tid = TK_CRLF;
++
++                      t->is_statusline = 0;
++                      t->is_key = 1;
++
++                      break;
++              default:
++                      while (c >= 32 && c != 127 && c != 255) {
++                              if (t->is_statusline) {
++                                      if (c == ':') { t->is_statusline = 0; break; } /* this is not a status line by a real header */
++                                      if (c == 32) break; /* the space is a splitter in the statusline */
++                              } else {
++                                      if (t->is_key) {
++                                              if (c == ':') break; /* the : is the splitter between key and value */
++                                      }
++                              }
++                              if (0 != http_resp_lookup_next_char(t, &c)) return -1;
++                      }
++
++                      if (t->c == t->lookup_c &&
++                              t->offset == t->lookup_offset + 1) {
++
++                              fprintf(stderr, "%s.%d: invalid char in string\n", __FILE__, __LINE__);
++                              return -1;
++                      }
++
++                      tid = TK_STRING;
++
++                      /* the lookup points to the first invalid char */
++                      t->lookup_offset--;
++
++                      /* no overlapping string */
++                      if (t->c == t->lookup_c) {
++                              buffer_copy_string_len(token, t->c->mem->ptr + t->offset - 1, t->lookup_offset - t->offset + 1);
++                      } else {
++                              /* first chunk */
++                              buffer_copy_string_len(token, t->c->mem->ptr + t->offset - 1, t->c->mem->used - t->offset);
++
++                              /* chunks in the middle */
++                              for (t->c = t->c->next; t->c != t->lookup_c; t->c = t->c->next) {
++                                      buffer_append_string_buffer(token, t->c->mem);
++                                      t->offset = t->c->mem->used - 1;
++                              }
++
++                              /* last chunk */
++                              buffer_append_string_len(token, t->c->mem->ptr, t->lookup_offset);
++                      }
++
++                      t->offset = t->lookup_offset;
++
++                      break;
++              }
 +      }
 +
-+    if (tid) {
++      if (tid) {
 +              *token_id = tid;
 +
-+        return 1;
-+    }
++              return 1;
++      }
 +
-+    return -1;
++      return -1;
 +}
 +
 +parse_status_t http_response_parse_cq(chunkqueue *cq, http_resp *resp) {
-+    http_resp_tokenizer_t t;
++      http_resp_tokenizer_t t;
 +      void *pParser = NULL;
 +      int token_id = 0;
 +      buffer *token = NULL;
 +      http_resp_ctx_t context;
-+    parse_status_t ret = PARSE_UNSET;
-+    int last_token_id = 0;
++      parse_status_t ret = PARSE_UNSET;
++      int last_token_id = 0;
 +
 +      t.cq = cq;
-+    t.c = cq->first;
-+    t.offset = t.c->offset;
-+    t.is_key = 0;
-+    t.is_statusline = 1;
++      t.c = cq->first;
++      t.offset = t.c->offset;
++      t.is_key = 0;
++      t.is_statusline = 1;
 +
 +      context.ok = 1;
-+    context.errmsg = buffer_init();
-+    context.resp = resp;
++      context.errmsg = buffer_init();
++      context.resp = resp;
 +
 +      pParser = http_resp_parserAlloc( malloc );
 +      token = buffer_init();
-+    /* http_resp_parserTrace(stderr, "http-response: "); */
++#if 0
++      http_resp_parserTrace(stderr, "http-response: "); 
++#endif
 +
 +      while((1 == http_resp_tokenizer(&t, &token_id, token)) && context.ok) {
 +              http_resp_parser(pParser, token_id, token, &context);
 +
 +              token = buffer_init();
 +
-+        if (last_token_id == TK_CRLF &&
-+            token_id == TK_CRLF) break;
++              /* CRLF CRLF ... the header end sequence */
++              if (last_token_id == TK_CRLF &&
++                  token_id == TK_CRLF) break;
 +
-+        last_token_id = token_id;
++              last_token_id = token_id;
 +      }
 +
-+    /* oops, the parser failed */
-+    if (context.ok == 0) {
-+        ret = PARSE_ERROR;
++      /* oops, the parser failed */
++      if (context.ok == 0) {
++              ret = PARSE_ERROR;
 +
-+        fprintf(stderr, "%s.%d: parsing failed at: ...%20s\r\n",
-+            __FILE__, __LINE__, t.c->mem->ptr + t.offset);
-+    }
++              fprintf(stderr, "%s.%d: parsing failed at: ...%20s\r\n",
++                      __FILE__, __LINE__, t.c->mem->ptr + t.offset);
++      }
 +
 +      http_resp_parser(pParser, 0, token, &context);
 +      http_resp_parserFree(pParser, free );
 +
-+    if (context.ok == 0) {
-+        /* we are missing the some tokens */
++      if (context.ok == 0) {
++              /* we are missing the some tokens */
 +
-+        if (ret == PARSE_UNSET) ret = PARSE_NEED_MORE;
-+    } else {
-+        chunk *c;
++              if (!buffer_is_empty(context.errmsg)) {
++                      fprintf(stderr, "%s.%d: hmm, %20s\r\n",
++                              __FILE__, __LINE__, context.errmsg->ptr);
++              }
 +
-+        for (c = cq->first; c != t.c; c = c->next) {
-+            c->offset = c->mem->used - 1;
-+        }
++              if (ret == PARSE_UNSET) {
++                      ret = buffer_is_empty(context.errmsg) ? PARSE_NEED_MORE : PARSE_ERROR;
++              }
++      } else {
++              chunk *c;
++
++              for (c = cq->first; c != t.c; c = c->next) {
++                      c->offset = c->mem->used - 1;
++              }
 +
-+        c->offset = t.offset;
++              c->offset = t.offset;
 +
-+        ret = PARSE_SUCCESS;
-+    }
++              ret = PARSE_SUCCESS;
++      }
 +
-+    buffer_free(token);
++      buffer_free(token);
++      buffer_free(context.errmsg);
 +
-+    return ret;
++      return ret;
 +}
 +
---- lighttpd-1.4.11/src/http_resp.h    1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/src/http_resp.h 1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/src/http_resp.h    2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,34 @@
 +#ifndef _HTTP_RESP_H_
 +parse_status_t http_response_parse_cq(chunkqueue *cq, http_resp *http_response);
 +
 +#endif
---- lighttpd-1.4.11/src/http_resp_parser.c     1970-01-01 03:00:00.000000000 +0300
-+++ lighttpd-1.4.12/src/http_resp_parser.c     2006-07-11 22:08:02.000000000 +0300
-@@ -0,0 +1,894 @@
+--- ../lighttpd-1.4.11/src/http_resp_parser.c  1970-01-01 03:00:00.000000000 +0300
++++ lighttpd-1.4.12/src/http_resp_parser.c     2006-07-15 22:44:07.000000000 +0300
+@@ -0,0 +1,895 @@
 +/* Driver template for the LEMON parser generator.
 +** The author disclaims copyright to this source code.
 +*/
 +    } else {
 +        char *err;
 +        resp->status = strtol(ds->value->ptr, &err, 10);
-+    
-+        if (*err != '\0') {
++   
++        if (*err != '\0' && *err != ' ') {
 +            buffer_copy_string(ctx->errmsg, "expected a number: ");
 +            buffer_append_string_buffer(ctx->errmsg, ds->value);
++            buffer_append_string(ctx->errmsg, err);
 +        
 +            ctx->ok = 0;
 +        }
-+
 +    }
 +
 +    yymsp[-1].minor.yy12 = NULL;
 +      case 4:
 +#line 93 "./http_resp_parser.y"
 +{
-+    buffer_copy_string_buffer(yygotominor.yy0, yymsp[0].minor.yy0);
++    yygotominor.yy0 = yymsp[0].minor.yy0;
++    yymsp[0].minor.yy0 = NULL;
 +}
-+#line 634 "http_resp_parser.c"
++#line 635 "http_resp_parser.c"
 +        break;
 +      case 5:
-+#line 97 "./http_resp_parser.y"
++#line 98 "./http_resp_parser.y"
 +{
 +    yygotominor.yy0 = yymsp[-1].minor.yy0;
 +    
 +    
 +    yymsp[-1].minor.yy0 = NULL;
 +}
-+#line 646 "http_resp_parser.c"
++#line 647 "http_resp_parser.c"
 +        break;
 +      case 6:
-+#line 106 "./http_resp_parser.y"
++#line 107 "./http_resp_parser.y"
 +{
 +    yygotominor.yy12 = yymsp[-1].minor.yy12;
 +    
 +    
 +    yymsp[-1].minor.yy12 = NULL;
 +}
-+#line 657 "http_resp_parser.c"
++#line 658 "http_resp_parser.c"
 +        break;
 +      case 7:
-+#line 114 "./http_resp_parser.y"
++#line 115 "./http_resp_parser.y"
 +{
 +    yygotominor.yy12 = array_init();
 +
 +    array_insert_unique(yygotominor.yy12, (data_unset *)yymsp[0].minor.yy9);
 +}
-+#line 666 "http_resp_parser.c"
++#line 667 "http_resp_parser.c"
 +        break;
 +      case 8:
-+#line 119 "./http_resp_parser.y"
++#line 120 "./http_resp_parser.y"
 +{
 +    yygotominor.yy9 = data_string_init();
 +    
 +    buffer_copy_string_buffer(yygotominor.yy9->key, yymsp[-3].minor.yy0);
 +    buffer_copy_string_buffer(yygotominor.yy9->value, yymsp[-1].minor.yy0);    
 +}
-+#line 676 "http_resp_parser.c"
++#line 677 "http_resp_parser.c"
 +  yy_destructor(3,&yymsp[-2].minor);
 +  yy_destructor(1,&yymsp[0].minor);
 +        break;
 +
 +  ctx->ok = 0;
 +
-+#line 711 "http_resp_parser.c"
++#line 712 "http_resp_parser.c"
 +  http_resp_parserARG_STORE; /* Suppress warning about unused %extra_argument variable */
 +}
 +
 +  }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
 +  return;
 +}
---- lighttpd-1.4.11/src/inet_ntop_cache.c      2005-08-11 01:26:38.000000000 +0300
+--- ../lighttpd-1.4.11/src/inet_ntop_cache.c   2005-08-11 01:26:38.000000000 +0300
 +++ lighttpd-1.4.12/src/inet_ntop_cache.c      2006-07-11 22:07:52.000000000 +0300
 @@ -8,7 +8,7 @@
  #include "sys-socket.h"
        return srv->inet_ntop_cache[i].b2;
  #else
        UNUSED(srv);
---- lighttpd-1.4.11/src/joblist.c      2005-08-11 01:26:41.000000000 +0300
+--- ../lighttpd-1.4.11/src/joblist.c   2005-08-11 01:26:41.000000000 +0300
 +++ lighttpd-1.4.12/src/joblist.c      2006-07-11 22:07:51.000000000 +0300
 @@ -7,7 +7,7 @@
  
        return 0;
  }
  
---- lighttpd-1.4.11/src/keyvalue.c     2006-03-02 16:08:06.000000000 +0200
+--- ../lighttpd-1.4.11/src/keyvalue.c  2006-03-02 16:08:06.000000000 +0200
 +++ lighttpd-1.4.12/src/keyvalue.c     2006-07-11 22:07:51.000000000 +0300
 @@ -87,7 +87,8 @@
        { 504, "Gateway Timeout" },
 +
        free(kvb);
  }
---- lighttpd-1.4.11/src/keyvalue.h     2006-03-02 16:08:06.000000000 +0200
+--- ../lighttpd-1.4.11/src/keyvalue.h  2006-03-02 16:08:06.000000000 +0200
 +++ lighttpd-1.4.12/src/keyvalue.h     2006-07-11 22:07:52.000000000 +0300
 @@ -9,19 +9,19 @@
  # include <pcre.h>
        char *realm;
        httpauth_type type;
  } httpauth_keyvalue;
---- lighttpd-1.4.11/src/lemon.c        2005-09-01 00:21:34.000000000 +0300
+--- ../lighttpd-1.4.11/src/lemon.c     2005-09-01 00:21:34.000000000 +0300
 +++ lighttpd-1.4.12/src/lemon.c        2006-07-11 22:07:51.000000000 +0300
 @@ -579,7 +579,7 @@
  */
        (sizeof(x4node) + sizeof(x4node*))*64 );
      if( x4a->tbl==0 ){
        free(x4a);
---- lighttpd-1.4.11/src/lempar.c       2005-08-11 01:26:40.000000000 +0300
+--- ../lighttpd-1.4.11/src/lempar.c    2005-08-11 01:26:40.000000000 +0300
 +++ lighttpd-1.4.12/src/lempar.c       2006-07-11 22:07:51.000000000 +0300
 @@ -8,10 +8,10 @@
  /* Next is all token values, in a form suitable for use by makeheaders.
        **
        ** This is what we do if the grammar does define ERROR:
        **
---- lighttpd-1.4.11/src/log.c  2005-11-07 15:01:35.000000000 +0200
-+++ lighttpd-1.4.12/src/log.c  2006-07-11 22:07:53.000000000 +0300
-@@ -5,7 +5,7 @@
+--- ../lighttpd-1.4.11/src/log.c       2005-11-07 15:01:35.000000000 +0200
++++ lighttpd-1.4.12/src/log.c  2006-07-15 22:43:21.000000000 +0300
+@@ -5,7 +5,6 @@
  #include <errno.h>
  #include <fcntl.h>
  #include <time.h>
 -#include <unistd.h>
-+//#include <unistd.h>
  #include <string.h>
  #include <stdlib.h>
  
-@@ -16,6 +16,10 @@
+@@ -16,6 +15,10 @@
  #include "config.h"
  #endif
  
  #ifdef HAVE_SYSLOG_H
  #include <syslog.h>
  #endif
-@@ -23,6 +27,8 @@
+@@ -23,6 +26,8 @@
  #include "log.h"
  #include "array.h"
  
  #ifdef HAVE_VALGRIND_VALGRIND_H
  #include <valgrind/valgrind.h>
  #endif
-@@ -31,38 +37,38 @@
+@@ -31,38 +36,38 @@
  # define O_LARGEFILE 0
  #endif
  
                        return -1;
                }
  #ifdef FD_CLOEXEC
-@@ -71,15 +77,15 @@
+@@ -71,15 +76,15 @@
  #endif
                srv->errorlog_mode = ERRORLOG_FILE;
        }
        /* move stderr to /dev/null */
        if (close_stderr &&
            -1 != (fd = open("/dev/null", O_WRONLY))) {
-@@ -90,33 +96,33 @@
+@@ -90,33 +95,33 @@
        return 0;
  }
  
                        srv->errorlog_mode = ERRORLOG_SYSLOG;
  #endif
                } else {
-@@ -125,15 +131,15 @@
+@@ -125,15 +130,15 @@
                        srv->errorlog_fd = new_fd;
                }
        }
        switch(srv->errorlog_mode) {
        case ERRORLOG_FILE:
                close(srv->errorlog_fd);
-@@ -146,13 +152,13 @@
+@@ -146,13 +151,13 @@
        case ERRORLOG_STDERR:
                break;
        }
        switch(srv->errorlog_mode) {
        case ERRORLOG_FILE:
        case ERRORLOG_STDERR:
-@@ -161,7 +167,7 @@
+@@ -161,7 +166,7 @@
                        buffer_prepare_copy(srv->ts_debug_str, 255);
                        strftime(srv->ts_debug_str->ptr, srv->ts_debug_str->size - 1, "%Y-%m-%d %H:%M:%S", localtime(&(srv->cur_ts)));
                        srv->ts_debug_str->used = strlen(srv->ts_debug_str->ptr) + 1;
                        srv->last_generated_debug_ts = srv->cur_ts;
                }
  
-@@ -173,19 +179,19 @@
+@@ -173,19 +178,19 @@
                BUFFER_COPY_STRING_CONST(srv->errorlog_buf, "(");
                break;
        }
                switch(*fmt) {
                case 's':           /* string */
                        s = va_arg(ap, char *);
-@@ -227,7 +233,7 @@
+@@ -227,7 +232,7 @@
                        break;
                case '(':
                case ')':
                case '>':
                case ',':
                case ' ':
-@@ -236,7 +242,7 @@
+@@ -236,7 +241,7 @@
                }
        }
        va_end(ap);
        switch(srv->errorlog_mode) {
        case ERRORLOG_FILE:
                BUFFER_APPEND_STRING_CONST(srv->errorlog_buf, "\n");
-@@ -246,11 +252,13 @@
+@@ -246,11 +251,13 @@
                BUFFER_APPEND_STRING_CONST(srv->errorlog_buf, "\n");
                write(STDERR_FILENO, srv->errorlog_buf->ptr, srv->errorlog_buf->used - 1);
                break;
        return 0;
  }
  
---- lighttpd-1.4.11/src/log.h  2005-08-11 01:26:36.000000000 +0300
+--- ../lighttpd-1.4.11/src/log.h       2005-08-11 01:26:36.000000000 +0300
 +++ lighttpd-1.4.12/src/log.h  2006-07-11 22:07:53.000000000 +0300
 @@ -9,5 +9,5 @@
  int log_error_close(server *srv);
 -      
 +
  #endif
---- lighttpd-1.4.11/src/md5.h  2005-11-17 16:20:40.000000000 +0200
+--- ../lighttpd-1.4.11/src/md5.h       2005-11-17 16:20:40.000000000 +0200
 +++ lighttpd-1.4.12/src/md5.h  2006-07-11 22:07:53.000000000 +0300
 @@ -30,9 +30,15 @@
  # include <inttypes.h>
  
  /* MD5 context. */
  typedef struct {
---- lighttpd-1.4.11/src/mod_access.c   2006-01-14 19:44:54.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_access.c        2006-01-14 19:44:54.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_access.c   2006-07-11 22:07:53.000000000 +0300
 @@ -8,126 +8,125 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_accesslog.c        2006-01-31 14:01:43.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_accesslog.c     2006-01-31 14:01:43.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_accesslog.c        2006-07-11 22:07:53.000000000 +0300
 @@ -6,8 +6,7 @@
  #include <ctype.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_alias.c    2006-03-01 23:18:51.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_alias.c 2006-03-01 23:18:51.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_alias.c    2006-07-11 22:07:51.000000000 +0300
 @@ -8,6 +8,7 @@
  #include "buffer.h"
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_auth.c     2006-02-15 20:01:31.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_auth.c  2006-02-15 20:01:31.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_auth.c     2006-07-11 22:07:53.000000000 +0300
 @@ -5,168 +5,167 @@
  #include <string.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_cgi.c      2006-02-22 15:15:10.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_cgi.c   2006-02-22 15:15:10.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_cgi.c      2006-07-11 22:07:51.000000000 +0300
 @@ -1,21 +1,8 @@
  #include <sys/types.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_cml.c      2006-01-30 13:51:48.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_cml.c   2006-01-30 13:51:48.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_cml.c      2006-07-11 22:07:51.000000000 +0300
 @@ -4,7 +4,6 @@
  #include <stdlib.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_cml.h      2006-01-30 13:51:35.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_cml.h   2006-01-30 13:51:35.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_cml.h      2006-07-11 22:07:51.000000000 +0300
 @@ -16,10 +16,10 @@
  
  } plugin_data;
  
  int cache_parse_lua(server *srv, connection *con, plugin_data *p, buffer *fn);
---- lighttpd-1.4.11/src/mod_cml_funcs.c        2005-11-17 16:15:08.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_cml_funcs.c     2005-11-17 16:15:08.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_cml_funcs.c        2006-07-11 22:07:52.000000000 +0300
 @@ -4,8 +4,7 @@
  #include <stdlib.h>
        return 1;
  }
  #endif
---- lighttpd-1.4.11/src/mod_cml_lua.c  2006-01-30 13:56:40.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_cml_lua.c       2006-01-30 13:56:40.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_cml_lua.c  2006-07-11 22:07:53.000000000 +0300
 @@ -23,7 +23,7 @@
  #ifdef USE_OPENSSL
        return ret /* cache-error */;
  }
  #else
---- lighttpd-1.4.11/src/mod_compress.c 2005-11-18 13:49:14.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_compress.c      2005-11-18 13:49:14.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_compress.c 2006-07-11 22:07:53.000000000 +0300
 @@ -2,7 +2,6 @@
  #include <sys/stat.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_dirlisting.c       2006-01-13 00:00:45.000000000 +0200
-+++ lighttpd-1.4.12/src/mod_dirlisting.c       2006-07-11 22:07:53.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_dirlisting.c    2006-01-13 00:00:45.000000000 +0200
++++ lighttpd-1.4.12/src/mod_dirlisting.c       2006-07-15 22:43:21.000000000 +0300
 @@ -1,11 +1,9 @@
  #include <ctype.h>
  #include <stdlib.h>
  #include <time.h>
  
  #include "base.h"
-@@ -31,6 +29,9 @@
+@@ -17,6 +15,9 @@
+ #include "response.h"
+ #include "stat_cache.h"
+ #include "stream.h"
++#include "etag.h"
++
++#include "sys-strings.h"
+ /**
+  * this is a dirlisting for a lighttpd plugin
+@@ -27,10 +28,13 @@
+ #include <sys/syslimits.h>
+ #endif
+-#ifdef HAVE_ATTR_ATTRIBUTES_H
++#ifdef HAVE_XATTR
  #include <attr/attributes.h>
  #endif
  
  /* plugin config for all request/connections */
  
  typedef struct {
-@@ -54,7 +55,7 @@
+@@ -54,7 +58,7 @@
        unsigned short hide_readme_file;
        unsigned short show_header;
        unsigned short hide_header_file;
        excludes_buffer *excludes;
  
        buffer *external_css;
-@@ -63,13 +64,13 @@
+@@ -63,13 +67,14 @@
  
  typedef struct {
        PLUGIN_DATA;
        buffer *tmp_buf;
        buffer *content_charset;
 -      
++      buffer *path;
 +
        plugin_config **config_storage;
 -      
  } plugin_data;
  
  excludes_buffer *excludes_buffer_init(void) {
-@@ -146,44 +147,44 @@
+@@ -146,44 +151,46 @@
  /* init the plugin data */
  INIT_FUNC(mod_dirlisting_init) {
        plugin_data *p;
        p->tmp_buf = buffer_init();
        p->content_charset = buffer_init();
 -      
++      p->path = buffer_init();
 +
        return p;
  }
 -      
 +
        buffer_free(p->tmp_buf);
++      buffer_free(p->path);
        buffer_free(p->content_charset);
 -      
 +
        return HANDLER_GO_ON;
  }
  
-@@ -215,10 +216,10 @@
+@@ -215,10 +222,10 @@
                        if (0 != excludes_buffer_append(s->excludes,
                                    ((data_string *)(da->value->data[j]))->value)) {
  #ifdef HAVE_PCRE_H
                                                "pcre support is missing, please install libpcre and the headers");
  #endif
                        }
-@@ -233,8 +234,8 @@
+@@ -233,8 +240,8 @@
  SETDEFAULTS_FUNC(mod_dirlisting_set_defaults) {
        plugin_data *p = p_d;
        size_t i = 0;
                { "dir-listing.exclude",          NULL, T_CONFIG_LOCAL, T_CONFIG_SCOPE_CONNECTION },   /* 0 */
                { "dir-listing.activate",         NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 1 */
                { "dir-listing.hide-dotfiles",    NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 2 */
-@@ -245,18 +246,18 @@
+@@ -245,18 +252,18 @@
                { "dir-listing.show-header",      NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 7 */
                { "dir-listing.hide-header-file", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */
                { "server.dir-listing",           NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 9 */
                s = calloc(1, sizeof(plugin_config));
                s->excludes = excludes_buffer_init();
                s->dir_listing = 0;
-@@ -267,7 +268,7 @@
+@@ -267,7 +274,7 @@
                s->show_header = 0;
                s->hide_header_file = 0;
                s->encoding = buffer_init();
                cv[0].destination = s->excludes;
                cv[1].destination = &(s->dir_listing);
                cv[2].destination = &(s->hide_dot_files);
-@@ -292,60 +293,57 @@
+@@ -292,60 +299,57 @@
        return HANDLER_GO_ON;
  }
  
  
  typedef struct {
        size_t  namelen;
-@@ -432,7 +430,7 @@
+@@ -432,7 +436,7 @@
  
  static void http_list_directory_header(server *srv, connection *con, plugin_data *p, buffer *out) {
        UNUSED(srv);
        BUFFER_APPEND_STRING_CONST(out,
                "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n"
                "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">\n"
-@@ -492,11 +490,11 @@
+@@ -492,11 +496,11 @@
        if (p->conf.show_header) {
                stream s;
                /* if we have a HEADER file, display it in <pre class="header"></pre> */
                if (-1 != stream_open(&s, p->tmp_buf)) {
                        BUFFER_APPEND_STRING_CONST(out, "<pre class=\"header\">");
                        buffer_append_string_encoded(out, s.start, s.size, ENCODING_MINIMAL_XML);
-@@ -531,21 +529,21 @@
+@@ -531,21 +535,21 @@
  
  static void http_list_directory_footer(server *srv, connection *con, plugin_data *p, buffer *out) {
        UNUSED(srv);
                if (-1 != stream_open(&s, p->tmp_buf)) {
                        BUFFER_APPEND_STRING_CONST(out, "<pre class=\"readme\">");
                        buffer_append_string_encoded(out, s.start, s.size, ENCODING_MINIMAL_XML);
-@@ -553,7 +551,7 @@
+@@ -553,7 +557,7 @@
                }
                stream_close(&s);
        }
        BUFFER_APPEND_STRING_CONST(out,
                "<div class=\"foot\">"
        );
-@@ -595,7 +593,7 @@
+@@ -576,7 +580,6 @@
+       buffer *out;
+       struct dirent *dent;
+       struct stat st;
+-      char *path, *path_file;
+       size_t i;
+       int hide_dotfiles = p->conf.hide_dot_files;
+       dirls_list_t dirs, files, *list;
+@@ -586,6 +589,7 @@
+       size_t k;
+       const char *content_type;
+       long name_max;
++
+ #ifdef HAVE_XATTR
+       char attrval[128];
+       int attrlen;
+@@ -594,10 +598,10 @@
+       struct tm tm;
  #endif
  
-       if (dir->used == 0) return -1;
+-      if (dir->used == 0) return -1;
 -      
-+
-       i = dir->used - 1;
+-      i = dir->used - 1;
++      /* empty pathname, never ... */
++      if (buffer_is_empty(dir)) return -1;
  
++      /* max-length for the opendir */
  #ifdef HAVE_PATHCONF
-@@ -606,19 +604,24 @@
+       if (-1 == (name_max = pathconf(dir->ptr, _PC_NAME_MAX))) {
+ #ifdef NAME_MAX
+@@ -606,22 +610,24 @@
                name_max = 256; /* stupid default */
  #endif
        }
        name_max = NAME_MAX;
  #endif
 -      
+-      path = malloc(dir->used + name_max);
+-      assert(path);
+-      strcpy(path, dir->ptr);
+-      path_file = path + i;
+-      if (NULL == (dp = opendir(path))) {
+-              log_error_write(srv, __FILE__, __LINE__, "sbs", 
++      buffer_copy_string_buffer(p->path, dir);
++      PATHNAME_APPEND_SLASH(p->path);
 +
-       path = malloc(dir->used + name_max);
-       assert(path);
-       strcpy(path, dir->ptr);
 +#ifdef _WIN32
-+    /* append \*.* to the path and keep the \ as part of the pathname */
-+    strcat(path, "\\*.*");
-+    i++;
++      /* append *.* to the path */
++      buffer_append_string(path, "*.*");
 +#endif
-       path_file = path + i;
-       if (NULL == (dp = opendir(path))) {
--              log_error_write(srv, __FILE__, __LINE__, "sbs", 
++
++      if (NULL == (dp = opendir(p->path->ptr))) {
 +              log_error_write(srv, __FILE__, __LINE__, "sbs",
                        "opendir failed:", dir, strerror(errno));
  
-               free(path);
-@@ -633,7 +636,7 @@
+-              free(path);
+               return -1;
+       }
+@@ -633,7 +639,7 @@
        assert(files.ent);
        files.size = DIRLIST_BLOB_SIZE;
        files.used = 0;
        while ((dent = readdir(dp)) != NULL) {
                unsigned short exclude_match = 0;
  
-@@ -686,15 +689,17 @@
+@@ -686,15 +692,21 @@
  #endif
  
                i = strlen(dent->d_name);
                 */
                if (i > (size_t)name_max) continue;
 -              
-+
-               memcpy(path_file, dent->d_name, i + 1);
+-              memcpy(path_file, dent->d_name, i + 1);
 -              if (stat(path, &st) != 0)
-+              if (stat(path, &st) != 0) {
-+            fprintf(stderr, "%s.%d: %s, %s\r\n", __FILE__, __LINE__, path, strerror(errno));
++
++              /* build the dirname */
++              buffer_copy_string_buffer(p->path, dir);
++              PATHNAME_APPEND_SLASH(p->path);
++              buffer_append_string(p->path, dent->d_name);
++
++              if (stat(p->path->ptr, &st) != 0) {
++                      fprintf(stderr, "%s.%d: %s, %s\r\n", __FILE__, __LINE__, p->path->ptr, strerror(errno));
                        continue;
-+        }
++              }
  
                list = &files;
                if (S_ISDIR(st.st_mode))
-@@ -740,7 +745,7 @@
+@@ -740,7 +752,7 @@
  #else
                strftime(datebuf, sizeof(datebuf), "%Y-%b-%d %H:%M:%S", localtime(&(tmp->mtime)));
  #endif
                BUFFER_APPEND_STRING_CONST(out, "<tr><td class=\"n\"><a href=\"");
                buffer_append_string_encoded(out, DIRLIST_ENT_NAME(tmp), tmp->namelen, ENCODING_REL_URI_PART);
                BUFFER_APPEND_STRING_CONST(out, "/\">");
-@@ -758,7 +763,7 @@
+@@ -757,18 +769,22 @@
+               tmp = files.ent[i];
  
                content_type = NULL;
++
  #ifdef HAVE_XATTR
 -              
-+
                if (con->conf.use_xattr) {
-                       memcpy(path_file, DIRLIST_ENT_NAME(tmp), tmp->namelen + 1);
+-                      memcpy(path_file, DIRLIST_ENT_NAME(tmp), tmp->namelen + 1);
++                      /* build the dirname */
++                      buffer_copy_string_buffer(p->path, dir);
++                      PATHNAME_APPEND_SLASH(p->path);
++                      buffer_append_string_len(p->path, DIRLIST_ENT_NAME(tmp), tmp->namelen);
++
                        attrlen = sizeof(attrval) - 1;
-@@ -768,7 +773,7 @@
+-                      if (attr_get(path, "Content-Type", attrval, &attrlen, 0) == 0) {
++                      if (attr_get(p->path->ptr, "Content-Type", attrval, &attrlen, 0) == 0) {
+                               attrval[attrlen] = '\0';
+                               content_type = attrval;
                        }
                }
  #endif
                if (content_type == NULL) {
                        content_type = "application/octet-stream";
                        for (k = 0; k < con->conf.mimetypes->used; k++) {
-@@ -788,7 +793,7 @@
+@@ -788,7 +804,7 @@
                                }
                        }
                }
  #ifdef HAVE_LOCALTIME_R
                localtime_r(&(tmp->mtime), &tm);
                strftime(datebuf, sizeof(datebuf), "%Y-%b-%d %H:%M:%S", &tm);
-@@ -837,36 +842,36 @@
+@@ -814,7 +830,6 @@
+       free(files.ent);
+       free(dirs.ent);
+-      free(path);
+       http_list_directory_footer(srv, con, p, out);
+@@ -837,36 +852,55 @@
  URIHANDLER_FUNC(mod_dirlisting_subrequest) {
        plugin_data *p = p_d;
        stat_cache_entry *sce = NULL;
 -      
-+
-       UNUSED(srv);
+-      UNUSED(srv);
 -      
+-      if (con->physical.path->used == 0) return HANDLER_GO_ON;
+-      if (con->uri.path->used == 0) return HANDLER_GO_ON;
++      buffer *mtime;
++      data_string *ds;
 +
-       if (con->physical.path->used == 0) return HANDLER_GO_ON;
-       if (con->uri.path->used == 0) return HANDLER_GO_ON;
++      if (con->uri.path->used < 2) return HANDLER_GO_ON;
        if (con->uri.path->ptr[con->uri.path->used - 2] != '/') return HANDLER_GO_ON;
 -      
++      if (con->physical.path->used == 0) return HANDLER_GO_ON;
 +
        mod_dirlisting_patch_connection(srv, con, p);
  
        if (!p->conf.dir_listing) return HANDLER_GO_ON;
 -      
++
++      if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) {
++              /* just a second ago the file was still there */
++              return HANDLER_GO_ON;
++      }
++
++      if (!S_ISDIR(sce->st.st_mode)) return HANDLER_GO_ON;
 +
        if (con->conf.log_request_handling) {
                log_error_write(srv, __FILE__, __LINE__,  "s",  "-- handling the request as Dir-Listing");
                log_error_write(srv, __FILE__, __LINE__,  "sb", "URI          :", con->uri.path);
        }
 -      
+-      if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) {
+-              fprintf(stderr, "%s.%d: %s\n", __FILE__, __LINE__, con->physical.path->ptr);
+-              SEGFAULT();
 +
-       if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) {
-               fprintf(stderr, "%s.%d: %s\n", __FILE__, __LINE__, con->physical.path->ptr);
-               SEGFAULT();
++      /* perhaps this a cachable request
++       * - we use the etag of the directory
++       * */
++
++      etag_mutate(con->physical.etag, sce->etag);
++      response_header_overwrite(srv, con, CONST_STR_LEN("ETag"), CONST_BUF_LEN(con->physical.etag));
++
++      /* prepare header */
++      if (NULL == (ds = (data_string *)array_get_element(con->response.headers, "Last-Modified"))) {
++              mtime = strftime_cache_get(srv, sce->st.st_mtime);
++              response_header_overwrite(srv, con, CONST_STR_LEN("Last-Modified"), CONST_BUF_LEN(mtime));
++      } else {
++              mtime = ds->value;
        }
 -      
-+
-       if (!S_ISDIR(sce->st.st_mode)) return HANDLER_GO_ON;
+-      if (!S_ISDIR(sce->st.st_mode)) return HANDLER_GO_ON;
 -      
++
++      if (HANDLER_FINISHED == http_response_handle_cachable(srv, con, mtime)) {
++              return HANDLER_FINISHED;
++      }
 +
        if (http_list_directory(srv, con, p, con->physical.path)) {
                /* dirlisting failed */
        /* not found */
        return HANDLER_FINISHED;
  }
-@@ -876,13 +881,13 @@
+@@ -876,13 +910,13 @@
  int mod_dirlisting_plugin_init(plugin *p) {
        p->version     = LIGHTTPD_VERSION_ID;
        p->name        = buffer_init_string("dirlisting");
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_evasive.c  2006-01-04 15:24:51.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_evasive.c       2006-01-04 15:24:51.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_evasive.c  2006-07-11 22:07:53.000000000 +0300
 @@ -31,100 +31,97 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_evhost.c   2005-08-17 10:42:03.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_evhost.c        2005-08-17 10:42:03.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_evhost.c   2006-07-11 22:07:51.000000000 +0300
 @@ -7,10 +7,12 @@
  #include "response.h"
        return 0;
  }
  
---- lighttpd-1.4.11/src/mod_expire.c   2005-11-03 09:52:13.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_expire.c        2005-11-03 09:52:13.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_expire.c   2006-07-11 22:07:52.000000000 +0300
 @@ -12,8 +12,8 @@
  #include "stat_cache.h"
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_fastcgi.c  2006-03-09 13:18:39.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_fastcgi.c       2006-03-09 13:18:39.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_fastcgi.c  2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,4 @@
  #include <sys/types.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_flv_streaming.c    2006-03-07 14:06:26.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_flv_streaming.c 2006-03-07 14:06:26.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_flv_streaming.c    2006-07-11 22:07:52.000000000 +0300
 @@ -23,35 +23,35 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_indexfile.c        2005-09-30 01:08:53.000000000 +0300
-+++ lighttpd-1.4.12/src/mod_indexfile.c        2006-07-11 22:07:53.000000000 +0300
-@@ -20,51 +20,51 @@
+--- ../lighttpd-1.4.11/src/mod_indexfile.c     2005-09-30 01:08:53.000000000 +0300
++++ lighttpd-1.4.12/src/mod_indexfile.c        2006-07-15 22:43:21.000000000 +0300
+@@ -12,6 +12,8 @@
+ #include "stat_cache.h"
++#include "sys-strings.h"
++#include "sys-files.h"
+ /* plugin config for all request/connections */
+ typedef struct {
+@@ -20,51 +22,51 @@
  
  typedef struct {
        PLUGIN_DATA;
        return HANDLER_GO_ON;
  }
  
-@@ -73,131 +73,128 @@
+@@ -73,131 +75,139 @@
  SETDEFAULTS_FUNC(mod_indexfile_set_defaults) {
        plugin_data *p = p_d;
        size_t i = 0;
 +
        mod_indexfile_patch_connection(srv, con, p);
 -      
++
++      /* is the physical-path really a dir ? */
++      if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) {
++              return HANDLER_GO_ON;
++      }
++
++      if (!S_ISDIR(sce->st.st_mode)) {
++              return HANDLER_GO_ON;
++      }
 +
        if (con->conf.log_request_handling) {
                log_error_write(srv, __FILE__, __LINE__,  "s",  "-- handling the request as Indexfile");
                log_error_write(srv, __FILE__, __LINE__,  "sb", "URI          :", con->uri.path);
        }
 -      
++
 +
        /* indexfile */
        for (k = 0; k < p->conf.indexfiles->used; k++) {
                        buffer_copy_string_buffer(p->tmp_buf, con->physical.doc_root);
                } else {
                        buffer_copy_string_buffer(p->tmp_buf, con->physical.path);
++                      PATHNAME_APPEND_SLASH(p->tmp_buf);
                }
                buffer_append_string_buffer(p->tmp_buf, ds->value);
 -              
        /* not found */
        return HANDLER_GO_ON;
  }
-@@ -207,13 +204,13 @@
+@@ -207,13 +217,13 @@
  int mod_indexfile_plugin_init(plugin *p) {
        p->version     = LIGHTTPD_VERSION_ID;
        p->name        = buffer_init_string("indexfile");
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_mysql_vhost.c      2006-01-14 20:35:10.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_mysql_vhost.c   2006-01-14 20:35:10.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_mysql_vhost.c      2006-07-11 22:07:52.000000000 +0300
 @@ -1,13 +1,18 @@
 -#include <unistd.h>
        return 0;
  }
  #else
---- lighttpd-1.4.11/src/mod_proxy.c    2006-01-31 13:01:22.000000000 +0200
-+++ lighttpd-1.4.12/src/mod_proxy.c    2006-07-11 22:07:52.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_proxy.c 2006-01-31 13:01:22.000000000 +0200
++++ lighttpd-1.4.12/src/mod_proxy.c    2006-07-15 22:43:21.000000000 +0300
 @@ -1,6 +1,5 @@
  #include <sys/types.h>
  
  
  #define data_proxy data_fastcgi
  #define data_proxy_init data_fastcgi_init
-@@ -38,16 +42,16 @@
+@@ -38,22 +42,25 @@
  #define PROXY_RETRY_TIMEOUT 60
  
  /**
   * TODO:      - delay upstream read if write_queue is too large
   *              (to prevent memory eating, like in apache). Shoud be
   *              configurable).
-@@ -66,26 +70,31 @@
+  *            - persistent connection with upstream servers
+  *            - HTTP/1.1
+  */
++
++
++
+ typedef enum {
+       PROXY_BALANCE_UNSET,
+       PROXY_BALANCE_FAIR,
+@@ -66,26 +73,33 @@
        int debug;
  
        proxy_balance_t balance;
        buffer *balance_buf;
 -      
 +
++      http_resp *resp;
++
 +      array *ignore_headers;
 +
        plugin_config **config_storage;
 +      PROXY_STATE_CONNECT,
 +      PROXY_STATE_PREPARE_WRITE,
 +      PROXY_STATE_WRITE,
-+    PROXY_STATE_RESPONSE_HEADER,
-+    PROXY_STATE_RESPONSE_CONTENT,
++      PROXY_STATE_RESPONSE_HEADER,
++      PROXY_STATE_RESPONSE_CONTENT,
 +      PROXY_STATE_ERROR
  } proxy_connection_state_t;
  
  enum { PROXY_STDOUT, PROXY_END_REQUEST };
-@@ -93,19 +102,20 @@
+@@ -93,19 +107,17 @@
  typedef struct {
        proxy_connection_state_t state;
        time_t state_timestamp;
 +
        data_proxy *host;
 -      
-+
-       buffer *response;
-       buffer *response_header;
+-      buffer *response;
+-      buffer *response_header;
  
        chunkqueue *wb;
 -      
-+    chunkqueue *rb;
++      chunkqueue *rb;
 +
        int fd; /* fd to the proxy process */
        int fde_ndx; /* index into the fd-event buffer */
        connection *remote_conn;  /* dump pointer */
        plugin_data *plugin_data; /* dump pointer */
  } handler_ctx;
-@@ -116,21 +126,22 @@
+@@ -116,69 +128,88 @@
  
  static handler_ctx * handler_ctx_init() {
        handler_ctx * hctx;
        hctx->state = PROXY_STATE_INIT;
        hctx->host = NULL;
 -      
-+
-       hctx->response = buffer_init();
-       hctx->response_header = buffer_init();
+-      hctx->response = buffer_init();
+-      hctx->response_header = buffer_init();
  
        hctx->wb = chunkqueue_init();
-+    hctx->rb = chunkqueue_init();
++      hctx->rb = chunkqueue_init();
  
        hctx->fd = -1;
        hctx->fde_ndx = -1;
        return hctx;
  }
  
-@@ -138,47 +149,70 @@
-       buffer_free(hctx->response);
-       buffer_free(hctx->response_header);
+ static void handler_ctx_free(handler_ctx *hctx) {
+-      buffer_free(hctx->response);
+-      buffer_free(hctx->response_header);
        chunkqueue_free(hctx->wb);
 -      
-+    chunkqueue_free(hctx->rb);
++      chunkqueue_free(hctx->rb);
 +
        free(hctx);
  }
 +
        p = calloc(1, sizeof(*p));
 -      
+-      p->parse_response = buffer_init();
 +
-       p->parse_response = buffer_init();
        p->balance_buf = buffer_init();
 -      
 +      p->ignore_headers = array_init();
++      p->resp = http_response_init();
 +
 +      for (i = 0; hop2hop_headers[i]; i++) {
 +              data_string *ds;
 +
-+              if (NULL == (ds = (data_string *)array_get_unused_element(p->ignore_headers, TYPE_STRING))) {
++              if (NULL == (ds = (data_string *)array_get_unused_element(p->ignore_headers, TYPE_STRING))) {
 +                      ds = data_string_init();
 +              }
 +
++              buffer_copy_string(ds->key, hop2hop_headers[i]);
 +              buffer_copy_string(ds->value, hop2hop_headers[i]);
 +              array_insert_unique(p->ignore_headers, (data_unset *)ds);
 +      }
 +
        UNUSED(srv);
  
-       buffer_free(p->parse_response);
-       buffer_free(p->balance_buf);
+-      buffer_free(p->parse_response);
+-      buffer_free(p->balance_buf);
 -      
-+
        if (p->config_storage) {
                size_t i;
                for (i = 0; i < srv->config_context->used; i++) {
        }
 -      
 +
-+      free(p->ignore_headers);
++      array_free(p->ignore_headers);
++      buffer_free(p->balance_buf);
++      http_response_free(p->resp);
 +
        free(p);
 -      
        return HANDLER_GO_ON;
  }
  
-@@ -186,37 +220,38 @@
+@@ -186,37 +217,38 @@
        plugin_data *p = p_d;
        data_unset *du;
        size_t i = 0;
                if (buffer_is_empty(p->balance_buf)) {
                        s->balance = PROXY_BALANCE_FAIR;
                } else if (buffer_is_equal_string(p->balance_buf, CONST_STR_LEN("fair"))) {
-@@ -226,7 +261,7 @@
+@@ -226,99 +258,99 @@
                } else if (buffer_is_equal_string(p->balance_buf, CONST_STR_LEN("hash"))) {
                        s->balance = PROXY_BALANCE_HASH;
                } else {
 -                      log_error_write(srv, __FILE__, __LINE__, "sb", 
+-                                      "proxy.balance has to be one of: fair, round-robin, hash, but not:", p->balance_buf);
 +                      log_error_write(srv, __FILE__, __LINE__, "sb",
-                                       "proxy.balance has to be one of: fair, round-robin, hash, but not:", p->balance_buf);
++                              "proxy.balance has to be one of: fair, round-robin, hash, but not:", p->balance_buf);
                        return HANDLER_ERROR;
                }
-@@ -234,91 +269,91 @@
                if (NULL != (du = array_get_element(ca, "proxy.server"))) {
                        size_t j;
                        data_array *da = (data_array *)du;
                                                array_insert_unique(dfa->value, (data_unset *)df);
                                                array_insert_unique(s->extensions, (data_unset *)dfa);
                                        } else {
-@@ -328,19 +363,19 @@
+@@ -328,19 +360,19 @@
                        }
                }
        }
        if (hctx->fd != -1) {
                fdevent_event_del(srv->ev, &(hctx->fde_ndx), hctx->fd);
                fdevent_unregister(srv->ev, hctx->fd);
-@@ -348,47 +383,56 @@
+@@ -348,47 +380,56 @@
                close(hctx->fd);
                srv->cur_fds--;
        }
        if (-1 == connect(proxy_fd, proxy_addr, servlen)) {
 -              if (errno == EINPROGRESS || errno == EALREADY) {
 +#ifdef _WIN32
-+        errno = WSAGetLastError();
++      errno = WSAGetLastError();
 +#endif
-+        switch(errno) {
++      switch(errno) {
 +#ifdef _WIN32
-+        case WSAEWOULDBLOCK:
++      case WSAEWOULDBLOCK:
 +#endif
-+        case EINPROGRESS:
-+        case EALREADY:
++      case EINPROGRESS:
++      case EALREADY:
                        if (p->conf.debug) {
 -                              log_error_write(srv, __FILE__, __LINE__, "sd", 
 +                              log_error_write(srv, __FILE__, __LINE__, "sd",
                        return -1;
                }
        }
-+    fprintf(stderr, "%s.%d: connected fd = %d\r\n", __FILE__, __LINE__, proxy_fd);
++      fprintf(stderr, "%s.%d: connected fd = %d\r\n", __FILE__, __LINE__, proxy_fd);
        if (p->conf.debug) {
 -              log_error_write(srv, __FILE__, __LINE__, "sd", 
 +              log_error_write(srv, __FILE__, __LINE__, "sd",
                                "connect succeeded: ", proxy_fd);
        }
  
-@@ -422,25 +466,26 @@
+@@ -396,51 +437,52 @@
+ }
+ void proxy_set_header(connection *con, const char *key, const char *value) {
+-    data_string *ds_dst;
++      data_string *ds_dst;
+-    if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) {
+-          ds_dst = data_string_init();
+-    }
+-
+-    buffer_copy_string(ds_dst->key, key);
+-    buffer_copy_string(ds_dst->value, value);
+-    array_insert_unique(con->request.headers, (data_unset *)ds_dst);
++      if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) {
++              ds_dst = data_string_init();
++      }
++
++      buffer_copy_string(ds_dst->key, key);
++      buffer_copy_string(ds_dst->value, value);
++      array_insert_unique(con->request.headers, (data_unset *)ds_dst);
+ }
+ void proxy_append_header(connection *con, const char *key, const char *value) {
+-    data_string *ds_dst;
++      data_string *ds_dst;
+-    if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) {
+-          ds_dst = data_string_init();
+-    }
+-
+-    buffer_copy_string(ds_dst->key, key);
+-    buffer_append_string(ds_dst->value, value);
+-    array_insert_unique(con->request.headers, (data_unset *)ds_dst);
++      if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING))) {
++              ds_dst = data_string_init();
++      }
++
++      buffer_copy_string(ds_dst->key, key);
++      buffer_append_string(ds_dst->value, value);
++      array_insert_unique(con->request.headers, (data_unset *)ds_dst);
+ }
  
  static int proxy_create_env(server *srv, handler_ctx *hctx) {
        size_t i;
            !buffer_is_empty(con->request.http_host)) {
                proxy_set_header(con, "X-Host", con->request.http_host->ptr);
        }
-@@ -449,24 +494,26 @@
+@@ -449,24 +491,25 @@
        /* request header */
        for (i = 0; i < con->request.headers->used; i++) {
                data_string *ds;
 +
                ds = (data_string *)con->request.headers->data[i];
 -              
-+
-               if (ds->value->used && ds->key->used) {
+-              if (ds->value->used && ds->key->used) {
 -                      if (buffer_is_equal_string(ds->key, CONST_STR_LEN("Connection"))) continue;
 -                      
+-                      buffer_append_string_buffer(b, ds->key);
+-                      BUFFER_APPEND_STRING_CONST(b, ": ");
+-                      buffer_append_string_buffer(b, ds->value);
+-                      BUFFER_APPEND_STRING_CONST(b, "\r\n");
+-              }
 +
-+                      /* don't copy hop-to-hop headers */
-+                      if (array_get_element(p->ignore_headers, ds->key->ptr)) continue;
++              if (buffer_is_empty(ds->value) || buffer_is_empty(ds->key)) continue;
 +
-                       buffer_append_string_buffer(b, ds->key);
-                       BUFFER_APPEND_STRING_CONST(b, ": ");
-                       buffer_append_string_buffer(b, ds->value);
-                       BUFFER_APPEND_STRING_CONST(b, "\r\n");
-               }
++              if (!buffer_is_equal_string(ds->key, CONST_STR_LEN("Connection"))) continue;
++              if (!buffer_is_equal_string(ds->key, CONST_STR_LEN("Keep-Alive"))) continue;
++
++              buffer_append_string_buffer(b, ds->key);
++              BUFFER_APPEND_STRING_CONST(b, ": ");
++              buffer_append_string_buffer(b, ds->value);
++              BUFFER_APPEND_STRING_CONST(b, "\r\n");
        }
 -      
 +
        if (con->request.content_length) {
                chunkqueue *req_cq = con->request_content_queue;
                chunk *req_c;
-@@ -479,7 +526,7 @@
+@@ -479,7 +522,7 @@
  
                        /* we announce toWrite octects
                         * now take all the request_content chunk that we need to fill this request
  
                        switch (req_c->type) {
                        case FILE_CHUNK:
-@@ -507,223 +554,125 @@
+@@ -507,223 +550,161 @@
  
                                req_c->offset += weHave;
                                req_cq->bytes_out += weHave;
 -      
 -      UNUSED(srv);
 +static void chunkqueue_print(chunkqueue *cq) {
-+    chunk *c;
++      chunk *c;
  
 -      /* \r\n -> \0\0 */
 -      
 -                      
 -                      array_insert_unique(con->response.headers, (data_unset *)ds);
 -              }
--      }
++      for (c = cq->first; c; c = c->next) {
++              fprintf(stderr, "%s", c->mem->ptr + c->offset);
+       }
 -      
 -      return 0;
-+    for (c = cq->first; c; c = c->next) {
-+        fprintf(stderr, "%s", c->mem->ptr + c->offset);
-+    }
-+    fprintf(stderr, "\r\n");
++      fprintf(stderr, "\r\n");
  }
  
 -
 -              log_error_write(srv, __FILE__, __LINE__, "sd", 
 -                              "ioctl failed: ",
 -                              proxy_fd);
--              return -1;
--      }
--
-+    chunkqueue *next_queue = NULL;
-+    chunk *c = NULL;
++      chunkqueue *next_queue = NULL;
++      chunk *c = NULL;
++
++      switch(srv->network_backend_read(srv, con, proxy_fd, hctx->rb)) {
++      case NETWORK_STATUS_SUCCESS:
++              /* we got content */
++              break;
++      case NETWORK_STATUS_WAIT_FOR_EVENT:
++              /* the ioctl will return WAIT_FOR_EVENT on a read */
++              if (0 == con->file_started) return -1;
++      case NETWORK_STATUS_CONNECTION_CLOSE:
++              /* we are done, get out of here */
++              con->file_finished = 1;
++
++              /* close the chunk-queue with a empty chunk */
++
++              return 1;
++      default:
++              /* oops */
+               return -1;
+       }
++      /* looks like we got some content
++      *
++      * split off the header from the incoming stream
++      */
  
 -      if (p->conf.debug) {
 -              log_error_write(srv, __FILE__, __LINE__, "sd",
 -                             "proxy - have to read:", b);
 -      }
--
++      if (hctx->state == PROXY_STATE_RESPONSE_HEADER) {
++              size_t i;
++              int have_content_length = 0;
 -      if (b > 0) {
 -              if (hctx->response->used == 0) {
 -                      /* avoid too small buffer */
 -              log_error_write(srv, __FILE__, __LINE__, "sdsbs", 
 -                              "demux: Response buffer len", hctx->response->used, ":", hctx->response, ":");
 -#endif
--
++              http_response_reset(p->resp);
 -              if (0 == con->got_response) {
 -                      con->got_response = 1;
 -                      buffer_prepare_copy(hctx->response_header, 128);
 -                              if (con->request.http_version == HTTP_VERSION_1_1 &&
 -                                  !(con->parsed_response & HTTP_CONTENT_LENGTH)) {
 -                                      con->response.transfer_encoding = HTTP_TRANSFER_ENCODING_CHUNKED;
--                              }
++              /* the response header is not fully received yet,
++              *
++              * extract the http-response header from the rb-cq
++              */
++              switch (http_response_parse_cq(hctx->rb, p->resp)) {
++              case PARSE_ERROR:
++                      /* parsing failed */
++
++                      con->http_status = 502; /* Bad Gateway */
++                      return 1;
++              case PARSE_NEED_MORE:
++                      return 0;
++              case PARSE_SUCCESS:
++                      con->http_status = p->resp->status;
++
++                      chunkqueue_remove_finished_chunks(hctx->rb);
++
++                      /* copy the http-headers */
++                      for (i = 0; i < p->resp->headers->used; i++) {
++                              const char *ign[] = { "Status", "Connection", NULL };
++                              size_t j;
++                              data_string *ds;
++
++                              data_string *header = (data_string *)p->resp->headers->data[i];
++
++                              /* some headers are ignored by default */
++                              for (j = 0; ign[j]; j++) {
++                                      if (0 == strcasecmp(ign[j], header->key->ptr)) break;
+                               }
 -                                      
 -                              con->file_started = 1;
 -                              if (blen) {
 -                                      http_chunk_append_mem(srv, con, c + 4, blen + 1);
 -                                      joblist_append(srv, con);
--                              }
++                              if (ign[j]) continue;
++
++                              if (0 == buffer_caseless_compare(CONST_BUF_LEN(header->key), CONST_STR_LEN("Location"))) {
++                                      /* CGI/1.1 rev 03 - 7.2.1.2 */
++                                      if (con->http_status == 0) con->http_status = 302;
++                              } else if (0 == buffer_caseless_compare(CONST_BUF_LEN(header->key), CONST_STR_LEN("Content-Length"))) {
++                                      have_content_length = 1;
+                               }
 -                              hctx->response->used = 0;
--                      }
++                              
++                              if (NULL == (ds = (data_string *)array_get_unused_element(con->response.headers, TYPE_STRING))) {
++                                      ds = data_response_init();
++                              }
++                              buffer_copy_string_buffer(ds->key, header->key);
++                              buffer_copy_string_buffer(ds->value, header->value);
++
++                              array_insert_unique(con->response.headers, (data_unset *)ds);
+                       }
 -              } else {
 -                      http_chunk_append_mem(srv, con, hctx->response->ptr, hctx->response->used);
 -                      joblist_append(srv, con);
 -                      hctx->response->used = 0;
--              }
++
++                      con->file_started = 1;
++
++                      if (con->request.http_version == HTTP_VERSION_1_1 &&
++                          !have_content_length) {
++                              con->response.transfer_encoding = HTTP_TRANSFER_ENCODING_CHUNKED;
++                      }
++
++                      hctx->state = PROXY_STATE_RESPONSE_CONTENT;
++                      break;
+               }
 -              
 -      } else {
 -              /* reading from upstream done */
-+    switch(srv->network_backend_read(srv, con, proxy_fd, hctx->rb)) {
-+    case NETWORK_STATUS_SUCCESS:
-+        /* we got content */
-+        break;
-+    case NETWORK_STATUS_CONNECTION_CLOSE:
-+        /* we are done, get out of here */
-               con->file_finished = 1;
+-              con->file_finished = 1;
 -              
-+
-+        /* close the chunk-queue with a empty chunk */
-               http_chunk_append_mem(srv, con, NULL, 0);
-               joblist_append(srv, con);
+-              http_chunk_append_mem(srv, con, NULL, 0);
+-              joblist_append(srv, con);
 -              
 -              fin = 1;
+       }
+-      
+-      return fin;
 +
-+        return 1;
-+    default:
-+        /* oops */
-+        return -1;
-+    }
-+
-+    /* looks like we got some content
-+    *
-+    * split off the header from the incoming stream
-+    */
-+
-+    if (hctx->state == PROXY_STATE_RESPONSE_HEADER) {
-+        http_resp *resp = http_response_init();
-+
-+        /* the response header is not fully received yet,
-+        *
-+        * extract the http-response header from the rb-cq
-+        */
-+        fprintf(stderr, "%s.%d: network-read\r\n", __FILE__, __LINE__);
-+        chunkqueue_print(hctx->rb);
-+
-+        switch (http_response_parse_cq(hctx->rb, resp)) {
-+        case PARSE_ERROR:
-+            /* parsing failed */
-+
-+            con->http_status = 502; /* Bad Gateway */
-+            return 1;
-+        case PARSE_NEED_MORE:
-+            return 0;
-+        case PARSE_SUCCESS:
-+            con->http_status = resp->status;
-+
-+            fprintf(stderr, "%s.%d: parsing done\r\n", __FILE__, __LINE__);
-+            chunkqueue_print(hctx->rb);
-+
-+            con->file_started = 1;
-+
-+            hctx->state = PROXY_STATE_RESPONSE_CONTENT;
-+            break;
-+        }
-+    }
-+
-+    /* FIXME: pass the response-header to the other plugins to
-+    * setup the filter-queue
-+    *
-+    * - use next-queue instead of con->write_queue
-+    */
++      /* FIXME: pass the response-header to the other plugins to
++      * setup the filter-queue
++      *
++      * - use next-queue instead of con->write_queue
++      */
 +
-+    next_queue = con->write_queue;
++      next_queue = con->write_queue;
 +
-+    assert(hctx->state == PROXY_STATE_RESPONSE_CONTENT);
++      assert(hctx->state == PROXY_STATE_RESPONSE_CONTENT);
 +
-+    /* FIXME: if we have a content-length or chunked-encoding
-+    * handle it.
-+    *
-+    * for now we wait for EOF on the socket */
++      /* FIXME: if we have a content-length or chunked-encoding
++      * handle it.
++      *
++      * for now we wait for EOF on the socket */
 +
-+    /* copy the content to the next cq */
-+    for (c = hctx->rb->first; c; c = c->next) {
-+        http_chunk_append_mem(srv, con, c->mem->ptr + c->offset, c->mem->used - c->offset);
++      /* copy the content to the next cq */
++      for (c = hctx->rb->first; c; c = c->next) {
++              http_chunk_append_mem(srv, con, c->mem->ptr + c->offset, c->mem->used - c->offset);
 +
-+        c->offset = c->mem->used - 1;
-       }
--      
--      return fin;
++              c->offset = c->mem->used - 1;
++      }
 +
-+    chunkqueue_remove_finished_chunks(hctx->rb);
++      chunkqueue_remove_finished_chunks(hctx->rb);
++      joblist_append(srv, con);
 +
 +      return 0;
  }
  
  
-@@ -731,12 +680,12 @@
+@@ -731,12 +712,12 @@
        data_proxy *host= hctx->host;
        plugin_data *p    = hctx->plugin_data;
        connection *con   = hctx->remote_conn;
        int ret;
 -      
 -      if (!host || 
+-          (!host->host->used || !host->port)) return -1;
+-      
 +
 +      if (!host ||
-           (!host->host->used || !host->port)) return -1;
--      
++              (!host->host->used || !host->port)) return -1;
 +
        switch(hctx->state) {
        case PROXY_STATE_INIT:
                if (-1 == (hctx->fd = socket(AF_INET, SOCK_STREAM, 0))) {
-@@ -744,19 +693,19 @@
+@@ -744,19 +725,19 @@
                        return HANDLER_ERROR;
                }
                hctx->fde_ndx = -1;
        case PROXY_STATE_CONNECT:
                /* try to finish the connect() */
                if (hctx->state == PROXY_STATE_INIT) {
-@@ -764,16 +713,16 @@
+@@ -764,16 +745,16 @@
                        switch (proxy_establish_connection(srv, hctx)) {
                        case 1:
                                proxy_set_state(srv, hctx, PROXY_STATE_CONNECT);
                                return HANDLER_ERROR;
                        default:
                                /* everything is ok, go on */
-@@ -782,152 +731,152 @@
+@@ -782,152 +763,152 @@
                } else {
                        int socket_error;
                        socklen_t socket_error_len = sizeof(socket_error);
 -                              log_error_write(srv, __FILE__, __LINE__,  "s", "proxy - connect - delayed success"); 
 +                              log_error_write(srv, __FILE__, __LINE__,  "s", "proxy - connect - delayed success");
                        }
-+            fprintf(stderr, "%s.%d: connected fd = %d\r\n", __FILE__, __LINE__, hctx->fd);
                }
 -              
 +
 -                      } else {
 -                              fdevent_event_add(srv->ev, &(hctx->fde_ndx), hctx->fd, FDEVENT_OUT);
 +              switch(ret) {
-+        case NETWORK_STATUS_FATAL_ERROR:
++              case NETWORK_STATUS_FATAL_ERROR:
 +                      log_error_write(srv, __FILE__, __LINE__, "ssd", "write failed:", strerror(errno), errno);
  
 -                              return HANDLER_WAIT_FOR_EVENT;
 -                      }
 +                      return HANDLER_ERROR;
-+        case NETWORK_STATUS_WAIT_FOR_EVENT:
++              case NETWORK_STATUS_WAIT_FOR_EVENT:
 +
 +                      fdevent_event_add(srv->ev, &(hctx->fde_ndx), hctx->fd, FDEVENT_OUT);
 +
 +
                return HANDLER_WAIT_FOR_EVENT;
 -      case PROXY_STATE_READ:
++      case PROXY_STATE_RESPONSE_CONTENT:
 +      case PROXY_STATE_RESPONSE_HEADER:
                /* waiting for a response */
 +
                 */
  
                return HANDLER_WAIT_FOR_FD;
-@@ -938,7 +887,7 @@
+@@ -938,7 +919,7 @@
        default:
                break;
        }
        if (con->file_started == 1) {
                return HANDLER_FINISHED;
        } else {
-@@ -951,13 +900,14 @@
+@@ -951,13 +932,14 @@
        handler_ctx *hctx = ctx;
        connection  *con  = hctx->remote_conn;
        plugin_data *p    = hctx->plugin_data;
 +
        if ((revents & FDEVENT_IN) &&
 -          hctx->state == PROXY_STATE_READ) {
-+        (hctx->state == PROXY_STATE_RESPONSE_HEADER ||
-+         hctx->state == PROXY_STATE_RESPONSE_CONTENT)) {
++          (hctx->state == PROXY_STATE_RESPONSE_HEADER ||
++           hctx->state == PROXY_STATE_RESPONSE_CONTENT)) {
  
                if (p->conf.debug) {
 -                      log_error_write(srv, __FILE__, __LINE__, "sd", 
                                        "proxy: fdevent-in", hctx->state);
                }
  
-@@ -966,10 +916,10 @@
+@@ -965,11 +947,15 @@
+               case 0:
                        break;
                case 1:
++                      log_error_write(srv, __FILE__, __LINE__, "sd",
++                                      "proxy: request done", hctx->fd);
                        hctx->host->usage--;
 -                      
++
++                      http_chunk_append_mem(srv, con, NULL, 0);
 +
                        /* we are done */
                        proxy_connection_close(srv, hctx);
                        joblist_append(srv, con);
                        return HANDLER_FINISHED;
                case -1:
-@@ -982,53 +932,53 @@
+@@ -982,53 +968,53 @@
                                /* response might have been already started, kill the connection */
                                connection_set_state(srv, con, CON_STATE_ERROR);
                        }
                        return HANDLER_FINISHED;
                }
  
-@@ -1038,13 +988,13 @@
+@@ -1038,13 +1024,13 @@
                joblist_append(srv, con);
        } else if (revents & FDEVENT_ERR) {
                /* kill all connections to the proxy process */
        return HANDLER_FINISHED;
  }
  
-@@ -1058,44 +1008,49 @@
+@@ -1058,44 +1044,48 @@
        buffer *fn;
        data_array *extension = NULL;
        size_t path_info_offset;
        s_len = fn->used - 1;
 -      
 -      
-+
 +
        path_info_offset = 0;
  
                                if (0 != (pi_offset = strchr(fn->ptr + ct_len + 1, '/'))) {
                                        path_info_offset = pi_offset - fn->ptr;
                                }
-@@ -1106,12 +1061,14 @@
+@@ -1106,12 +1096,14 @@
                        break;
                }
        }
                log_error_write(srv, __FILE__, __LINE__,  "s", "proxy - ext found");
        }
  
-@@ -1120,34 +1077,34 @@
+@@ -1120,34 +1112,34 @@
                /* hash balancing */
  
                if (p->conf.debug) {
                        }
                }
  
-@@ -1155,19 +1112,20 @@
+@@ -1155,19 +1147,20 @@
        case PROXY_BALANCE_FAIR:
                /* fair balancing */
                if (p->conf.debug) {
                        }
                }
  
-@@ -1175,89 +1133,100 @@
+@@ -1175,89 +1168,100 @@
        case PROXY_BALANCE_RR:
                /* round robin */
                if (p->conf.debug) {
        proxy_connection_close(srv, con->plugin_ctx[p->id]);
  
        return HANDLER_GO_ON;
-@@ -1276,11 +1245,11 @@
+@@ -1276,11 +1280,11 @@
                size_t i, n, k;
                for (i = 0; i < srv->config_context->used; i++) {
                        plugin_config *s = p->config_storage[i];
                        for (k = 0; k < s->extensions->used; k++) {
                                data_array *extension = (data_array *)s->extensions->data[k];
  
-@@ -1290,8 +1259,8 @@
+@@ -1290,8 +1294,8 @@
  
                                        if (!host->is_disabled ||
                                            srv->cur_ts - host->disable_ts < 5) continue;
                                                        "proxy - re-enabled:",
                                                        host->host, host->port);
  
-@@ -1317,8 +1286,8 @@
+@@ -1317,8 +1321,8 @@
        p->handle_uri_clean        = mod_proxy_check_extension;
        p->handle_subrequest       = mod_proxy_handle_subrequest;
        p->handle_trigger          = mod_proxy_trigger;
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_redirect.c 2006-02-08 15:38:06.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_redirect.c      2006-02-08 15:38:06.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_redirect.c 2006-07-11 22:07:52.000000000 +0300
 @@ -22,35 +22,35 @@
        PLUGIN_DATA;
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_rewrite.c  2005-09-29 20:59:10.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_rewrite.c       2005-09-29 20:59:10.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_rewrite.c  2006-07-11 22:07:51.000000000 +0300
 @@ -13,24 +13,8 @@
  #endif
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_rrdtool.c  2005-08-22 01:52:24.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_rrdtool.c       2005-08-22 01:52:24.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_rrdtool.c  2006-07-11 22:07:52.000000000 +0300
 @@ -5,7 +5,6 @@
  #include <stdlib.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_scgi.c     2006-03-04 17:15:26.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_scgi.c  2006-03-04 17:15:26.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_scgi.c     2006-07-11 22:07:51.000000000 +0300
 @@ -1,5 +1,4 @@
  #include <sys/types.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_secure_download.c  2005-12-14 14:37:29.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_secure_download.c       2005-12-14 14:37:29.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_secure_download.c  2006-07-11 22:07:51.000000000 +0300
 @@ -25,7 +25,7 @@
  #ifdef USE_OPENSSL
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_setenv.c   2006-01-14 20:33:12.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_setenv.c        2006-01-14 20:33:12.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_setenv.c   2006-07-11 22:07:53.000000000 +0300
 @@ -18,25 +18,25 @@
  typedef struct {
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_simple_vhost.c     2005-11-18 15:16:13.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_simple_vhost.c  2005-11-18 15:16:13.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_simple_vhost.c     2006-07-11 22:07:52.000000000 +0300
 @@ -10,6 +10,8 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_skeleton.c 2005-10-02 18:30:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_skeleton.c      2005-10-02 18:30:51.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_skeleton.c 2006-07-11 22:07:51.000000000 +0300
 @@ -14,13 +14,13 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_sql_vhost_core.c   1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_sql_vhost_core.c        1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_sql_vhost_core.c   2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,209 @@
 +#include <stdio.h>
 +      return 0;
 +}
 +
---- lighttpd-1.4.11/src/mod_sql_vhost_core.h   1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_sql_vhost_core.h        1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_sql_vhost_core.h   2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,49 @@
 +#ifndef _MOD_SQL_VHOST_CORE_H_
 +
 +
 +#endif
---- lighttpd-1.4.11/src/mod_ssi.c      2006-03-04 17:09:48.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_ssi.c   2006-03-04 17:09:48.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_ssi.c      2006-07-11 22:07:53.000000000 +0300
 @@ -6,7 +6,6 @@
  #include <string.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_ssi.h      2005-08-11 01:26:39.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_ssi.h   2005-08-11 01:26:39.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_ssi.h      2006-07-11 22:07:53.000000000 +0300
 @@ -19,23 +19,23 @@
  
  } plugin_data;
  
  int ssi_eval_expr(server *srv, connection *con, plugin_data *p, const char *expr);
---- lighttpd-1.4.11/src/mod_ssi_expr.c 2005-08-11 01:26:48.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_ssi_expr.c      2005-08-11 01:26:48.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_ssi_expr.c 2006-07-11 22:07:52.000000000 +0300
 @@ -11,9 +11,9 @@
        const char *input;
 +#endif
        return context.val.bo;
  }
---- lighttpd-1.4.11/src/mod_ssi_expr.h 2005-08-11 01:26:48.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_ssi_expr.h      2005-08-11 01:26:48.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_ssi_expr.h 2006-07-11 22:07:52.000000000 +0300
 @@ -5,16 +5,16 @@
  
        void   *srv;
  } ssi_ctx_t;
  
---- lighttpd-1.4.11/src/mod_ssi_exprparser.c   2005-10-03 00:40:25.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_ssi_exprparser.c        2005-10-03 00:40:25.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_ssi_exprparser.c   2006-07-11 22:08:02.000000000 +0300
 @@ -18,10 +18,10 @@
  /* Next is all token values, in a form suitable for use by makeheaders.
        **
        ** This is what we do if the grammar does define ERROR:
        **
---- lighttpd-1.4.11/src/mod_staticfile.c       2006-02-15 14:31:14.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_staticfile.c    2006-02-15 14:31:14.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_staticfile.c       2006-07-11 22:07:51.000000000 +0300
 @@ -14,9 +14,11 @@
  #include "http_chunk.h"
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_status.c   2006-01-10 21:45:32.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_status.c        2006-01-10 21:45:32.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_status.c   2006-07-11 22:07:53.000000000 +0300
 @@ -4,7 +4,6 @@
  #include <fcntl.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_trigger_b4_dl.c    2005-09-23 22:53:55.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_trigger_b4_dl.c 2005-09-23 22:53:55.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_trigger_b4_dl.c    2006-07-11 22:07:51.000000000 +0300
 @@ -24,18 +24,18 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_userdir.c  2005-10-28 16:48:28.000000000 +0300
+--- ../lighttpd-1.4.11/src/mod_userdir.c       2005-10-28 16:48:28.000000000 +0300
 +++ lighttpd-1.4.12/src/mod_userdir.c  2006-07-11 22:07:52.000000000 +0300
 @@ -10,6 +10,7 @@
  #include "response.h"
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_usertrack.c        2006-01-31 15:01:20.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_usertrack.c     2006-01-31 15:01:20.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_usertrack.c        2006-07-11 22:07:53.000000000 +0300
 @@ -24,44 +24,44 @@
  
 +
        return 0;
  }
---- lighttpd-1.4.11/src/mod_webdav.c   2006-03-03 01:28:58.000000000 +0200
+--- ../lighttpd-1.4.11/src/mod_webdav.c        2006-03-03 01:28:58.000000000 +0200
 +++ lighttpd-1.4.12/src/mod_webdav.c   2006-07-11 22:07:53.000000000 +0300
 @@ -3,13 +3,10 @@
  #include <ctype.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/network.c      2006-03-04 16:45:46.000000000 +0200
+--- ../lighttpd-1.4.11/src/network.c   2006-03-04 16:45:46.000000000 +0200
 +++ lighttpd-1.4.12/src/network.c      2006-07-11 22:07:51.000000000 +0300
 @@ -1,14 +1,14 @@
  #include <sys/types.h>
 +      }
        return ret;
  }
---- lighttpd-1.4.11/src/network.h      2005-08-11 01:26:42.000000000 +0300
+--- ../lighttpd-1.4.11/src/network.h   2005-08-11 01:26:42.000000000 +0300
 +++ lighttpd-1.4.12/src/network.h      2006-07-11 22:07:51.000000000 +0300
 @@ -3,7 +3,8 @@
  
  
  int network_init(server *srv);
  int network_close(server *srv);
---- lighttpd-1.4.11/src/network_backends.h     2005-10-24 15:13:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_backends.h  2005-10-24 15:13:51.000000000 +0300
 +++ lighttpd-1.4.12/src/network_backends.h     2006-07-11 22:07:52.000000000 +0300
 @@ -43,16 +43,52 @@
  # define USE_AIX_SENDFILE
  #endif
  
  #endif
---- lighttpd-1.4.11/src/network_freebsd_sendfile.c     2005-10-22 12:28:18.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_freebsd_sendfile.c  2005-10-22 12:28:18.000000000 +0300
 +++ lighttpd-1.4.12/src/network_freebsd_sendfile.c     2006-07-11 22:07:52.000000000 +0300
 @@ -26,142 +26,61 @@
  
  }
  
  #endif
---- lighttpd-1.4.11/src/network_linux_sendfile.c       2006-02-15 20:02:36.000000000 +0200
-+++ lighttpd-1.4.12/src/network_linux_sendfile.c       2006-07-11 22:07:53.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_linux_sendfile.c    2006-02-15 20:02:36.000000000 +0200
++++ lighttpd-1.4.12/src/network_linux_sendfile.c       2006-07-15 22:43:21.000000000 +0300
 @@ -26,122 +26,54 @@
  /* on linux 2.4.29 + debian/ubuntu we have crashes if this is enabled */
  #undef HAVE_POSIX_FADVISE
                        if (c->offset == c->file.length) {
                                chunk_finished = 1;
  
-@@ -222,19 +154,19 @@
+@@ -222,24 +154,24 @@
                                        c->file.fd = -1;
                                }
                        }
                        break;
                }
        }
---- lighttpd-1.4.11/src/network_openssl.c      2005-11-17 14:53:29.000000000 +0200
+-      return chunks_written;
++      return NETWORK_STATUS_SUCCESS;
+ }
+ #endif
+--- ../lighttpd-1.4.11/src/network_openssl.c   2005-11-17 14:53:29.000000000 +0200
 +++ lighttpd-1.4.12/src/network_openssl.c      2006-07-11 22:07:52.000000000 +0300
 @@ -23,17 +23,87 @@
  #include "log.h"
                chunks_written++;
        }
  
---- lighttpd-1.4.11/src/network_solaris_sendfilev.c    2005-10-22 12:28:27.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_solaris_sendfilev.c 2005-10-22 12:28:27.000000000 +0300
 +++ lighttpd-1.4.12/src/network_solaris_sendfilev.c    2006-07-11 22:07:53.000000000 +0300
 @@ -29,114 +29,34 @@
  #endif
  }
  
  #endif
---- lighttpd-1.4.11/src/network_write.c        2005-10-22 12:27:56.000000000 +0300
-+++ lighttpd-1.4.12/src/network_write.c        2006-07-11 22:07:51.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_write.c     2005-10-22 12:27:56.000000000 +0300
++++ lighttpd-1.4.12/src/network_write.c        2006-07-15 22:43:21.000000000 +0300
 @@ -1,11 +1,11 @@
  #include <sys/types.h>
  #include <sys/stat.h>
  #ifdef HAVE_SYS_FILIO_H
  # include <sys/filio.h>
  #endif
-@@ -24,47 +27,86 @@
+@@ -24,47 +27,84 @@
  #include <sys/resource.h>
  #endif
  
 +* as vectors
 +*/
 +NETWORK_BACKEND_READ(read) {
-+    int toread;
-+    buffer *b;
-+    off_t r;
-+
-+      /* check how much we have to read */
-+      if (ioctl(fd, FIONREAD, &toread)) {
-+              log_error_write(srv, __FILE__, __LINE__, "sd",
-+                              "ioctl failed: ",
-+                              fd);
-+              return NETWORK_STATUS_FATAL_ERROR;
-+      }
++      int toread;
++      buffer *b;
++      off_t r;
 +
-+      if (toread == 0) return NETWORK_STATUS_WAIT_FOR_EVENT;
++      /* use a chunk-size of 8k */
++      do {
++              toread = 8192;
 +
-+    /*
-+    * our chunk queue is quiet large already
-+    *
-+    * let's buffer it to disk
-+    */
++              b = chunkqueue_get_append_buffer(cq);
 +
-+    b = chunkqueue_get_append_buffer(cq);
++              buffer_prepare_copy(b, toread);
 +
-+    buffer_prepare_copy(b, toread);
++              if (-1 == (r = read(fd, b->ptr, toread))) {
++                      switch (errno) {
++                      case EAGAIN:
++                              return NETWORK_STATUS_WAIT_FOR_EVENT;
++                      default:
++                              log_error_write(srv, __FILE__, __LINE__, "sds",
++                                      "unexpected end-of-file (perhaps the proxy process died):",
++                                      fd, strerror(errno));
++                              return NETWORK_STATUS_FATAL_ERROR;
++                      }
++              }
 +
-+    if (-1 == (r = read(fd, b->ptr, toread))) {
-+              log_error_write(srv, __FILE__, __LINE__, "sds",
-+                              "unexpected end-of-file (perhaps the proxy process died):",
-+                              fd, strerror(errno));
-+              return NETWORK_STATUS_FATAL_ERROR;
-+      }
++              if (r == 0) {
++                      return NETWORK_STATUS_CONNECTION_CLOSE;
++              }
 +
-+      /* this should be catched by the b > 0 above */
-+      assert(r);
-+      b->used += r + 1;
-+      b->ptr[b->used - 1] = '\0';
++              /* this should be catched by the b > 0 above */
++              assert(r);
++              b->used += r + 1;
++              b->ptr[b->used - 1] = '\0';
++      } while (r == toread);
 +
-+    return NETWORK_STATUS_SUCCESS;
++      return NETWORK_STATUS_SUCCESS;
 +}
 +
 +NETWORK_BACKEND_WRITE(write) {
                        break;
                }
                case FILE_CHUNK: {
-@@ -76,93 +118,89 @@
+@@ -76,93 +116,89 @@
                        size_t toSend;
                        stat_cache_entry *sce = NULL;
                        int ifd;
 -      p->write = network_write_write_chunkset;
 -}
  #endif
---- lighttpd-1.4.11/src/network_writev.c       2006-02-15 01:02:36.000000000 +0200
-+++ lighttpd-1.4.12/src/network_writev.c       2006-07-11 22:07:52.000000000 +0300
+--- ../lighttpd-1.4.11/src/network_writev.c    2006-02-15 01:02:36.000000000 +0200
++++ lighttpd-1.4.12/src/network_writev.c       2006-07-15 22:43:21.000000000 +0300
 @@ -28,10 +28,10 @@
  
  #ifndef UIO_MAXIOV
  #  define UIO_MAXIOV 512
  # elif defined(__sun)
  /* Solaris (and SunOS?) defines IOV_MAX instead */
-@@ -51,105 +51,119 @@
+@@ -51,105 +51,121 @@
  #define LOCAL_BUFFERING 1
  #endif
  
 +      if ((r = writev(fd, chunks, num_chunks)) < 0) {
 +              switch (errno) {
 +              case EAGAIN:
++                      return NETWORK_STATUS_WAIT_FOR_EVENT;
 +              case EINTR:
-+                      r = 0;
-+                      break;
++                      return NETWORK_STATUS_INTERRUPTED;
 +              case EPIPE:
 +              case ECONNRESET:
 +                      return NETWORK_STATUS_CONNECTION_CLOSE;
 +                      /* partially written */
 +
 +                      tc->offset += r;
-+                      break;
++
++                      return NETWORK_STATUS_WAIT_FOR_EVENT;
 +              }
 +      }
 +
++      /* all chunks have been pushed out */
 +      return NETWORK_STATUS_SUCCESS;
 +}
 +
                case FILE_CHUNK: {
                        ssize_t r;
                        off_t abs_offset;
-@@ -159,26 +173,26 @@
+@@ -159,26 +175,26 @@
  #define KByte * 1024
  #define MByte * 1024 KByte
  #define GByte * 1024 MByte
                         * - new mmap as the we are at the end of the last one */
                        if (c->file.mmap.start == MAP_FAILED ||
                            abs_offset == (off_t)(c->file.mmap.offset + c->file.mmap.length)) {
-@@ -188,7 +202,7 @@
+@@ -188,7 +204,7 @@
                                 * adaptive mem-mapping
                                 *   the problem:
                                 *     we mmap() the whole file. If someone has alot large files and 32bit
                                 *     mmap() call.
                                 *   solution:
                                 *     only mmap 16M in one chunk and move the window as soon as we have finished
-@@ -234,8 +248,8 @@
+@@ -234,8 +250,8 @@
                                if (-1 == c->file.fd) {  /* open the file if not already open */
                                        if (-1 == (c->file.fd = open(c->file.name->ptr, O_RDONLY))) {
                                                log_error_write(srv, __FILE__, __LINE__, "sbs", "open failed for:", c->file.name, strerror(errno));
                                        }
  #ifdef FD_CLOEXEC
                                        fcntl(c->file.fd, F_SETFD, FD_CLOEXEC);
-@@ -245,10 +259,10 @@
+@@ -245,10 +261,10 @@
                                if (MAP_FAILED == (c->file.mmap.start = mmap(0, to_mmap, PROT_READ, MAP_SHARED, c->file.fd, c->file.mmap.offset))) {
                                        /* close it here, otherwise we'd have to set FD_CLOEXEC */
  
                                }
  
                                c->file.mmap.length = to_mmap;
-@@ -258,7 +272,7 @@
+@@ -258,7 +274,7 @@
  #ifdef HAVE_MADVISE
                                /* don't advise files < 64Kb */
                                if (c->file.mmap.length > (64 KByte)) {
                                         * detect this at runtime.i
                                         *
                                         * ignore the return value for now */
-@@ -274,12 +288,12 @@
+@@ -274,12 +290,12 @@
                        toSend = (c->file.mmap.offset + c->file.mmap.length) - (abs_offset);
  
                        if (toSend < 0) {
                                assert(toSend < 0);
                        }
  
-@@ -297,18 +311,18 @@
+@@ -297,18 +313,18 @@
                                        break;
                                case EPIPE:
                                case ECONNRESET:
                        if (c->offset == c->file.length) {
                                chunk_finished = 1;
  
-@@ -318,26 +332,26 @@
+@@ -318,26 +334,26 @@
                                        c->file.mmap.start = MAP_FAILED;
                                }
                        }
  }
  
  #endif
---- lighttpd-1.4.11/src/plugin.c       2006-02-08 14:00:54.000000000 +0200
+--- ../lighttpd-1.4.11/src/plugin.c    2006-02-08 14:00:54.000000000 +0200
 +++ lighttpd-1.4.12/src/plugin.c       2006-07-11 22:07:52.000000000 +0300
 @@ -13,27 +13,27 @@
  #include <valgrind/valgrind.h>
        free(srv->plugins.ptr);
        srv->plugins.ptr = NULL;
        srv->plugins.used = 0;
---- lighttpd-1.4.11/src/plugin.h       2005-08-15 12:28:56.000000000 +0300
+--- ../lighttpd-1.4.11/src/plugin.h    2005-08-15 12:28:56.000000000 +0300
 +++ lighttpd-1.4.12/src/plugin.h       2006-07-11 22:07:52.000000000 +0300
 @@ -12,6 +12,12 @@
  
 +void *plugin_get_config(server *srv, const char *name);
  
  #endif
---- lighttpd-1.4.11/src/proc_open.c    2005-08-11 01:26:39.000000000 +0300
+--- ../lighttpd-1.4.11/src/proc_open.c 2005-08-11 01:26:39.000000000 +0300
 +++ lighttpd-1.4.12/src/proc_open.c    2006-07-11 22:07:53.000000000 +0300
 @@ -13,13 +13,13 @@
  #endif
  
        for (;;) {
                buffer_prepare_append(b, 512);
---- lighttpd-1.4.11/src/proc_open.h    2005-08-11 01:26:39.000000000 +0300
+--- ../lighttpd-1.4.11/src/proc_open.h 2005-08-11 01:26:39.000000000 +0300
 +++ lighttpd-1.4.12/src/proc_open.h    2006-07-11 22:07:53.000000000 +0300
 @@ -1,7 +1,7 @@
  
  #include <windows.h>
  typedef HANDLE descriptor_t;
  typedef HANDLE proc_pid_t;
---- lighttpd-1.4.11/src/request.c      2006-03-05 11:58:09.000000000 +0200
+--- ../lighttpd-1.4.11/src/request.c   2006-03-05 11:58:09.000000000 +0200
 +++ lighttpd-1.4.12/src/request.c      2006-07-11 22:07:52.000000000 +0300
 @@ -10,15 +10,17 @@
  #include "keyvalue.h"
 +
        return 0;
  }
---- lighttpd-1.4.11/src/response.c     2006-03-04 16:41:39.000000000 +0200
+--- ../lighttpd-1.4.11/src/response.c  2006-03-04 16:41:39.000000000 +0200
 +++ lighttpd-1.4.12/src/response.c     2006-07-11 22:07:52.000000000 +0300
 @@ -7,7 +7,6 @@
  #include <stdlib.h>
        /* can't happen */
        return HANDLER_COMEBACK;
  }
---- lighttpd-1.4.11/src/server.c       2006-03-04 19:12:17.000000000 +0200
+--- ../lighttpd-1.4.11/src/server.c    2006-03-04 19:12:17.000000000 +0200
 +++ lighttpd-1.4.12/src/server.c       2006-07-11 22:07:53.000000000 +0300
 @@ -1,11 +1,9 @@
  #include <sys/types.h>
 +
        return 0;
  }
---- lighttpd-1.4.11/src/settings.h     2005-08-11 01:26:41.000000000 +0300
+--- ../lighttpd-1.4.11/src/settings.h  2005-08-11 01:26:41.000000000 +0300
 +++ lighttpd-1.4.12/src/settings.h     2006-07-11 22:07:53.000000000 +0300
 @@ -9,24 +9,24 @@
  /**
                HANDLER_ERROR,
                HANDLER_WAIT_FOR_FD
  } handler_t;
---- lighttpd-1.4.11/src/spawn-fcgi.c   2006-03-07 14:18:10.000000000 +0200
+--- ../lighttpd-1.4.11/src/spawn-fcgi.c        2006-03-07 14:18:10.000000000 +0200
 +++ lighttpd-1.4.12/src/spawn-fcgi.c   2006-07-11 22:07:53.000000000 +0300
 @@ -1,19 +1,16 @@
  #include <sys/types.h>
         return fcgi_spawn_connection(fcgi_app, addr, port, unixsocket, child_count, pid_fd, nofork);
  }
  #else
---- lighttpd-1.4.11/src/splaytree.c    2005-09-12 21:51:28.000000000 +0300
+--- ../lighttpd-1.4.11/src/splaytree.c 2005-09-12 21:51:28.000000000 +0300
 +++ lighttpd-1.4.12/src/splaytree.c    2006-07-11 22:07:51.000000000 +0300
 @@ -56,19 +56,19 @@
  
      l->right = t->left;                                /* assemble */
      r->left = t->right;
      t->left = N.right;
---- lighttpd-1.4.11/src/splaytree.h    2005-09-12 21:51:13.000000000 +0300
+--- ../lighttpd-1.4.11/src/splaytree.h 2005-09-12 21:51:13.000000000 +0300
 +++ lighttpd-1.4.12/src/splaytree.h    2006-07-11 22:07:51.000000000 +0300
 @@ -19,6 +19,6 @@
  /* This macro returns the size of a node.  Unlike "x->size",     */
 +
  
  #endif
---- lighttpd-1.4.11/src/stat_cache.c   2005-11-22 15:23:51.000000000 +0200
-+++ lighttpd-1.4.12/src/stat_cache.c   2006-07-11 22:07:52.000000000 +0300
+--- ../lighttpd-1.4.11/src/stat_cache.c        2005-11-22 15:23:51.000000000 +0200
++++ lighttpd-1.4.12/src/stat_cache.c   2006-07-15 22:43:21.000000000 +0300
 @@ -6,7 +6,6 @@
  #include <stdlib.h>
  #include <string.h>
                        if (type->used == 0) continue;
  
                        /* check if the right side is the same */
-@@ -539,7 +527,7 @@
+@@ -538,8 +526,10 @@
+                       stat_cache_attr_get(sce->content_type, name->ptr);
                }
  #endif
++      } else if (S_ISDIR(st.st_mode)) {
++              etag_create(sce->etag, &(sce->st));
        }
 -              
 +
  #ifdef HAVE_FAM_H
        if (sc->fam &&
            (srv->srvconf.stat_cache_engine == STAT_CACHE_ENGINE_FAM)) {
-@@ -549,19 +537,19 @@
+@@ -549,19 +539,19 @@
                        fam_dir->fc = sc->fam;
  
                        buffer_copy_string_buffer(fam_dir->name, sc->dir_name);
                                fam_dir_entry_free(fam_dir);
                        } else {
                                int osize = 0;
-@@ -570,7 +558,7 @@
+@@ -570,7 +560,7 @@
                                        osize = sc->dirs->size;
                                }
  
                                assert(sc->dirs);
                                assert(sc->dirs->data == fam_dir);
                                assert(osize == (sc->dirs->size - 1));
-@@ -578,9 +566,9 @@
+@@ -578,9 +568,9 @@
                } else {
                        fam_dir = dir_node->data;
                }
                if (fam_dir) {
                        sce->dir_version = fam_dir->version;
                        sce->dir_ndx     = dir_ndx;
-@@ -594,11 +582,11 @@
+@@ -594,11 +584,11 @@
  }
  
  /**
   * and remove them in a second loop
   */
  
-@@ -639,9 +627,9 @@
+@@ -639,9 +629,9 @@
                sc->files = splaytree_splay(sc->files, ndx);
  
                node = sc->files;
                        size_t j;
                        int osize = splaytree_size(sc->files);
                        stat_cache_entry *sce = node->data;
-@@ -649,7 +637,7 @@
+@@ -649,7 +639,7 @@
                        stat_cache_entry_free(node->data);
                        sc->files = splaytree_delete(sc->files, ndx);
  
                        for (j = 0; j < ctrl.used; j++) {
                                if (ctrl.ptr[j] == ndx) {
                                        ctrl.ptr[j] = ctrl.ptr[--ctrl.used];
---- lighttpd-1.4.11/src/stream.c       2005-09-23 21:50:15.000000000 +0300
+--- ../lighttpd-1.4.11/src/stream.c    2005-09-23 21:50:15.000000000 +0300
 +++ lighttpd-1.4.12/src/stream.c       2006-07-11 22:07:53.000000000 +0300
 @@ -1,7 +1,6 @@
  #include <sys/types.h>
        return 0;
  }
  
---- lighttpd-1.4.11/src/sys-files.h    1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/src/sys-files.h 1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/src/sys-files.h    2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,67 @@
 +#ifndef _SYS_FILES_H_
 +
 +#endif
 +
---- lighttpd-1.4.11/src/sys-mmap.h     2005-08-11 01:26:34.000000000 +0300
+--- ../lighttpd-1.4.11/src/sys-mmap.h  2005-08-11 01:26:34.000000000 +0300
 +++ lighttpd-1.4.12/src/sys-mmap.h     2006-07-11 22:07:52.000000000 +0300
 @@ -1,7 +1,7 @@
  #ifndef WIN32_MMAP_H
  
  #define MAP_FAILED -1
  #define PROT_SHARED 0
---- lighttpd-1.4.11/src/sys-process.h  1970-01-01 03:00:00.000000000 +0300
-+++ lighttpd-1.4.12/src/sys-process.h  2006-07-11 22:07:52.000000000 +0300
-@@ -0,0 +1,16 @@
+--- ../lighttpd-1.4.11/src/sys-process.h       1970-01-01 03:00:00.000000000 +0300
++++ lighttpd-1.4.12/src/sys-process.h  2006-07-15 22:43:21.000000000 +0300
+@@ -0,0 +1,17 @@
 +#ifndef _SYS_PROCESS_H_
 +#define _SYS_PROCESS_H_
 +
 +#define pid_t int
 +/* win32 has no fork() */
 +#define kill(x, y)
++#define getpid() 0
 +
 +#else
 +#include <sys/wait.h>
 +
 +#endif
 +
---- lighttpd-1.4.11/src/sys-socket.h   2005-08-11 01:26:39.000000000 +0300
-+++ lighttpd-1.4.12/src/sys-socket.h   2006-07-11 22:07:52.000000000 +0300
+--- ../lighttpd-1.4.11/src/sys-socket.h        2005-08-11 01:26:39.000000000 +0300
++++ lighttpd-1.4.12/src/sys-socket.h   2006-07-15 22:43:21.000000000 +0300
 @@ -1,15 +1,26 @@
  #ifndef WIN32_SOCKET_H
  #define WIN32_SOCKET_H
  #else
  #include <sys/socket.h>
  #include <sys/ioctl.h>
-@@ -18,6 +29,11 @@
+@@ -18,7 +29,23 @@
  #include <sys/un.h>
  #include <arpa/inet.h>
  
  #include <netdb.h>
  #endif
  
---- lighttpd-1.4.11/src/sys-strings.h  1970-01-01 03:00:00.000000000 +0300
++typedef union {
++#ifdef HAVE_IPV6
++      struct sockaddr_in6 ipv6;
++#endif
++      struct sockaddr_in ipv4;
++#ifdef HAVE_SYS_UN_H
++      struct sockaddr_un un;
++#endif
++      struct sockaddr plain;
++} sock_addr;
++
+ #endif
+--- ../lighttpd-1.4.11/src/sys-strings.h       1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/src/sys-strings.h  2006-07-11 22:07:51.000000000 +0300
 @@ -0,0 +1,11 @@
 +#ifndef _SYS_STRINGS_H_
 +
 +#endif
 +
---- lighttpd-1.4.11/tests/LightyTest.pm        2006-01-14 20:32:31.000000000 +0200
+--- ../lighttpd-1.4.11/tests/LightyTest.pm     2006-01-14 20:32:31.000000000 +0200
 +++ lighttpd-1.4.12/tests/LightyTest.pm        2006-07-11 22:07:53.000000000 +0300
 @@ -87,14 +87,14 @@
        # pre-process configfile if necessary
                # check length
                if (defined $resp_hdr{"content-length"}) {
                        $resp_body = substr($lines, 0, $resp_hdr{"content-length"});
---- lighttpd-1.4.11/tests/Makefile.am  2005-09-16 15:48:40.000000000 +0300
-+++ lighttpd-1.4.12/tests/Makefile.am  2006-07-11 22:07:53.000000000 +0300
-@@ -39,10 +39,15 @@
+--- ../lighttpd-1.4.11/tests/Makefile.am       2005-09-16 15:48:40.000000000 +0300
++++ lighttpd-1.4.12/tests/Makefile.am  2006-07-15 22:43:22.000000000 +0300
+@@ -39,10 +39,18 @@
        mod-redirect.t \
        mod-userdir.t \
        mod-rewrite.t \
 +      lowercase.t \
 +      lowercase.conf \
 +      proxy.conf \
-+      cachable.t
++      cachable.t \
++      default.conf \
++      proxy-backend-1.conf \
++      proxy-backend-2.conf 
  
  
  TESTS_ENVIRONMENT=$(srcdir)/wrapper.sh $(srcdir) $(top_builddir) 
---- lighttpd-1.4.11/tests/Makefile.in  2006-03-07 14:21:03.000000000 +0200
-+++ lighttpd-1.4.12/tests/Makefile.in  2006-07-11 21:48:14.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -13,8 +13,6 @@
- # PARTICULAR PURPOSE.
- @SET_MAKE@
--SOURCES = $(fcgi_auth_SOURCES) $(fcgi_responder_SOURCES)
--
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -46,7 +44,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- am__fcgi_auth_SOURCES_DIST = fcgi-auth.c
-@@ -67,8 +65,8 @@
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
--      $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+LINK = $(LIBTOOL) --tag=CC --mode=link "$(CCLD)" $(AM_CFLAGS) \
-+      $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- SOURCES = $(fcgi_auth_SOURCES) $(fcgi_responder_SOURCES)
- DIST_SOURCES = $(am__fcgi_auth_SOURCES_DIST) \
-       $(am__fcgi_responder_SOURCES_DIST)
-@@ -134,7 +132,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -177,6 +174,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-@@ -253,10 +251,15 @@
-       mod-redirect.t \
-       mod-userdir.t \
-       mod-rewrite.t \
-+      mod-proxy.t \
-       request.t \
-       mod-ssi.t \
-       LightyTest.pm \
--      mod-setenv.t 
-+      mod-setenv.t \
-+      lowercase.t \
-+      lowercase.conf \
-+      proxy.conf \
-+      cachable.t
- TESTS_ENVIRONMENT = $(srcdir)/wrapper.sh $(srcdir) $(top_builddir) 
- EXTRA_DIST = wrapper.sh lighttpd.conf \
---- lighttpd-1.4.11/tests/bug-06.conf  2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/bug-06.conf       2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/bug-06.conf  2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,5 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/bug-12.conf  2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/bug-12.conf       2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/bug-12.conf  2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,5 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/cachable.t   1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/tests/cachable.t        1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/tests/cachable.t   2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,112 @@
 +#!/usr/bin/env perl
 +
 +ok($tf->stop_proc == 0, "Stopping lighttpd");
 +
---- lighttpd-1.4.11/tests/condition.conf       2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/condition.conf    2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/condition.conf       2006-07-11 22:07:53.000000000 +0300
 @@ -2,15 +2,15 @@
  debug.log-request-handling = "enable"
    server.name = "test3.example.org"
    url.redirect = ("^" => "/match_4")
  
---- lighttpd-1.4.11/tests/core-keepalive.t     2005-11-17 15:54:19.000000000 +0200
+--- ../lighttpd-1.4.11/tests/core-keepalive.t  2005-11-17 15:54:19.000000000 +0200
 +++ lighttpd-1.4.12/tests/core-keepalive.t     2006-07-11 22:07:53.000000000 +0300
 @@ -40,7 +40,7 @@
  
  EOF
   );
  $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } , { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
---- lighttpd-1.4.11/tests/docroot/123/Makefile.in      2006-03-07 14:21:03.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/123/Makefile.in      2006-07-11 21:48:15.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -100,7 +100,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -143,6 +142,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/docroot/Makefile.in  2006-03-07 14:21:04.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/Makefile.in  2006-07-11 21:48:15.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -109,7 +109,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -152,6 +151,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/docroot/www/Makefile.in      2006-03-07 14:21:05.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/www/Makefile.in      2006-07-11 21:48:15.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -109,7 +109,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -152,6 +151,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/docroot/www/dummydir/.svn/entries    2006-03-09 19:21:49.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/www/dummydir/.svn/entries    2006-07-11 22:07:54.000000000 +0300
+--- ../lighttpd-1.4.11/tests/docroot/www/dummydir/.svn/entries 2006-03-09 19:21:49.000000000 +0200
++++ lighttpd-1.4.12/tests/docroot/www/dummydir/.svn/entries    2006-07-15 22:43:22.000000000 +0300
 @@ -9,5 +9,6 @@
     last-author="jan"
     kind="dir"
     uuid="152afb58-edef-0310-8abb-c4023f1b3aa9"
 -   revision="1040"/>
 +   repos="svn://svn.lighttpd.net/lighttpd"
-+   revision="1154"/>
++   revision="1173"/>
  </wc-entries>
---- lighttpd-1.4.11/tests/docroot/www/expire/Makefile.in       2006-03-07 14:21:05.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/www/expire/Makefile.in       2006-07-11 21:48:15.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -100,7 +100,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -143,6 +142,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/docroot/www/go/Makefile.in   2006-03-07 14:21:06.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/www/go/Makefile.in   2006-07-11 21:48:16.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -100,7 +100,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -143,6 +142,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/docroot/www/indexfile/Makefile.in    2006-03-07 14:21:07.000000000 +0200
-+++ lighttpd-1.4.12/tests/docroot/www/indexfile/Makefile.in    2006-07-11 21:48:16.000000000 +0300
-@@ -1,4 +1,4 @@
--# Makefile.in generated by automake 1.9.5 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-@@ -42,7 +42,7 @@
- am__aclocal_m4_deps = $(top_srcdir)/configure.in
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- SOURCES =
-@@ -100,7 +100,6 @@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
--LUACONFIG = @LUACONFIG@
- LUA_CFLAGS = @LUA_CFLAGS@
- LUA_LIBS = @LUA_LIBS@
- MAINT = @MAINT@
-@@ -143,6 +142,7 @@
- ac_ct_F77 = @ac_ct_F77@
- ac_ct_RANLIB = @ac_ct_RANLIB@
- ac_ct_STRIP = @ac_ct_STRIP@
-+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
- am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
---- lighttpd-1.4.11/tests/fastcgi-10.conf      2005-08-31 23:36:34.000000000 +0300
+--- ../lighttpd-1.4.11/tests/fastcgi-10.conf   2005-08-31 23:36:34.000000000 +0300
 +++ lighttpd-1.4.12/tests/fastcgi-10.conf      2006-07-11 22:07:53.000000000 +0300
 @@ -1,12 +1,12 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/fastcgi-13.conf      2006-01-03 12:38:17.000000000 +0200
+--- ../lighttpd-1.4.11/tests/fastcgi-13.conf   2006-01-03 12:38:17.000000000 +0200
 +++ lighttpd-1.4.12/tests/fastcgi-13.conf      2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,5 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/fastcgi-auth.conf    2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/fastcgi-auth.conf 2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/fastcgi-auth.conf    2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,5 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/fastcgi-responder.conf       2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/fastcgi-responder.conf    2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/fastcgi-responder.conf       2006-07-11 22:07:53.000000000 +0300
 @@ -1,5 +1,5 @@
 -server.document-root         = "@SRCDIR@/tmp/lighttpd/servers/www.example.org/pages/"
    server.name = "zzz.example.org"
  }
  
---- lighttpd-1.4.11/tests/fcgi-responder.c     2005-08-11 01:26:55.000000000 +0300
+--- ../lighttpd-1.4.11/tests/fcgi-responder.c  2005-08-11 01:26:55.000000000 +0300
 +++ lighttpd-1.4.12/tests/fcgi-responder.c     2006-07-11 22:07:53.000000000 +0300
 @@ -6,11 +6,17 @@
  int main () {
                        } else if (0 == strcmp(p, "die-at-end")) {
                                printf("Status: 200 OK\r\n\r\n");
                                num_requests--;
---- lighttpd-1.4.11/tests/lighttpd.conf        2006-03-09 15:26:58.000000000 +0200
+--- ../lighttpd-1.4.11/tests/lighttpd.conf     2006-03-09 15:26:58.000000000 +0200
 +++ lighttpd-1.4.12/tests/lighttpd.conf        2006-07-11 22:07:53.000000000 +0300
 @@ -1,80 +1,18 @@
 -debug.log-request-handling = "enable"
    simple-vhost.default-host   = "www.example.org"
  }
  
---- lighttpd-1.4.11/tests/lowercase.conf       1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/tests/lowercase.conf    1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/tests/lowercase.conf       2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,80 @@
 +server.document-root         = env.SRCDIR + "/tmp/lighttpd/servers/www.example.org/pages/"
 +$HTTP["host"] == "lowercase-exclude" {
 +  static-file.exclude-extensions = ( ".jpg" )
 +}
---- lighttpd-1.4.11/tests/lowercase.t  1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/tests/lowercase.t       1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/tests/lowercase.t  2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,94 @@
 +#!/usr/bin/env perl
 +
 +ok($tf->stop_proc == 0, "Stopping lighttpd");
 +
---- lighttpd-1.4.11/tests/mod-fastcgi.t        2006-03-09 15:30:45.000000000 +0200
+--- ../lighttpd-1.4.11/tests/mod-fastcgi.t     2006-03-09 15:30:45.000000000 +0200
 +++ lighttpd-1.4.12/tests/mod-fastcgi.t        2006-07-11 22:07:53.000000000 +0300
 @@ -7,7 +7,7 @@
  }
        $t->{REQUEST}  = ( <<EOF
  GET /index.fcgi?die-at-end HTTP/1.0
  Host: www.example.org
---- lighttpd-1.4.11/tests/mod-proxy.t  1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/tests/mod-proxy.t       1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/tests/mod-proxy.t  2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,173 @@
 +#!/usr/bin/env perl
 +
 +ok($tf_proxy->stop_proc == 0, "Stopping lighttpd proxy");
 +
---- lighttpd-1.4.11/tests/proxy.conf   1970-01-01 03:00:00.000000000 +0300
+--- ../lighttpd-1.4.11/tests/proxy.conf        1970-01-01 03:00:00.000000000 +0300
 +++ lighttpd-1.4.12/tests/proxy.conf   2006-07-11 22:07:53.000000000 +0300
 @@ -0,0 +1,26 @@
 +server.document-root         = env.SRCDIR + "/tmp/lighttpd/servers/www.example.org/pages/"
 +  proxy.balance = "fair"
 +}
 +
---- lighttpd-1.4.11/tests/var-include.conf     2005-08-27 17:44:19.000000000 +0300
+--- ../lighttpd-1.4.11/tests/var-include.conf  2005-08-27 17:44:19.000000000 +0300
 +++ lighttpd-1.4.12/tests/var-include.conf     2006-07-11 22:07:53.000000000 +0300
 @@ -2,15 +2,15 @@
  debug.log-request-handling = "enable"
This page took 1.499234 seconds and 4 git commands to generate.