[experimental-ims] 1f8cdd7 Merge branch 'master' of ssh://git.varnish-cache.org/git/varnish-cache into experimental-ims
Geoff Simmons
geoff at varnish-cache.org
Tue Jan 31 21:47:23 CET 2012
commit 1f8cdd71888885c0509d86cb1af906d22c6fa053
Merge: 3df9ebf 8a9ad30
Author: Geoff Simmons <geoff at uplex.de>
Date: Tue Jan 31 21:40:15 2012 +0100
Merge branch 'master' of ssh://git.varnish-cache.org/git/varnish-cache into experimental-ims
diff --cc bin/varnishd/cache/cache_center.c
index 8897e83,c933175..623eefd
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@@ -647,15 -618,9 +630,15 @@@ cnt_fetch(struct sess *sp, struct worke
AZ(wrk->busyobj->do_esi);
AZ(wrk->busyobj->do_pass);
-
+
VCL_fetch_method(sp);
+ /* Cancel streaming if a stale object was validated */
+ /* XXX: But not if original beresp.status != 304 */
+ /* See also AZ(busyobj->stale_obj) in cnt_streambody() */
+ if (wrk->busyobj->stale_obj)
+ wrk->busyobj->do_stream = 0;
+
if (req->objcore != NULL && wrk->busyobj->do_pass)
req->objcore->flags |= OC_F_PASS;
@@@ -698,33 -663,25 +681,25 @@@
}
/*--------------------------------------------------------------------
- * Fetch response body from the backend
+ * Prepare to fetch body from backend
*
DOT subgraph xcluster_body {
- DOT fetchbody [
- DOT shape=diamond
- DOT label="stream ?"
- DOT ]
- DOT fetchbody2 [
- DOT shape=ellipse
- DOT label="fetch body\nfrom backend\n"
+ DOT prepfetch [
+ DOT shape=record
+ DOT label="{cnt_prepfetch:|error?|<out>stream ?}"
DOT ]
DOT }
- DOT fetchbody -> fetchbody2 [label=no,style=bold,color=red]
- DOT fetchbody -> fetchbody2 [style=bold,color=blue]
- DOT fetchbody -> prepresp [label=yes,style=bold,color=cyan]
- DOT fetchbody2 -> prepresp [style=bold,color=red]
- DOT fetchbody2 -> prepresp [style=bold,color=blue]
+ DOT prepfetch:out -> fetchbody [style=bold,color=red]
+ DOT prepfetch:out -> fetchbody [style=bold,color=blue]
+ DOT prepfetch:out -> prepresp [label=yes,style=bold,color=cyan]
*/
-
static int
- cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
+ cnt_prepfetch(struct sess *sp, struct worker *wrk, struct req *req)
{
- int i;
struct http *hp, *hp2;
char *b;
- uint16_t nhttp;
+ uint16_t nhttp, stale_nhttp;
unsigned l;
struct vsb *vary = NULL;
int varyl = 0, pass;
More information about the varnish-commit
mailing list