CC: uhttpd: fix keep-alive bug (#20607, #20661)
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 7 Oct 2015 22:20:55 +0000 (22:20 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 7 Oct 2015 22:20:55 +0000 (22:20 +0000)
The two commits

  5162e3b0ee7bd1d0fd6e75e1ca7993a1834b5291
"allow request handlers to disable chunked reponses"

and

  618493e378e2239f0d30902e47adfa134e649fdc
"file: disable chunked encoding for file responses"

broke the chunked transfer encoding handling for proc responses in keep-alive
connections that followed a file response with http status 204 or 304.

The effect of this bug is that cgi responses following a 204 or 304 one where
sent neither in chunked encoding nor with a content-length header, causing
browsers to stall until the keep alive timeout was reached.

Fix the logic flaw by inverting the chunk prevention flag in the client state
and by testing the chunked encoding preconditions every time instead of
once upon client (re-)initialization.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Backport of r47161

SVN-Revision: 47162

package/network/services/uhttpd/Makefile
package/network/services/uhttpd/files/uhttpd.init

index 51f2bdc1ceaa975741ae4b5bb48428881c9f2453..a9a535aee8598416607b15dc95c421093c493bf1 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uhttpd
-PKG_VERSION:=2015-09-07
+PKG_VERSION:=2015-10-08
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://nbd.name/uhttpd2.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=993cace15114a0f06f720f34a4748ab54b695f0d
+PKG_SOURCE_VERSION:=7ed2edc40dd6d0171266f3bfbc96466e1d25e3cd
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
 PKG_LICENSE:=ISC
index 1ebe38e8d304e85885f3dc78c241c67206c803a9..a3e09c44e7ee3ad35a9462b070348e46e0ae3b43 100755 (executable)
@@ -131,11 +131,6 @@ start_instance()
        }
 
        procd_close_instance
-
-       # Check if daemon is running, if not then
-       # re-execute in foreground to display error.
-#      sleep 1 && service_check $UHTTPD_BIN || \
-#              $UHTTPD_BIN -f $UHTTPD_ARGS
 }
 
 service_triggers()