Hello community,

here is the log from the commit of package lighttpd for openSUSE:Factory 
checked in at 2017-01-25 23:26:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lighttpd (Old)
 and      /work/SRC/openSUSE:Factory/.lighttpd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lighttpd"

Changes:
--------
--- /work/SRC/openSUSE:Factory/lighttpd/lighttpd.changes        2017-01-16 
11:15:47.637447693 +0100
+++ /work/SRC/openSUSE:Factory/.lighttpd.new/lighttpd.changes   2017-01-25 
23:26:26.430687117 +0100
@@ -1,0 +2,34 @@
+Mon Jan 16 14:34:52 UTC 2017 - [email protected]
+
+- make lighttpd user own /var/log/lighttpd/
+  to be able to write logs there
+
+-------------------------------------------------------------------
+Sat Jan 14 12:25:58 UTC 2017 - [email protected]
+
+- fix some rpmlint messages
+  + update FSF address for lighttpd.init
+  + install example scripts without +x to avoid pulling shell
+    dependencies
+  + W:file-contains-current-date /usr/sbin/lighttpd is a false positive;
+    it only happens when the last-source-modified date is the same as
+    the build date
+  + I: binary-or-shlib-calls-gethostbyname has been forwarded upstream
+
+-------------------------------------------------------------------
+Sat Jan 14 11:35:00 UTC 2017 - [email protected]
+
+- update to 1.4.45
+  + - next is 1.4.45
+  + [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+  + [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+  + [mod_fastcgi] detect child exit, restart proactively
+  + [mod_scgi] detect child exit, restart proactively
+  + [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+  + [doc] NEWS
+  + [tests] update test skip count for !fcgi-responder
+  + [tests] FCGI_Finish() final request before exit
+  + [tests] give time for periodic jobs to detect exit
+  + [mod_cgi] check cgi fd for num bytes ready to read
+
+-------------------------------------------------------------------

Old:
----
  lighttpd_1.4.44-0.1.debian.tar.xz
  lighttpd_1.4.44-0.1.dsc
  lighttpd_1.4.44.orig.tar.xz

New:
----
  lighttpd_1.4.45-0.1.debian.tar.xz
  lighttpd_1.4.45-0.1.dsc
  lighttpd_1.4.45.orig.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lighttpd.spec ++++++
--- /var/tmp/diff_new_pack.f2kb2S/_old  2017-01-25 23:26:27.266561101 +0100
+++ /var/tmp/diff_new_pack.f2kb2S/_new  2017-01-25 23:26:27.274559895 +0100
@@ -18,7 +18,7 @@
 
 %define pkg_home %{_localstatedir}/lib/%{name}
 Name:           lighttpd
-Version:        1.4.44
+Version:        1.4.45
 Release:        0
 #
 %define pkg_name %{name}
@@ -191,7 +191,7 @@
 litmus tests are passed.
 
 %package mod_authn_gssapi
-Summary:        A module to provide GSSAPI authentication in lighttpd
+Summary:        GSSAPI authentication in lighttpd
 Group:          Productivity/Networking/Web/Servers
 Requires:       %{name} = %{version}
 
@@ -199,7 +199,7 @@
 A module to provide GSSAPI authentication in lighttpd.
 
 %package mod_authn_ldap
-Summary:        A module to provide LDAP authentication in lighttpd
+Summary:        LDAP authentication in lighttpd
 Group:          Productivity/Networking/Web/Servers
 Requires:       %{name} = %{version}
 
@@ -207,7 +207,7 @@
 A module to provide LDAP authentication in lighttpd.
 
 %package mod_authn_mysql
-Summary:        A module to provide MySQL authentication in lighttpd
+Summary:        MySQL authentication in lighttpd
 Group:          Productivity/Networking/Web/Servers
 Requires:       %{name} = %{version}
 
@@ -299,6 +299,8 @@
 # remove the .la files. we dont need them.
 #
 find %{buildroot} -type f -name "*.la" -delete -print
+# remove executable bit from doc scripts to avoid pulling dependencies
+chmod -x doc/scripts/spawn-php.sh doc/scripts/rrdtool-graph.sh
 
 %pre
 %{_sbindir}/groupadd -r %{name} >/dev/null 2>&1 ||:
@@ -412,14 +414,14 @@
 %dir %attr(751,%{name},%{name}) %{pkg_home}/
 %dir %attr(751,%{name},%{name}) %{pkg_home}/sockets/
 %attr(751,%{name},%{name}) %{_var}/cache/%{name}/
-%dir %{_var}/log/%{name}/
+%dir %attr(750,%{name},%{name}) %{_var}/log/%{name}/
 
 %files mod_rrdtool
 %defattr(-,root,root,-)
 %config(noreplace) %attr(640,root,%{name}) 
%{_sysconfdir}/%{name}/conf.d/rrdtool.conf
+%{_libdir}/%{name}/mod_rrdtool.so
 %doc doc/outdated/rrdtool.txt
 %doc doc/scripts/rrdtool-graph.sh
-%{_libdir}/%{name}/mod_rrdtool.so
 
 %files mod_cml
 %defattr(-,root,root,-)

++++++ lighttpd.init ++++++
--- /var/tmp/diff_new_pack.f2kb2S/_old  2017-01-25 23:26:27.390542411 +0100
+++ /var/tmp/diff_new_pack.f2kb2S/_new  2017-01-25 23:26:27.390542411 +0100
@@ -9,19 +9,19 @@
 #   and its symbolic link
 # /(usr/)sbin/rclighttpd
 #
-#    This program is free software; you can redistribute it and/or modify 
-#    it under the terms of the GNU General Public License as published by 
-#    the Free Software Foundation; either version 2 of the License, or 
-#    (at your option) any later version. 
-# 
-#    This program is distributed in the hope that it will be useful, 
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
-#    GNU General Public License for more details. 
-# 
-#    You should have received a copy of the GNU General Public License 
-#    along with this program; if not, write to the Free Software 
-#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of the GNU General Public License
+#    as published by the Free Software Foundation; either version 2
+#    of the License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
02110-1301, USA.
 #
 # Template system startup script for some example service/daemon lighttpd
 #

++++++ lighttpd_1.4.44-0.1.debian.tar.xz -> lighttpd_1.4.45-0.1.debian.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/debian/changelog new/debian/changelog
--- old/debian/changelog        2016-12-24 10:04:42.000000000 +0100
+++ new/debian/changelog        2017-01-14 12:34:51.000000000 +0100
@@ -1,3 +1,21 @@
+lighttpd (1.4.45-0.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * new snapshot 1.4.45
+    + - next is 1.4.45
+    + [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+    + [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+    + [mod_fastcgi] detect child exit, restart proactively
+    + [mod_scgi] detect child exit, restart proactively
+    + [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+    + [doc] NEWS
+    + [tests] update test skip count for !fcgi-responder
+    + [tests] FCGI_Finish() final request before exit
+    + [tests] give time for periodic jobs to detect exit
+    + [mod_cgi] check cgi fd for num bytes ready to read
+
+ -- Jenkins (autobuilder) <[email protected]>  Sat, 14 Jan 2017 11:34:51 
+0000
+
 lighttpd (1.4.44-0.1) unstable; urgency=low
 
   * Non-maintainer upload.

++++++ lighttpd_1.4.44-0.1.dsc -> lighttpd_1.4.45-0.1.dsc ++++++
--- /work/SRC/openSUSE:Factory/lighttpd/lighttpd_1.4.44-0.1.dsc 2017-01-16 
11:15:47.721435785 +0100
+++ /work/SRC/openSUSE:Factory/.lighttpd.new/lighttpd_1.4.45-0.1.dsc    
2017-01-25 23:26:26.506675661 +0100
@@ -5,7 +5,7 @@
 Source: lighttpd
 Binary: lighttpd, lighttpd-doc, lighttpd-mod-mysql-vhost, 
lighttpd-mod-trigger-b4-dl, lighttpd-mod-cml, lighttpd-mod-magnet, 
lighttpd-mod-webdav, lighttpd-mod-authn-gssapi, lighttpd-mod-authn-ldap, 
lighttpd-mod-authn-mysql, lighttpd-mod-geoip
 Architecture: any all
-Version: 1.4.44-0.1
+Version: 1.4.45-0.1
 Maintainer: Debian lighttpd maintainers 
<[email protected]>
 Uploaders: Krzysztof Krzyżaniak (eloy) <[email protected]>, Olaf van der Spek 
<[email protected]>, Arno Töll <[email protected]>, Michael Gilbert 
<[email protected]>
 Homepage: http://lighttpd.net/
@@ -26,23 +26,23 @@
  lighttpd-mod-trigger-b4-dl deb httpd optional arch=any
  lighttpd-mod-webdav deb httpd optional arch=any
 Checksums-Sha1:
- 3597b9c71aabada26129e3ebc0838cb10317d72c 660304 lighttpd_1.4.44.orig.tar.xz
- 2cf54510a2ccdef90a90cf86d4f02f4a0f2b60fa 56364 
lighttpd_1.4.44-0.1.debian.tar.xz
+ 03e516f8be59396bc148218fe7b993219dacaf5d 660432 lighttpd_1.4.45.orig.tar.xz
+ f9f181fa784b49c18f30ce3ab4a9514a9bccbeb2 56560 
lighttpd_1.4.45-0.1.debian.tar.xz
 Checksums-Sha256:
- adb66ca985651957feb209c91c55ebbf917d23630bfc3a216a2f70043c7b5422 660304 
lighttpd_1.4.44.orig.tar.xz
- d359ec0efcb7666aa58ee9087153a0150f4d4bf43389245b998b32288252fdfb 56364 
lighttpd_1.4.44-0.1.debian.tar.xz
+ 1c97225deea33eefba6d4158c2cef27913d47553263516bbe9d2e2760fc43a3f 660432 
lighttpd_1.4.45.orig.tar.xz
+ 211ae709717e610caa7876bb5f46bd5e6f51203baa9c6461dbc5ab60d6a4686d 56560 
lighttpd_1.4.45-0.1.debian.tar.xz
 Files:
- eb9355543ce0248397acc3245005b110 660304 lighttpd_1.4.44.orig.tar.xz
- aa814c84306516c352db05e639a5a1e6 56364 lighttpd_1.4.44-0.1.debian.tar.xz
+ a128e1eda76899ce3fd115efae5fe631 660432 lighttpd_1.4.45.orig.tar.xz
+ 3cd4f8a75e2646bfcc17d72270ebccb5 56560 lighttpd_1.4.45-0.1.debian.tar.xz
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQEcBAEBCAAGBQJYXjotAAoJEE3M2orHRjXrJSIIAKx2ZO6s+b58cD5jvcz+0pH7
-D/9sm5c2TeMlooSrqY6gQEYkjoKDOOL33Ke7iCX/GRs6THUTPYZoSEjZMNZfJ/CT
-oK6XAWvYqeUEWkvnVLktFGc5POIxzlvg6xvTs15dhO4gsLttDOlneuzVJH4ooKVz
-n4+A+U2v13dsZGDcr2UfZSRTD2oTVWrsyiI4Smu5kbXeO+WbnT5u+iyAdHt9bb7U
-+wA2aNUfcTmyfyV9p1XSNWAfGCN0Hh2t+eI3idhlPXaD+plhEChRzt4UVqDCClP6
-t5ahicohtJUTB3Cou6uMzzLKk1zEaj4WbvOBJZVGeZ434FpWtIFNAC+SDKmDa2I=
-=oRnr
+iQEcBAEBCAAGBQJYegzeAAoJEE3M2orHRjXriBEH/1NkSh1rQhWFqYFRNLv2M60G
+l4vhyfeUs+GCmCyI/XatTBEEYm2PvzeTAumd7bByTu3MK6+uZiODrOkKCFdai/j0
+lfo83nzLR1lkQxLdZ1Eq7YdcpmmhxIFoUSJjNrDA3ksoF2U/rafCo6P3LXWTHBV4
+sGlIy04VcfTTNmXH04lENparRCjiNHrmKqVQTFJZyK00EmN8bUJ1GWvpUogi2Kwg
+PL6E8owlhE8K4MBorATlwpE6raVTUWQGfUkF04+7VKC/YmYlTeAlb4XIdn52VGru
+4VO2SBCzDdMsa54e/V7hklFRYzUIPiPcIOctjI1Acj9yiAXkafdB8IWhYoVKUq8=
+=S/HP
 -----END PGP SIGNATURE-----

++++++ lighttpd_1.4.44.orig.tar.xz -> lighttpd_1.4.45.orig.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/CMakeLists.txt 
new/lighttpd-1.4.45/CMakeLists.txt
--- old/lighttpd-1.4.44/CMakeLists.txt  2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/CMakeLists.txt  2017-01-14 06:05:16.000000000 +0100
@@ -10,7 +10,7 @@
 
 set(CPACK_PACKAGE_VERSION_MAJOR 1)
 set(CPACK_PACKAGE_VERSION_MINOR 4)
-set(CPACK_PACKAGE_VERSION_PATCH 44)
+set(CPACK_PACKAGE_VERSION_PATCH 45)
 set(CPACK_PACKAGE_VERSION 
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
 
 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/NEWS new/lighttpd-1.4.45/NEWS
--- old/lighttpd-1.4.44/NEWS    2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/NEWS    2017-01-14 06:05:16.000000000 +0100
@@ -3,7 +3,14 @@
 NEWS
 ====
 
-- 1.4.44
+- 1.4.45
+  * [mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
+  * [mod_webdav] fix crash when plugin_ctx cleaned up (fixes #2780)
+  * [mod_fastcgi] detect child exit, restart proactively
+  * [mod_scgi] detect child exit, restart proactively
+  * [TLS] ssl.read-ahead = "disable" for low mem (fixes #2778)
+
+- 1.4.44 - 2016-12-24
   * [mod_scgi] fix segfault (fixes #2762)
   * [mod_authn_gssapi] fix memory leak
   * [config] warn if mod_authn_ldap,mysql not listed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/SConstruct 
new/lighttpd-1.4.45/SConstruct
--- old/lighttpd-1.4.44/SConstruct      2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/SConstruct      2017-01-14 06:05:16.000000000 +0100
@@ -5,7 +5,7 @@
 from stat import *
 
 package = 'lighttpd'
-version = '1.4.44'
+version = '1.4.45'
 
 def checkCHeaders(autoconf, hdrs):
        p = re.compile('[^A-Z0-9]')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/configure 
new/lighttpd-1.4.45/configure
--- old/lighttpd-1.4.44/configure       2016-12-24 06:27:06.000000000 +0100
+++ new/lighttpd-1.4.45/configure       2017-01-14 06:05:57.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for lighttpd 1.4.44.
+# Generated by GNU Autoconf 2.69 for lighttpd 1.4.45.
 #
 # Report bugs to <[email protected]>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='lighttpd'
 PACKAGE_TARNAME='lighttpd'
-PACKAGE_VERSION='1.4.44'
-PACKAGE_STRING='lighttpd 1.4.44'
+PACKAGE_VERSION='1.4.45'
+PACKAGE_STRING='lighttpd 1.4.45'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1421,7 +1421,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures lighttpd 1.4.44 to adapt to many kinds of systems.
+\`configure' configures lighttpd 1.4.45 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1491,7 +1491,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of lighttpd 1.4.44:";;
+     short | recursive ) echo "Configuration of lighttpd 1.4.45:";;
    esac
   cat <<\_ACEOF
 
@@ -1657,7 +1657,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-lighttpd configure 1.4.44
+lighttpd configure 1.4.45
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2320,7 +2320,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by lighttpd $as_me 1.4.44, which was
+It was created by lighttpd $as_me 1.4.45, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3262,7 +3262,7 @@
 
 # Define the identity of the package.
  PACKAGE='lighttpd'
- VERSION='1.4.44'
+ VERSION='1.4.45'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -18908,7 +18908,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by lighttpd $as_me 1.4.44, which was
+This file was extended by lighttpd $as_me 1.4.45, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18974,7 +18974,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-lighttpd config.status 1.4.44
+lighttpd config.status 1.4.45
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/configure.ac 
new/lighttpd-1.4.45/configure.ac
--- old/lighttpd-1.4.44/configure.ac    2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/configure.ac    2017-01-14 06:05:16.000000000 +0100
@@ -1,7 +1,7 @@
 dnl                                               -*- Autoconf -*-
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.57)
-AC_INIT([lighttpd], [1.4.44], [[email protected]])
+AC_INIT([lighttpd], [1.4.45], [[email protected]])
 AC_CONFIG_SRCDIR([src/server.c])
 AC_CONFIG_HEADER([config.h])
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/base.h 
new/lighttpd-1.4.45/src/base.h
--- old/lighttpd-1.4.44/src/base.h      2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/base.h      2017-01-14 06:05:17.000000000 +0100
@@ -295,6 +295,7 @@
        buffer *ssl_verifyclient_username;
        unsigned short ssl_verifyclient_export_cert;
        unsigned short ssl_disable_client_renegotiation;
+       unsigned short ssl_read_ahead;
 
        unsigned short use_ipv6, set_v6only; /* set_v6only is only a temporary 
option */
        unsigned short defer_accept;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/configfile.c 
new/lighttpd-1.4.45/src/configfile.c
--- old/lighttpd-1.4.44/src/configfile.c        2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/src/configfile.c        2017-01-14 06:05:17.000000000 
+0100
@@ -144,6 +144,7 @@
                { "server.stream-request-body",        NULL, T_CONFIG_SHORT,   
T_CONFIG_SCOPE_CONNECTION }, /* 76 */
                { "server.stream-response-body",       NULL, T_CONFIG_SHORT,   
T_CONFIG_SCOPE_CONNECTION }, /* 77 */
                { "server.max-request-field-size",     NULL, T_CONFIG_INT,     
T_CONFIG_SCOPE_SERVER     }, /* 78 */
+               { "ssl.read-ahead",                    NULL, T_CONFIG_BOOLEAN, 
T_CONFIG_SCOPE_CONNECTION }, /* 79 */
 
                { NULL,                                NULL, T_CONFIG_UNSET,   
T_CONFIG_SCOPE_UNSET      }
        };
@@ -247,6 +248,7 @@
                s->ssl_verifyclient_depth = 9;
                s->ssl_verifyclient_export_cert = 0;
                s->ssl_disable_client_renegotiation = 1;
+               s->ssl_read_ahead = (0 == i ? 1 : 
srv->config_storage[0]->ssl_read_ahead);
                s->listen_backlog = (0 == i ? 1024 : 
srv->config_storage[0]->listen_backlog);
                s->stream_request_body = 0;
                s->stream_response_body = 0;
@@ -315,6 +317,7 @@
              #endif
                cv[76].destination = &(s->stream_request_body);
                cv[77].destination = &(s->stream_response_body);
+               cv[79].destination = &(s->ssl_read_ahead);
 
                srv->config_storage[i] = s;
 
@@ -543,6 +546,7 @@
        PATCH(ssl_verifyclient_username);
        PATCH(ssl_verifyclient_export_cert);
        PATCH(ssl_disable_client_renegotiation);
+       PATCH(ssl_read_ahead);
 
        return 0;
 }
@@ -671,6 +675,8 @@
                                PATCH(ssl_verifyclient_export_cert);
                        } else if (buffer_is_equal_string(du->key, 
CONST_STR_LEN("ssl.disable-client-renegotiation"))) {
                                PATCH(ssl_disable_client_renegotiation);
+                       } else if (buffer_is_equal_string(du->key, 
CONST_STR_LEN("ssl.read-ahead"))) {
+                               PATCH(ssl_read_ahead);
                        }
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/connections-glue.c 
new/lighttpd-1.4.45/src/connections-glue.c
--- old/lighttpd-1.4.44/src/connections-glue.c  2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/src/connections-glue.c  2017-01-14 06:05:17.000000000 
+0100
@@ -127,7 +127,7 @@
                        connection_set_state(srv, con, CON_STATE_ERROR);
                        return -1;
                }
-       } while (len > 0);
+       } while (len > 0 && (con->conf.ssl_read_ahead || SSL_pending(con->ssl) 
> 0));
 
        if (len < 0) {
                int oerrno = errno;
@@ -206,11 +206,13 @@
                connection_set_state(srv, con, CON_STATE_ERROR);
 
                return -1;
-       } else { /*(len == 0)*/
+       } else if (len == 0) {
                con->is_readable = 0;
                /* the other end close the connection -> KEEP-ALIVE */
 
                return -2;
+       } else {
+               return 0;
        }
 #else
        UNUSED(srv);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_cgi.c 
new/lighttpd-1.4.45/src/mod_cgi.c
--- old/lighttpd-1.4.44/src/mod_cgi.c   2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_cgi.c   2017-01-14 06:05:17.000000000 +0100
@@ -398,7 +398,7 @@
 #if defined(__WIN32)
                buffer_string_prepare_copy(hctx->response, 4 * 1024);
 #else
-               if (ioctl(con->fd, FIONREAD, &toread) || toread <= 4*1024) {
+               if (ioctl(hctx->fd, FIONREAD, &toread) || toread <= 4*1024) {
                        buffer_string_prepare_copy(hctx->response, 4 * 1024);
                } else {
                        if (toread > MAX_READ_LIMIT) toread = MAX_READ_LIMIT;
@@ -529,9 +529,13 @@
 
                                        if (con->http_status >= 300 && 
con->http_status < 400) {
                                                /*(con->parsed_response & 
HTTP_LOCATION)*/
+                                               size_t ulen = 
buffer_string_length(con->uri.path);
                                                data_string *ds;
                                                if (NULL != (ds = (data_string 
*) array_get_element(con->response.headers, "Location"))
-                                                   && ds->value->ptr[0] == 
'/') {
+                                                   && ds->value->ptr[0] == '/'
+                                                   && (0 != 
strncmp(ds->value->ptr, con->uri.path->ptr, ulen)
+                                                       || 
(ds->value->ptr[ulen] != '\0' && ds->value->ptr[ulen] != '/' && 
ds->value->ptr[ulen] != '?'))
+                                                   && NULL == 
array_get_element(con->response.headers, "Set-Cookie")) {
                                                        if 
(++con->loops_per_request > 5) {
                                                                
log_error_write(srv, __FILE__, __LINE__, "sb", "too many internal loops while 
processing request:", con->request.orig_uri);
                                                                
con->http_status = 500; /* Internal Server Error */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_fastcgi.c 
new/lighttpd-1.4.45/src/mod_fastcgi.c
--- old/lighttpd-1.4.44/src/mod_fastcgi.c       2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/src/mod_fastcgi.c       2017-01-14 06:05:17.000000000 
+0100
@@ -3550,6 +3550,49 @@
 
                                host = ex->hosts[n];
 
+                               for (proc = host->first; proc; proc = 
proc->next) {
+                                       int status;
+
+                                       if (proc->pid == 0) continue;
+
+                                       switch (waitpid(proc->pid, &status, 
WNOHANG)) {
+                                       case 0:
+                                               /* child still running after 
timeout, good */
+                                               break;
+                                       case -1:
+                                               if (errno != EINTR) {
+                                                       /* no PID found ? 
should never happen */
+                                                       log_error_write(srv, 
__FILE__, __LINE__, "sddss",
+                                                                       "pid ", 
proc->pid, proc->state,
+                                                                       "not 
found:", strerror(errno));
+                                               }
+                                               break;
+                                       default:
+                                               /* the child should not 
terminate at all */
+                                               if (WIFEXITED(status)) {
+                                                       if (proc->state != 
PROC_STATE_KILLED) {
+                                                               
log_error_write(srv, __FILE__, __LINE__, "sdb",
+                                                                               
"child exited:",
+                                                                               
WEXITSTATUS(status), proc->connection_name);
+                                                       }
+                                               } else if (WIFSIGNALED(status)) 
{
+                                                       if (WTERMSIG(status) != 
SIGTERM) {
+                                                               
log_error_write(srv, __FILE__, __LINE__, "sd",
+                                                                               
"child signaled:",
+                                                                               
WTERMSIG(status));
+                                                       }
+                                               } else {
+                                                       log_error_write(srv, 
__FILE__, __LINE__, "sd",
+                                                                       "child 
died somehow:",
+                                                                       status);
+                                               }
+                                               proc->pid = 0;
+                                               if (proc->state == 
PROC_STATE_RUNNING) host->active_procs--;
+                                               proc->state = PROC_STATE_DIED;
+                                               host->max_id--;
+                                       }
+                               }
+
                                fcgi_restart_dead_procs(srv, p, host);
 
                                for (proc = host->unused_procs; proc; proc = 
proc->next) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_scgi.c 
new/lighttpd-1.4.45/src/mod_scgi.c
--- old/lighttpd-1.4.44/src/mod_scgi.c  2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/mod_scgi.c  2017-01-14 06:05:17.000000000 +0100
@@ -2886,6 +2886,49 @@
 
                                host = ex->hosts[n];
 
+                               for (proc = host->first; proc; proc = 
proc->next) {
+                                       int status;
+
+                                       if (proc->pid == 0) continue;
+
+                                       switch (waitpid(proc->pid, &status, 
WNOHANG)) {
+                                       case 0:
+                                               /* child still running after 
timeout, good */
+                                               break;
+                                       case -1:
+                                               if (errno != EINTR) {
+                                                       /* no PID found ? 
should never happen */
+                                                       log_error_write(srv, 
__FILE__, __LINE__, "sddss",
+                                                                       "pid ", 
proc->pid, proc->state,
+                                                                       "not 
found:", strerror(errno));
+                                               }
+                                               break;
+                                       default:
+                                               /* the child should not 
terminate at all */
+                                               if (WIFEXITED(status)) {
+                                                       if (proc->state != 
PROC_STATE_KILLED) {
+                                                               
log_error_write(srv, __FILE__, __LINE__, "sdb",
+                                                                               
"child exited:",
+                                                                               
WEXITSTATUS(status), proc->socket);
+                                                       }
+                                               } else if (WIFSIGNALED(status)) 
{
+                                                       if (WTERMSIG(status) != 
SIGTERM) {
+                                                               
log_error_write(srv, __FILE__, __LINE__, "sd",
+                                                                               
"child signaled:",
+                                                                               
WTERMSIG(status));
+                                                       }
+                                               } else {
+                                                       log_error_write(srv, 
__FILE__, __LINE__, "sd",
+                                                                       "child 
died somehow:",
+                                                                       status);
+                                               }
+                                               proc->pid = 0;
+                                               if (proc->state == 
PROC_STATE_RUNNING) host->active_procs--;
+                                               proc->state = PROC_STATE_DIED;
+                                               host->max_id--;
+                                       }
+                               }
+
                                scgi_restart_dead_procs(srv, p, host);
 
                                for (proc = host->first; proc; proc = 
proc->next) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/mod_webdav.c 
new/lighttpd-1.4.45/src/mod_webdav.c
--- old/lighttpd-1.4.44/src/mod_webdav.c        2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/src/mod_webdav.c        2017-01-14 06:05:17.000000000 
+0100
@@ -2758,7 +2758,10 @@
 static handler_t mod_webdav_connection_reset(server *srv, connection *con, 
void *p_d) {
        plugin_data *p = p_d;
        handler_ctx *hctx = con->plugin_ctx[p->id];
-       if (hctx) free(hctx);
+       if (hctx) {
+               free(hctx);
+               con->plugin_ctx[p->id] = NULL;
+       }
 
        UNUSED(srv);
        return HANDLER_GO_ON;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/src/network.c 
new/lighttpd-1.4.45/src/network.c
--- old/lighttpd-1.4.44/src/network.c   2016-12-24 06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/src/network.c   2017-01-14 06:05:17.000000000 +0100
@@ -994,7 +994,7 @@
                                        s->ssl_pemfile);
                        return -1;
                }
-               SSL_CTX_set_default_read_ahead(s->ssl_ctx, 1);
+               SSL_CTX_set_default_read_ahead(s->ssl_ctx, s->ssl_read_ahead);
                SSL_CTX_set_mode(s->ssl_ctx,  SSL_CTX_get_mode(s->ssl_ctx)
                                            | SSL_MODE_ENABLE_PARTIAL_WRITE
                                            | 
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/tests/docroot/www/cgi.pl 
new/lighttpd-1.4.45/tests/docroot/www/cgi.pl
--- old/lighttpd-1.4.44/tests/docroot/www/cgi.pl        2016-12-24 
06:26:55.000000000 +0100
+++ new/lighttpd-1.4.45/tests/docroot/www/cgi.pl        2017-01-14 
06:05:17.000000000 +0100
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 
 if ($ENV{"QUERY_STRING"} eq "internal-redir") {
-    print "Location: /cgi.pl\r\n\r\n";
+    print "Location: /cgi-pathinfo.pl/foo\r\n\r\n";
     exit 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/tests/fcgi-responder.c 
new/lighttpd-1.4.45/tests/fcgi-responder.c
--- old/lighttpd-1.4.44/tests/fcgi-responder.c  2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/tests/fcgi-responder.c  2017-01-14 06:05:17.000000000 
+0100
@@ -11,7 +11,7 @@
 #include <string.h>
 
 int main (void) {
-       int num_requests = 2;
+       int num_requests = 1;
 
        while (num_requests > 0 &&
               FCGI_Accept() >= 0) {
@@ -50,6 +50,8 @@
                } else {
                        printf("test123");
                }
+
+               if (0 == num_requests) FCGI_Finish();
        }
 
        return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lighttpd-1.4.44/tests/mod-fastcgi.t 
new/lighttpd-1.4.45/tests/mod-fastcgi.t
--- old/lighttpd-1.4.44/tests/mod-fastcgi.t     2016-12-24 06:26:55.000000000 
+0100
+++ new/lighttpd-1.4.45/tests/mod-fastcgi.t     2017-01-14 06:05:17.000000000 
+0100
@@ -7,7 +7,7 @@
 }
 
 use strict;
-use Test::More tests => 60;
+use Test::More tests => 59;
 use LightyTest;
 
 my $tf = LightyTest->new();
@@ -348,7 +348,7 @@
 
 
 SKIP: {
-       skip "no fcgi-responder found", 11 unless -x 
$tf->{BASEDIR}."/tests/fcgi-responder" || -x 
$tf->{BASEDIR}."/tests/fcgi-responder.exe";
+       skip "no fcgi-responder found", 10 unless -x 
$tf->{BASEDIR}."/tests/fcgi-responder" || -x 
$tf->{BASEDIR}."/tests/fcgi-responder.exe";
        
        $tf->{CONFIGFILE} = 'fastcgi-responder.conf';
        ok($tf->start_proc == 0, "Starting lighttpd with $tf->{CONFIGFILE}") or 
die();
@@ -409,17 +409,9 @@
        $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 
200, 'HTTP-Content' => 'test123' } ];
        ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
 
-       select(undef, undef, undef, .2);
-       $t->{REQUEST}  = ( <<EOF
-GET /index.fcgi?die-at-end HTTP/1.0
-Host: www.example.org
-EOF
- );
-       $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 
200, 'HTTP-Content' => 'test123' } ];
-       ok($tf->handle_http($t) == 0, 'killing fastcgi and wait for restart');
-
-
-       select(undef, undef, undef, .2);
+       # (might take lighttpd 1 sec to detect backend exit)
+       select(undef, undef, undef, .9);
+       select(undef, undef, undef, .1) while (!$tf->listening_on(10000));
        $t->{REQUEST}  = ( <<EOF
 GET /index.fcgi?crlf HTTP/1.0
 Host: www.example.org


Reply via email to