diff options
-rw-r--r-- | www-servers/varnish/ChangeLog | 9 | ||||
-rw-r--r-- | www-servers/varnish/files/varnish-2.0.1-fix-ESI-coredump.diff | 86 | ||||
-rw-r--r-- | www-servers/varnish/varnish-2.0.1-r1.ebuild (renamed from www-servers/varnish/varnish-2.0.1.ebuild) | 9 |
3 files changed, 99 insertions, 5 deletions
diff --git a/www-servers/varnish/ChangeLog b/www-servers/varnish/ChangeLog index 57ae84321aff..7caf87d7cea2 100644 --- a/www-servers/varnish/ChangeLog +++ b/www-servers/varnish/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for www-servers/varnish # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/www-servers/varnish/ChangeLog,v 1.15 2008/10/22 18:13:50 bangert Exp $ +# $Header: /var/cvsroot/gentoo-x86/www-servers/varnish/ChangeLog,v 1.16 2008/10/23 19:30:05 bangert Exp $ + +*varnish-2.0.1-r1 (23 Oct 2008) + + 23 Oct 2008; Thilo Bangert <bangert@gentoo.org> + +files/varnish-2.0.1-fix-ESI-coredump.diff, -varnish-2.0.1.ebuild, + +varnish-2.0.1-r1.ebuild: + add ESI core dump fix - dont use default src_compile *varnish-2.0.1 (22 Oct 2008) diff --git a/www-servers/varnish/files/varnish-2.0.1-fix-ESI-coredump.diff b/www-servers/varnish/files/varnish-2.0.1-fix-ESI-coredump.diff new file mode 100644 index 000000000000..1dd4e2e59406 --- /dev/null +++ b/www-servers/varnish/files/varnish-2.0.1-fix-ESI-coredump.diff @@ -0,0 +1,86 @@ +diff -Naur varnish-2.0.1.orig/bin/varnishd/cache_hash.c varnish-2.0.1/bin/varnishd/cache_hash.c +--- varnish-2.0.1.orig/bin/varnishd/cache_hash.c 2008-10-17 20:59:49.000000000 +0200 ++++ varnish-2.0.1/bin/varnishd/cache_hash.c 2008-10-23 21:00:29.000000000 +0200 +@@ -266,7 +266,8 @@ + + if (busy_o != NULL) { + /* There are one or more busy objects, wait for them */ +- VTAILQ_INSERT_TAIL(&oh->waitinglist, sp, list); ++ if (sp->esis == 0) ++ VTAILQ_INSERT_TAIL(&oh->waitinglist, sp, list); + sp->objhead = oh; + UNLOCK(&oh->mtx); + return (NULL); +diff -Naur varnish-2.0.1.orig/bin/varnishd/cache_vrt_esi.c varnish-2.0.1/bin/varnishd/cache_vrt_esi.c +--- varnish-2.0.1.orig/bin/varnishd/cache_vrt_esi.c 2008-10-17 20:59:49.000000000 +0200 ++++ varnish-2.0.1/bin/varnishd/cache_vrt_esi.c 2008-10-23 20:59:35.000000000 +0200 +@@ -796,7 +796,6 @@ + void + ESI_Deliver(struct sess *sp) + { +- + struct esi_bit *eb; + struct object *obj; + +@@ -839,7 +838,16 @@ + sp->step = STP_RECV; + http_ForceGet(sp->http); + http_Unset(sp->http, H_Content_Length); +- CNT_Session(sp); ++ while (1) { ++ CNT_Session(sp); ++ if (sp->step == STP_DONE) ++ break; ++ AN(sp->wrk); ++ WSL_Flush(sp->wrk, 0); ++ DSL(0x20, SLT_Debug, sp->id, "loop waiting for ESI"); ++ usleep(10000); ++ } ++ assert(sp->step == STP_DONE); + sp->esis--; + sp->obj = obj; + +diff -Naur varnish-2.0.1.orig/varnishtest/tests/r00345.vtc varnish-2.0.1/varnishtest/tests/r00345.vtc +--- varnish-2.0.1.orig/varnishtest/tests/r00345.vtc 1970-01-01 01:00:00.000000000 +0100 ++++ varnish-2.0.1/varnishtest/tests/r00345.vtc 2008-10-23 20:56:40.000000000 +0200 +@@ -0,0 +1,40 @@ ++# $Id: varnish-2.0.1-fix-ESI-coredump.diff,v 1.1 2008/10/23 19:30:05 bangert Exp $
++
++test "#345, ESI waitinglist trouble"
++
++server s1 {
++ rxreq
++ txresp -body {<esi:include src="someurl">}
++ rxreq
++ sema r1 sync 2
++ delay 1
++ txresp -body {DATA}
++} -start
++
++varnish v1 -arg "-p diag_bitmap=0x20" -vcl+backend {
++ sub vcl_fetch {
++ if (req.url == "/") {
++ esi;
++ }
++ }
++} -start
++
++client c1 {
++ txreq
++ rxresp
++ expect resp.bodylen == 4
++} -start
++
++client c2 {
++ txreq
++ sema r1 sync 2
++ rxresp
++ expect resp.bodylen == 4
++} -run
++
++client c1 {
++ txreq
++ rxresp
++ expect resp.bodylen == 4
++} -run
++
diff --git a/www-servers/varnish/varnish-2.0.1.ebuild b/www-servers/varnish/varnish-2.0.1-r1.ebuild index f11134c34d47..98fe5e0ed385 100644 --- a/www-servers/varnish/varnish-2.0.1.ebuild +++ b/www-servers/varnish/varnish-2.0.1-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/www-servers/varnish/varnish-2.0.1.ebuild,v 1.1 2008/10/22 18:13:50 bangert Exp $ +# $Header: /var/cvsroot/gentoo-x86/www-servers/varnish/varnish-2.0.1-r1.ebuild,v 1.1 2008/10/23 19:30:05 bangert Exp $ inherit eutils @@ -15,9 +15,10 @@ IUSE="" #varnish compiles stuff at run time RDEPEND="sys-devel/gcc" -src_compile() { - econf || die "econf failed" - emake || die "emake failed" +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/varnish-2.0.1-fix-ESI-coredump.diff } src_install() { |