From: des Date: Tue, 15 May 2007 11:15:49 +0000 (+0000) Subject: Revert accidental commit of unfinished negative-caching patch. X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=719355ef5238e4db3ef89fe698b139001db30cbe;p=varnish Revert accidental commit of unfinished negative-caching patch. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1421 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index c12fad55..a26a6234 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -435,7 +435,6 @@ void WSL_Flush(struct worker *w); /* cache_response.c */ void RES_Error(struct sess *sp, int code, const char *reason); -int Fake(struct sess *sp, int status, const char *reason, int ttl); void RES_WriteObj(struct sess *sp); /* cache_vcl.c */ diff --git a/varnish-cache/bin/varnishd/cache_backend.c b/varnish-cache/bin/varnishd/cache_backend.c index ff254675..3570397d 100644 --- a/varnish-cache/bin/varnishd/cache_backend.c +++ b/varnish-cache/bin/varnishd/cache_backend.c @@ -320,9 +320,7 @@ VBE_GetFd(struct sess *sp) } usleep(100000 * n); } -#if 0 RES_Error(sp, 503, "Backend did not respond."); -#endif return (NULL); } diff --git a/varnish-cache/bin/varnishd/cache_center.c b/varnish-cache/bin/varnishd/cache_center.c index 5b428f4e..75e07701 100644 --- a/varnish-cache/bin/varnishd/cache_center.c +++ b/varnish-cache/bin/varnishd/cache_center.c @@ -286,19 +286,26 @@ static int cnt_fetch(struct sess *sp) { + if (Fetch(sp)) { - AZ(Fake(sp, 503, "Backend did not respond.", 30)); - } else { - RFC2616_cache_policy(sp, &sp->obj->http); /* XXX -> VCL */ + sp->obj->cacheable = 0; + HSH_Unbusy(sp->obj); + HSH_Deref(sp->obj); + sp->obj = NULL; + sp->step = STP_DONE; + RES_Error(sp, 503, NULL); + return (0); + } - VCL_fetch_method(sp); + RFC2616_cache_policy(sp, &sp->obj->http); /* XXX -> VCL */ - if (sp->handling == VCL_RET_ERROR) - INCOMPL(); + VCL_fetch_method(sp); - if (sp->handling == VCL_RET_PASS) - sp->obj->pass = 1; - } + if (sp->handling == VCL_RET_ERROR) + INCOMPL(); + + if (sp->handling == VCL_RET_PASS) + sp->obj->pass = 1; sp->obj->cacheable = 1; if (sp->obj->objhead != NULL) { diff --git a/varnish-cache/bin/varnishd/cache_response.c b/varnish-cache/bin/varnishd/cache_response.c index fb3b79fb..13b4fec9 100644 --- a/varnish-cache/bin/varnishd/cache_response.c +++ b/varnish-cache/bin/varnishd/cache_response.c @@ -29,11 +29,11 @@ * $Id$ */ +#include /* XXX: for NULL ?? */ +#include /* XXX: for NULL ?? */ #include #include -#include - #ifndef HAVE_CLOCK_GETTIME #include "compat/clock_gettime.h" #endif @@ -134,7 +134,7 @@ RES_Error(struct sess *sp, int code, const char *reason) vsb_cat(sb, "Server: Varnish\r\n" "Connection: close\r\n" - "Content-Type: text/html; charset=utf-8\r\n" + "Content-Type: text/html; charset=iso-8859-1\r\n" "\r\n" "\r\n" "\r\n" @@ -162,117 +162,6 @@ RES_Error(struct sess *sp, int code, const char *reason) vsb_delete(sb); } -/*--------------------------------------------------------------------*/ - -int -Fake(struct sess *sp, int status, const char *reason, int ttl) -{ - struct storage *st; - struct object *o; - struct vsb vsb; - struct http_msg *mp; - const char *msg; - char buf[40]; - time_t now; - size_t len; - - CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); - CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC); - CHECK_OBJ_NOTNULL(&sp->obj->http, HTTP_MAGIC); - assert(sp->obj->busy != 0); - o = sp->obj; - time(&now); - - assert(status >= 100 && status <= 999); - msg = "Unknown error"; - for (mp = http_msg; mp->nbr != 0 && mp->nbr <= status; mp++) { - if (mp->nbr < status) - continue; - if (mp->nbr > status) - break; - msg = mp->txt; - if (reason == NULL) - reason = mp->reason; - break; - } - if (reason == NULL) - reason = msg; - AN(reason); - AN(msg); - - o->response = status; - o->valid = 1; - o->entered = now; - o->ttl = now + ttl; - o->last_modified = now; - - /* generate body */ - st = stevedore->alloc(stevedore, 1024); - XXXAN(st->stevedore); - TAILQ_INSERT_TAIL(&sp->obj->store, st, list); - - vsb_new(&vsb, (char *)st->ptr, st->space, VSB_FIXEDLEN); - vsb_cat(&vsb, - "\r\n" - "\r\n" - " \r\n"); - vsb_printf(&vsb, - " %03d %s\r\n", status, msg); - vsb_printf(&vsb, - " \r\n" - " \r\n"); - vsb_printf(&vsb, - "

Error %03d %s

\r\n", status, msg); - vsb_printf(&vsb, - "

%s

\r\n", reason); - vsb_printf(&vsb, - "

Guru Meditation:

\r\n"); - vsb_printf(&vsb, - "

XID: %u

\r\n", sp->xid); - vsb_printf(&vsb, - " Varnish\r\n" - " \r\n" - "\r\n"); - vsb_finish(&vsb); - vsb_finish(&vsb); - o->len = st->len = vsb_len(&vsb); - vsb_delete(&vsb); - - /* generate header */ - o->http.s = calloc(len = 1024, 1); - XXXAN(o->http.s); - o->http.e = o->http.s + len; - - /* XXX we could use a little less magic here */ - vsb_new(&vsb, o->http.s, len, VSB_FIXEDLEN); - vsb_printf(&vsb, "\n"); - vsb_printf(&vsb, "\n"); - vsb_printf(&vsb, "HTTP/1.1\r\n"); - vsb_printf(&vsb, "%d\n", status); - vsb_printf(&vsb, "%s\n", reason); - TIM_format(now, buf); - vsb_printf(&vsb, "Date: %s\n", buf); - vsb_printf(&vsb, "Server: Varnish\n"); - vsb_printf(&vsb, "Retry-After: %ju\n", (uintmax_t)ttl); - vsb_printf(&vsb, "Content-Type: text/html; charset=utf-8\n"); - vsb_printf(&vsb, "Content-Length: %ud\n", o->len); - vsb_finish(&vsb); - vsb_delete(&vsb); - - /* XXX and here */ - o->http.f = o->http.s; - o->http.nhd = 0; - do { - o->http.hd[o->http.nhd].b = o->http.f; - while (*o->http.f != '\n') - ++o->http.f; - o->http.hd[o->http.nhd].e = o->http.f; - ++o->http.nhd; - ++o->http.f; - } while (*o->http.f); - - return (0); -} /*--------------------------------------------------------------------*/ diff --git a/varnish-cache/bin/varnishtop/varnishtop.c b/varnish-cache/bin/varnishtop/varnishtop.c index b470ddbe..f9ea9ba3 100644 --- a/varnish-cache/bin/varnishtop/varnishtop.c +++ b/varnish-cache/bin/varnishtop/varnishtop.c @@ -199,5 +199,5 @@ main(int argc, char **argv) TAILQ_INSERT_BEFORE(tp, tp2, list); } } - exit(0); + return (0); }