Browse Source

uhttpd: add explicit stdin eof notification for Lua and CGI childs

SVN-Revision: 32027
Jo-Philipp Wich 13 years ago
parent
commit
2cf72776d8
3 changed files with 10 additions and 2 deletions
  1. 1 1
      package/uhttpd/Makefile
  2. 4 0
      package/uhttpd/src/uhttpd-cgi.c
  3. 5 1
      package/uhttpd/src/uhttpd-lua.c

+ 1 - 1
package/uhttpd/Makefile

@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uhttpd
-PKG_RELEASE:=34
+PKG_RELEASE:=35
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 PKG_CONFIG_DEPENDS := \

+ 4 - 0
package/uhttpd/src/uhttpd-cgi.c

@@ -181,6 +181,10 @@ static bool uh_cgi_socket_cb(struct client *cl)
 		/* ... write to CGI process */
 		len = uh_raw_send(state->wfd, buf, len,
 						  cl->server->conf->script_timeout);
+
+		/* explicit EOF notification for the child */
+		if (state->content_length <= 0)
+			close(state->wfd);
 	}
 
 	/* try to read data from child */

+ 5 - 1
package/uhttpd/src/uhttpd-lua.c

@@ -298,9 +298,13 @@ static bool uh_lua_socket_cb(struct client *cl)
 		else
 			state->content_length = 0;
 
-		/* ... write to CGI process */
+		/* ... write to Lua process */
 		len = uh_raw_send(state->wfd, buf, len,
 						  cl->server->conf->script_timeout);
+
+		/* explicit EOF notification for the child */
+		if (state->content_length <= 0)
+			close(state->wfd);
 	}
 
 	/* try to read data from child */