Commit f79b8dc8 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

More backend error conditions changed from assert to 503


git-svn-id: http://www.varnish-cache.org/svn/trunk@1080 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent a3a93eea
...@@ -550,6 +550,7 @@ cnt_miss(struct sess *sp) ...@@ -550,6 +550,7 @@ cnt_miss(struct sess *sp)
HSH_Deref(sp->obj); HSH_Deref(sp->obj);
sp->obj = NULL; sp->obj = NULL;
sp->step = STP_DONE; sp->step = STP_DONE;
RES_Error(sp, 503, NULL);
return (0); return (0);
} }
sp->step = STP_FETCH; sp->step = STP_FETCH;
......
...@@ -322,16 +322,23 @@ FetchHeaders(struct sess *sp) ...@@ -322,16 +322,23 @@ FetchHeaders(struct sess *sp)
WRK_Reset(w, &vc->fd); WRK_Reset(w, &vc->fd);
http_Write(w, vc->http, 0); http_Write(w, vc->http, 0);
i = WRK_Flush(w); if (WRK_Flush(w)) {
xxxassert(i == 0); /* XXX: cleanup */
return (1);
}
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC); CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);
i = http_RecvHead(vc->http, vc->fd); if (http_RecvHead(vc->http, vc->fd)) {
xxxassert(i == 0); /* XXX: cleanup */
xxxassert(http_DissectResponse(sp->wrk, vc->http, vc->fd) == 0); return (1);
}
if (http_DissectResponse(sp->wrk, vc->http, vc->fd)) {
/* XXX: cleanup */
return (1);
}
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC); CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);
......
...@@ -421,6 +421,10 @@ http_DissectResponse(struct worker *w, struct http *hp, int fd) ...@@ -421,6 +421,10 @@ http_DissectResponse(struct worker *w, struct http *hp, int fd)
for (p = hp->s ; isspace(*p); p++) for (p = hp->s ; isspace(*p); p++)
continue; continue;
if (memcmp(p, "HTTP/1.", 7)) {
WSLR(w, SLT_HttpGarbage, fd, hp->s, hp->v);
return (400);
}
/* First, protocol */ /* First, protocol */
hp->hd[HTTP_HDR_PROTO].b = p; hp->hd[HTTP_HDR_PROTO].b = p;
while (!isspace(*p)) while (!isspace(*p))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment