summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2007-01-09 20:56:24 +0000
committerRobin H. Johnson <robbat2@gentoo.org>2007-01-09 20:56:24 +0000
commitb811ae7f9426b8c884be76c418a07296702ad412 (patch)
treeac7fac9ad95f533ddab26885a8866e7f49e6d78c /www-servers
parentAdd proper autotoold dependency for bug #158535. (diff)
downloadhistorical-b811ae7f9426b8c884be76c418a07296702ad412.tar.gz
historical-b811ae7f9426b8c884be76c418a07296702ad412.tar.bz2
historical-b811ae7f9426b8c884be76c418a07296702ad412.zip
The patches were not applied like there were supposed to be! Also improve initd to avoid the extra exec.
Package-Manager: portage-2.1.2_rc4-r6
Diffstat (limited to 'www-servers')
-rw-r--r--www-servers/lighttpd/ChangeLog14
-rw-r--r--www-servers/lighttpd/files/1.4.13/01_all_lighttpd-1.4.13-99cpu-fix.diff11
-rw-r--r--www-servers/lighttpd/files/1.4.13/02_all_lighttpd-1.4.13-fcgi-auth-type.diff41
-rw-r--r--www-servers/lighttpd/files/1.4.13/03_all_lighttpd-1.4.11-errorlog-pipe.diff179
-rw-r--r--www-servers/lighttpd/files/lighttpd.initd-1.4.13-r16
-rw-r--r--www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild4
6 files changed, 249 insertions, 6 deletions
diff --git a/www-servers/lighttpd/ChangeLog b/www-servers/lighttpd/ChangeLog
index 8ff57a6fef23..c75831a504cb 100644
--- a/www-servers/lighttpd/ChangeLog
+++ b/www-servers/lighttpd/ChangeLog
@@ -1,6 +1,18 @@
# ChangeLog for www-servers/lighttpd
# Copyright 2000-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/ChangeLog,v 1.94 2007/01/09 18:20:10 robbat2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/ChangeLog,v 1.95 2007/01/09 20:56:24 robbat2 Exp $
+
+ 09 Jan 2007; Robin H. Johnson <robbat2@gentoo.org>
+ +files/1.4.13/03_all_lighttpd-1.4.11-errorlog-pipe.diff,
+ files/lighttpd.initd-1.4.13-r1,
+ +files/1.4.13/01_all_lighttpd-1.4.13-99cpu-fix.diff,
+ -files/1.4.13/01_lighttpd-1.4.13-99cpu-fix.diff,
+ -files/1.4.13/03_lighttpd-1.4.13-errorlog-pipe.diff,
+ +files/1.4.13/02_all_lighttpd-1.4.13-fcgi-auth-type.diff,
+ -files/1.4.13/02_lighttpd-1.4.13-fcgi-auth-type.diff,
+ lighttpd-1.4.13-r1.ebuild:
+ The patches were not applied like there were supposed to be! Also improve
+ initd to avoid the extra exec.
*lighttpd-1.4.13-r1 (09 Jan 2007)
diff --git a/www-servers/lighttpd/files/1.4.13/01_all_lighttpd-1.4.13-99cpu-fix.diff b/www-servers/lighttpd/files/1.4.13/01_all_lighttpd-1.4.13-99cpu-fix.diff
new file mode 100644
index 000000000000..4b7c4494f87f
--- /dev/null
+++ b/www-servers/lighttpd/files/1.4.13/01_all_lighttpd-1.4.13-99cpu-fix.diff
@@ -0,0 +1,11 @@
+--- lighttpd-1.4.13/src/connections.c.orig 2007-01-05 10:56:08.000000000 -0800
++++ lighttpd-1.4.13/src/connections.c 2007-01-05 10:56:23.000000000 -0800
+@@ -970,7 +970,7 @@
+ }
+ } else {
+ /* a splited \r \n */
+- return -1;
++ break;
+ }
+ }
+ }
diff --git a/www-servers/lighttpd/files/1.4.13/02_all_lighttpd-1.4.13-fcgi-auth-type.diff b/www-servers/lighttpd/files/1.4.13/02_all_lighttpd-1.4.13-fcgi-auth-type.diff
new file mode 100644
index 000000000000..aa051c7e1b36
--- /dev/null
+++ b/www-servers/lighttpd/files/1.4.13/02_all_lighttpd-1.4.13-fcgi-auth-type.diff
@@ -0,0 +1,41 @@
+--- lighttpd-1.4.13/src/mod_fastcgi.c 2006-10-05 03:22:32.000000000 -0700
++++ lighttpd-1.4.13.patch/src/mod_fastcgi.c 2006-10-18 00:57:19.000000000 -0700
+@@ -1875,8 +1875,36 @@
+ fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_ADDR"), s, strlen(s));
+
+ if (!buffer_is_empty(con->authed_user)) {
+- fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_USER"),
+- CONST_BUF_LEN(con->authed_user));
++ fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_USER"), CONST_BUF_LEN(con->authed_user));
++
++ /* AUTH_TYPE fix by Troy Kruthoff (tkruthoff@gmail.com)
++ * section 4.1.1 of RFC 3875 (cgi spec) requires the server to set a AUTH_TYPE env
++ * declaring the type of authentication used. (see http://tools.ietf.org/html/rfc3875#page-11)
++ *
++ * I copied this code from mod_auth.c where it extracts auth info from the "Authorization"
++ * header to authenticate the user before allowing the request to proceed. I'm guessing it makes
++ * sense to re-parse the header here, as mod_auth is unaware if the request is headed for cgi/fcgi.
++ * Someone more familiar with the lighty internals should be able to quickly determine if we are
++ * better storing AUTH_TYPE on the initial parse in mod_auth.
++ */
++ char *http_authorization = NULL;
++ data_string *ds;
++
++ if (NULL != (ds = (data_string *)array_get_element(con->request.headers, "Authorization"))) {
++ http_authorization = ds->value->ptr;
++ }
++
++ if (ds && ds->value && ds->value->used) {
++ char *auth_realm;
++ if (NULL != (auth_realm = strchr(http_authorization, ' '))) {
++ int auth_type_len = auth_realm - http_authorization;
++ if ((auth_type_len == 5) && (0 == strncmp(http_authorization, "Basic", auth_type_len))) {
++ fcgi_env_add(p->fcgi_env, CONST_STR_LEN("AUTH_TYPE"), CONST_STR_LEN("Basic"));
++ } else if ((auth_type_len == 6) && (0 == strncmp(http_authorization, "Digest", auth_type_len))) {
++ fcgi_env_add(p->fcgi_env, CONST_STR_LEN("AUTH_TYPE"), CONST_STR_LEN("Digest"));
++ }
++ }
++ }
+ }
+
+ if (con->request.content_length > 0 && host->mode != FCGI_AUTHORIZER) {
diff --git a/www-servers/lighttpd/files/1.4.13/03_all_lighttpd-1.4.11-errorlog-pipe.diff b/www-servers/lighttpd/files/1.4.13/03_all_lighttpd-1.4.11-errorlog-pipe.diff
new file mode 100644
index 000000000000..c168eba74683
--- /dev/null
+++ b/www-servers/lighttpd/files/1.4.13/03_all_lighttpd-1.4.11-errorlog-pipe.diff
@@ -0,0 +1,179 @@
+diff -ur lighttpd-1.4.11.orig/src/base.h lighttpd-1.4.11/src/base.h
+--- lighttpd-1.4.11.orig/src/base.h 2006-01-13 06:51:04.000000000 -0800
++++ lighttpd-1.4.11/src/base.h 2006-12-17 18:01:39.000000000 -0800
+@@ -505,7 +505,7 @@
+
+ /* the errorlog */
+ int errorlog_fd;
+- enum { ERRORLOG_STDERR, ERRORLOG_FILE, ERRORLOG_SYSLOG } errorlog_mode;
++ enum { ERRORLOG_STDERR, ERRORLOG_FILE, ERRORLOG_SYSLOG, ERRORLOG_PIPE } errorlog_mode;
+ buffer *errorlog_buf;
+
+ fdevents *ev, *ev_ins;
+diff -ur lighttpd-1.4.11.orig/src/log.c lighttpd-1.4.11/src/log.c
+--- lighttpd-1.4.11.orig/src/log.c 2005-13-07 05:01:35.000000000 -0800
++++ lighttpd-1.4.11/src/log.c 2006-12-17 18:09:43.000000000 -0800
+@@ -34,10 +34,11 @@
+ /**
+ * open the errorlog
+ *
+- * we have 3 possibilities:
++ * we have 4 possibilities:
+ * - stderr (default)
+ * - syslog
+ * - logfile
++ * - pipe
+ *
+ * if the open failed, report to the user and die
+ *
+@@ -57,21 +58,81 @@
+ srv->errorlog_mode = ERRORLOG_SYSLOG;
+ } else if (!buffer_is_empty(srv->srvconf.errorlog_file)) {
+ const char *logfile = srv->srvconf.errorlog_file->ptr;
+-
+- if (-1 == (srv->errorlog_fd = open(logfile, O_APPEND | O_WRONLY | O_CREAT | O_LARGEFILE, 0644))) {
+- log_error_write(srv, __FILE__, __LINE__, "SSSS",
+- "opening errorlog '", logfile,
+- "' failed: ", strerror(errno));
+-
++
++ if (logfile[0] == '|') {
++#ifdef HAVE_FORK
++ /* create write pipe and spawn process */
++
++ int to_log_fds[2];
++ pid_t pid;
++
++ if (pipe(to_log_fds)) {
++ log_error_write(srv, __FILE__, __LINE__, "ss",
++ "pipe failed: ", strerror(errno));
++ return -1;
++ }
++
++ /* fork, execve */
++ switch (pid = fork()) {
++ case 0:
++ /* child */
++
++ close(STDIN_FILENO);
++ dup2(to_log_fds[0], STDIN_FILENO);
++ close(to_log_fds[0]);
++ /* not needed */
++ close(to_log_fds[1]);
++
++ /* we don't need the client socket */
++ for (fd = 3; fd < 256; fd++) {
++ close(fd);
++ }
++
++ /* exec the log-process (skip the | )
++ *
++ */
++
++ execl("/bin/sh", "sh", "-c", logfile + 1, NULL);
++
++ log_error_write(srv, __FILE__, __LINE__, "sss",
++ "spawning log-process failed: ",
++ strerror(errno), logfile + 1);
++
++ exit(-1);
++ break;
++ case -1:
++ /* error */
++ log_error_write(srv, __FILE__, __LINE__, "ss", "fork failed:", strerror(errno));
++ break;
++ default:
++ close(to_log_fds[0]);
++
++ srv->errorlog_fd = to_log_fds[1];
++
++ break;
++ }
++ srv->errorlog_mode = ERRORLOG_PIPE;
++#else
++ log_error_write(srv, __FILE__, __LINE__, "SSS",
++ "opening errorlog '", logfile,"' impossible");
+ return -1;
+- }
++#endif
++ } else {
++ if (-1 == (srv->errorlog_fd = open(logfile, O_APPEND | O_WRONLY | O_CREAT | O_LARGEFILE, 0644))) {
++ log_error_write(srv, __FILE__, __LINE__, "SSSS",
++ "opening errorlog '", logfile,
++ "' failed: ", strerror(errno));
++
++ return -1;
++ }
++ srv->errorlog_mode = ERRORLOG_FILE;
++ }
+ #ifdef FD_CLOEXEC
+- /* close fd on exec (cgi) */
+- fcntl(srv->errorlog_fd, F_SETFD, FD_CLOEXEC);
++ /* close fd on exec (cgi) */
++ fcntl(srv->errorlog_fd, F_SETFD, FD_CLOEXEC);
+ #endif
+- srv->errorlog_mode = ERRORLOG_FILE;
+- }
+-
++ }
++
+ log_error_write(srv, __FILE__, __LINE__, "s", "server started");
+
+ #ifdef HAVE_VALGRIND_VALGRIND_H
+@@ -99,7 +160,7 @@
+ */
+
+ int log_error_cycle(server *srv) {
+- /* only cycle if we are not in syslog-mode */
++ /* only cycle if the error log is a file */
+
+ if (srv->errorlog_mode == ERRORLOG_FILE) {
+ const char *logfile = srv->srvconf.errorlog_file->ptr;
+@@ -135,6 +196,7 @@
+ log_error_write(srv, __FILE__, __LINE__, "s", "server stopped");
+
+ switch(srv->errorlog_mode) {
++ case ERRORLOG_PIPE: /* fall through */
+ case ERRORLOG_FILE:
+ close(srv->errorlog_fd);
+ break;
+@@ -154,6 +216,7 @@
+ va_list ap;
+
+ switch(srv->errorlog_mode) {
++ case ERRORLOG_PIPE:
+ case ERRORLOG_FILE:
+ case ERRORLOG_STDERR:
+ /* cache the generated timestamp */
+@@ -238,6 +301,7 @@
+ va_end(ap);
+
+ switch(srv->errorlog_mode) {
++ case ERRORLOG_PIPE: /* fall through */
+ case ERRORLOG_FILE:
+ BUFFER_APPEND_STRING_CONST(srv->errorlog_buf, "\n");
+ write(srv->errorlog_fd, srv->errorlog_buf->ptr, srv->errorlog_buf->used - 1);
+diff -ur lighttpd-1.4.11.orig/src/mod_cgi.c lighttpd-1.4.11/src/mod_cgi.c
+--- lighttpd-1.4.11.orig/src/mod_cgi.c 2006-02-22 05:15:10.000000000 -0800
++++ lighttpd-1.4.11/src/mod_cgi.c 2006-12-17 18:01:39.000000000 -0800
+@@ -750,7 +750,7 @@
+ *
+ * we feed the stderr of the CGI to our errorlog, if possible
+ */
+- if (srv->errorlog_mode == ERRORLOG_FILE) {
++ if ((srv->errorlog_mode == ERRORLOG_FILE) || (srv->errorlog_mode == ERRORLOG_PIPE)) {
+ close(STDERR_FILENO);
+ dup2(srv->errorlog_fd, STDERR_FILENO);
+ }
+diff -ur lighttpd-1.4.11.orig/src/mod_rrdtool.c lighttpd-1.4.11/src/mod_rrdtool.c
+--- lighttpd-1.4.11.orig/src/mod_rrdtool.c 2005-08-21 15:52:24.000000000 -0700
++++ lighttpd-1.4.11/src/mod_rrdtool.c 2006-12-17 18:01:39.000000000 -0800
+@@ -134,7 +134,7 @@
+
+ close(STDERR_FILENO);
+
+- if (srv->errorlog_mode == ERRORLOG_FILE) {
++ if ((srv->errorlog_mode == ERRORLOG_FILE) || (srv->errorlog_mode == ERRORLOG_PIPE)) {
+ dup2(srv->errorlog_fd, STDERR_FILENO);
+ close(srv->errorlog_fd);
+ }
diff --git a/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1 b/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1
index b6122976bea7..464ad7746ddb 100644
--- a/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1
+++ b/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1
@@ -1,7 +1,7 @@
#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1,v 1.1 2007/01/09 18:20:10 robbat2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/lighttpd.initd-1.4.13-r1,v 1.2 2007/01/09 20:56:24 robbat2 Exp $
opts="depend checkconfig start stop reload graceful"
@@ -50,7 +50,7 @@ reload() {
fi
checkconfig || return 1
ebegin "Re-opening lighttpd log files"
- kill -HUP `cat ${LIGHTTPD_PID}` &>/dev/null
+ kill -HUP $(<${LIGHTTPD_PID}) &>/dev/null
eend $?
}
@@ -64,7 +64,7 @@ graceful() {
## s-s-d causes a 5 second delay here
#start-stop-daemon --stop --quiet --pidfile ${LIGHTTPD_PID} \
# --signal SIGINT
- kill -INT `cat ${LIGHTTPD_PID}`
+ kill -INT $(<${LIGHTTPD_PID})
rm -f ${LIGHTTPD_PID}
start
fi
diff --git a/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild b/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild
index 40270b8623b1..01dfbc9ceb5a 100644
--- a/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild
+++ b/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild,v 1.1 2007/01/09 18:20:10 robbat2 Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/lighttpd-1.4.13-r1.ebuild,v 1.2 2007/01/09 20:56:24 robbat2 Exp $
WANT_AUTOCONF=latest
WANT_AUTOMAKE=latest
@@ -101,7 +101,7 @@ src_unpack() {
unpack ${A}
cd ${S}
- EPATCH_SUFFIX="diff" epatch ${FILESDIR}/${PV} || die "Patching failed!"
+ EPATCH_SUFFIX="diff" EPATCH_OPTS="-p1 -l" epatch ${FILESDIR}/${PV} || die "Patching failed!"
eautoreconf || die