From 259e420032565609e8a0cd43003242a3a4931481 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 29 Jan 2009 16:07:29 +0000 Subject: [PATCH] [package] add directory option to spawn-fcgi (#4355), thanks Raphael git-svn-id: svn://svn.openwrt.org/openwrt/packages@14266 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- net/lighttpd/Makefile | 2 +- .../100-spawn-fcgi_new_opt_directory.patch | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 net/lighttpd/patches/100-spawn-fcgi_new_opt_directory.patch diff --git a/net/lighttpd/Makefile b/net/lighttpd/Makefile index 1508dbd9a..555a50cca 100644 --- a/net/lighttpd/Makefile +++ b/net/lighttpd/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=lighttpd PKG_VERSION:=1.4.20 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://www.lighttpd.net/download/ diff --git a/net/lighttpd/patches/100-spawn-fcgi_new_opt_directory.patch b/net/lighttpd/patches/100-spawn-fcgi_new_opt_directory.patch new file mode 100644 index 000000000..2fd9be8bc --- /dev/null +++ b/net/lighttpd/patches/100-spawn-fcgi_new_opt_directory.patch @@ -0,0 +1,63 @@ +--- lighttpd-1.4.20.orig/src/spawn-fcgi.c 2008-09-30 10:53:27.000000000 +0200 ++++ lighttpd-1.4.20/src/spawn-fcgi.c 2008-09-30 10:53:41.000000000 +0200 +@@ -37,7 +37,7 @@ typedef int socklen_t; + #endif + + #ifdef HAVE_SYS_UN_H +-int fcgi_spawn_connection(char *appPath, char **appArgv, char *addr, unsigned short port, const char *unixsocket, int fork_count, int child_count, int pid_fd, int nofork) { ++int fcgi_spawn_connection(char *appPath, const char *fcgi_dir, char **appArgv, char *addr, unsigned short port, const char *unixsocket, int fork_count, int child_count, int pid_fd, int nofork) { + int fcgi_fd; + int socket_type, status, rc = 0; + struct timeval tv = { 0, 100 * 1000 }; +@@ -184,6 +184,13 @@ int fcgi_spawn_connection(char *appPath, + strcat(b, appPath); + + /* exec the cgi */ ++ if(fcgi_dir) ++ { ++ if(chdir(fcgi_dir) != 0) ++ { ++ exit(errno); ++ } ++ } + execl("/bin/sh", "sh", "-c", b, (char *)NULL); + } + +@@ -273,6 +280,7 @@ void show_help () { + "\n" \ + "Options:\n" \ + " -f filename of the fcgi-application\n" \ ++" -d chdir to directory before spawning\n" \ + " -a bind to ip address\n" \ + " -p bind to tcp-port\n" \ + " -s bind to unix-domain socket\n" \ +@@ -292,7 +300,7 @@ void show_help () { + + + int main(int argc, char **argv) { +- char *fcgi_app = NULL, *changeroot = NULL, *username = NULL, ++ char *fcgi_app = NULL, *fcgi_dir = NULL, *changeroot = NULL, *username = NULL, + *groupname = NULL, *unixsocket = NULL, *pid_file = NULL, + *addr = NULL; + char **fcgi_app_argv = { NULL }; +@@ -306,9 +314,10 @@ int main(int argc, char **argv) { + + i_am_root = (getuid() == 0); + +- while (-1 != (o = getopt(argc, argv, "c:f:g:hna:p:u:vC:F:s:P:"))) { ++ while(-1 != (o = getopt(argc, argv, "c:f:d:g:hna:p:u:vC:s:P:"))) { + switch(o) { + case 'f': fcgi_app = optarg; break; ++ case 'd': fcgi_dir = optarg; break; + case 'a': addr = optarg;/* ip addr */ break; + case 'p': port = strtol(optarg, NULL, 10);/* port */ break; + case 'C': child_count = strtol(optarg, NULL, 10);/* */ break; +@@ -471,7 +480,7 @@ int main(int argc, char **argv) { + } + } + +- return fcgi_spawn_connection(fcgi_app, fcgi_app_argv, addr, port, unixsocket, fork_count, child_count, pid_fd, nofork); ++ return fcgi_spawn_connection(fcgi_app, fcgi_dir, fcgi_app_argv, addr, port, unixsocket, fork_count, child_count, pid_fd, nofork); + } + #else + int main() {