Search
j0ke.net Open Build Service
>
Projects
>
ha
>
varnish20
> varnish-2.0.1-ESI.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File varnish-2.0.1-ESI.patch of Package varnish20
--- bin/varnishd/cache_hash.c.orig 2008-10-20 10:16:48.000000000 +0200 +++ bin/varnishd/cache_hash.c 2008-10-20 10:17:45.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); --- bin/varnishd/cache_vrt_esi.c.orig 2008-10-20 10:17:01.000000000 +0200 +++ bin/varnishd/cache_vrt_esi.c 2008-10-20 10:20:03.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; --- bin/varnishtest/tests/r00345.vtc.orig 2008-10-20 10:24:38.000000000 +0200 +++ bin/varnishtest/tests/r00345.vtc 2008-10-20 10:22:25.000000000 +0200 @@ -0,0 +1,39 @@ +# Id$ + +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 + xresp + expect resp.bodylen == 4 +} -run