return (0);
}
if (sp->handling == VCL_RET_INSERT) {
+ if (FetchBody(sp)) {
+ sp->obj->cacheable = 0;
+ HSH_Unbusy(sp->obj);
+ HSH_Deref(sp->obj);
+ sp->obj = NULL;
+ RES_Error(sp, 503, NULL);
+ sp->step = STP_DONE;
+ return (0);
+ }
sp->obj->cacheable = 1;
- FetchBody(sp);
AZ(sp->vbc);
HSH_Ref(sp->obj); /* get another, STP_DELIVER will deref */
HSH_Unbusy(sp->obj);
while (cl > 0) {
i = http_Read(hp, fd, p, cl);
- xxxassert(i > 0); /* XXX seen */
+ if (i <= 0)
+ return (-1);
p += i;
cl -= i;
}
if (q == NULL || q == buf || *q != '\n') {
xxxassert(be > bp);
i = http_Read(hp, fd, bp, be - bp);
- xxxassert(i >= 0);
+ if (i <= 0)
+ return (-1);
bp += i;
continue;
}
/* Pick up the rest of this chunk */
while (v > 0) {
i = http_Read(hp, fd, st->ptr + st->len, v);
+ if (i <= 0)
+ return (-1);
st->len += i;
sp->obj->len += i;
u -= i;
AN(p);
AN(st);
i = http_Read(hp, fd, p, v);
- xxxassert(i >= 0);
+ if (i < 0)
+ return (-1);
if (i == 0)
- break;
+ break;
p += i;
v -= i;
st->len += i;
char *b;
int body = 1; /* XXX */
struct http *hp;
+ struct storage *st;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC);
} else
cls = 0;
+ if (cls < 0) {
+ while (!TAILQ_EMPTY(&sp->obj->store)) {
+ st = TAILQ_FIRST(&sp->obj->store);
+ TAILQ_REMOVE(&sp->obj->store, st, list);
+ stevedore->free(st);
+ }
+ close(vc->fd);
+ VBE_ClosedFd(sp->wrk, vc, 1);
+ return (-1);
+ }
+
{
/* Sanity check fetch methods accounting */
- struct storage *st;
unsigned uu;
uu = 0;