Commit 2d49712f authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Change FetchError() to take busyobj as arg.

parent f33a076b
......@@ -757,8 +757,8 @@ int EXP_NukeOne(struct worker *w, struct lru *lru);
/* cache_fetch.c */
struct storage *FetchStorage(struct worker *w, ssize_t sz);
int FetchError(const struct worker *w, const char *error);
int FetchError2(const struct worker *w, const char *error, const char *more);
int FetchError(struct busyobj *, const char *error);
int FetchError2(struct busyobj *, const char *error, const char *more);
int FetchHdr(struct sess *sp, int need_host_hdr, int sendbody);
int FetchBody(struct worker *w, struct object *obj);
int FetchReqBody(const struct sess *sp, int sendbody);
......
......@@ -387,7 +387,7 @@ vfp_esi_end(struct worker *wrk)
retval = bo->fetch_failed;
if (bo->vgz_rx != NULL && VGZ_Destroy(&bo->vgz_rx, -1) != VGZ_END)
retval = FetchError(wrk, "Gunzip+ESI Failed at the very end");
retval = FetchError(bo, "Gunzip+ESI Failed at the very end");
vsb = VEP_Finish(wrk);
......@@ -402,7 +402,7 @@ vfp_esi_end(struct worker *wrk)
VSB_data(vsb), l);
bo->fetch_obj->esidata->len = l;
} else {
retval = FetchError(wrk,
retval = FetchError(bo,
"Could not allocate storage for esidata");
}
}
......@@ -415,7 +415,7 @@ vfp_esi_end(struct worker *wrk)
if (vef->vgz != NULL) {
VGZ_UpdateObj(vef->vgz, bo->fetch_obj);
if (VGZ_Destroy(&vef->vgz, -1) != VGZ_END)
retval = FetchError(wrk,
retval = FetchError(bo,
"ESI+Gzip Failed at the very end");
}
if (vef->ibuf != NULL)
......
......@@ -52,25 +52,24 @@ static unsigned fetchfrag;
*/
int
FetchError2(const struct worker *wrk, const char *error, const char *more)
FetchError2(struct busyobj *bo, const char *error, const char *more)
{
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
if (!wrk->busyobj->fetch_failed) {
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
if (!bo->fetch_failed) {
if (more == NULL)
VSLB(wrk->busyobj, SLT_FetchError, "%s", error);
VSLB(bo, SLT_FetchError, "%s", error);
else
VSLB(wrk->busyobj, SLT_FetchError, "%s: %s", error,
more);
VSLB(bo, SLT_FetchError, "%s: %s", error, more);
}
wrk->busyobj->fetch_failed = 1;
bo->fetch_failed = 1;
return (-1);
}
int
FetchError(const struct worker *wrk, const char *error)
FetchError(struct busyobj *bo, const char *error)
{
return(FetchError2(wrk, error, NULL));
return(FetchError2(bo, error, NULL));
}
/*--------------------------------------------------------------------
......@@ -192,7 +191,7 @@ FetchStorage(struct worker *wrk, ssize_t sz)
l = cache_param->fetch_chunksize;
st = STV_alloc(wrk, l);
if (st == NULL) {
(void)FetchError(wrk, "Could not get storage");
(void)FetchError(wrk->busyobj, "Could not get storage");
return (NULL);
}
AZ(st->len);
......@@ -233,13 +232,13 @@ fetch_straight(struct worker *wrk, struct http_conn *htc, ssize_t cl)
assert(wrk->busyobj->body_status == BS_LENGTH);
if (cl < 0) {
return (FetchError(wrk, "straight length field bogus"));
return (FetchError(wrk->busyobj, "straight length field bogus"));
} else if (cl == 0)
return (0);
i = wrk->busyobj->vfp->bytes(wrk, htc, cl);
if (i <= 0)
return (FetchError(wrk, "straight insufficient bytes"));
return (FetchError(wrk->busyobj, "straight insufficient bytes"));
return (0);
}
......@@ -266,7 +265,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
} while (vct_islws(buf[0]));
if (!vct_ishex(buf[0]))
return (FetchError(wrk,"chunked header non-hex"));
return (FetchError(wrk->busyobj, "chunked header non-hex"));
/* Collect hex digits, skipping leading zeros */
for (u = 1; u < sizeof buf; u++) {
......@@ -279,7 +278,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
}
if (u >= sizeof buf)
return (FetchError(wrk,"chunked header too long"));
return (FetchError(wrk->busyobj,"chunked header too long"));
/* Skip trailing white space */
while(vct_islws(buf[u]) && buf[u] != '\n')
......@@ -287,12 +286,12 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
return (-1);
if (buf[u] != '\n')
return (FetchError(wrk,"chunked header no NL"));
return (FetchError(wrk->busyobj,"chunked header no NL"));
buf[u] = '\0';
cl = fetch_number(buf, 16);
if (cl < 0)
return (FetchError(wrk,"chunked header number syntax"));
return (FetchError(wrk->busyobj,"chunked header number syntax"));
if (cl > 0 && wrk->busyobj->vfp->bytes(wrk, htc, cl) <= 0)
return (-1);
......@@ -303,7 +302,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
if (buf[0] == '\r' && HTC_Read( htc, buf, 1) <= 0)
return (-1);
if (buf[0] != '\n')
return (FetchError(wrk,"chunked tail no NL"));
return (FetchError(wrk->busyobj,"chunked tail no NL"));
} while (cl > 0);
return (0);
}
......
......@@ -482,7 +482,7 @@ vfp_gunzip_bytes(struct worker *wrk, struct http_conn *htc, ssize_t bytes)
return(-1);
i = VGZ_Gunzip(vg, &dp, &dl);
if (i != VGZ_OK && i != VGZ_END)
return(FetchError(wrk, "Gunzip data error"));
return(FetchError(wrk->busyobj, "Gunzip data error"));
wrk->busyobj->fetch_obj->len += dl;
if (wrk->busyobj->do_stream)
RES_StreamPoll(wrk);
......@@ -506,7 +506,8 @@ vfp_gunzip_end(struct worker *wrk)
return(0);
}
if (VGZ_Destroy(&vg, -1) != VGZ_END)
return(FetchError(wrk, "Gunzip error at the very end"));
return(FetchError(wrk->busyobj,
"Gunzip error at the very end"));
return (0);
}
......@@ -599,7 +600,7 @@ vfp_gzip_end(struct worker *wrk)
RES_StreamPoll(wrk);
VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
if (VGZ_Destroy(&vg, -1) != VGZ_END)
return(FetchError(wrk, "Gzip error at the very end"));
return(FetchError(wrk->busyobj, "Gzip error at the very end"));
return (0);
}
......@@ -664,9 +665,10 @@ vfp_testgzip_bytes(struct worker *wrk, struct http_conn *htc, ssize_t bytes)
VGZ_Obuf(vg, vg->m_buf, vg->m_sz);
i = VGZ_Gunzip(vg, &dp, &dl);
if (i == VGZ_END && !VGZ_IbufEmpty(vg))
return(FetchError(wrk, "Junk after gzip data"));
return(FetchError(wrk->busyobj,
"Junk after gzip data"));
if (i != VGZ_OK && i != VGZ_END)
return(FetchError2(wrk,
return(FetchError2(wrk->busyobj,
"Invalid Gzip data", vg->vz.msg));
}
}
......@@ -690,7 +692,8 @@ vfp_testgzip_end(struct worker *wrk)
}
VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
if (VGZ_Destroy(&vg, -1) != VGZ_END)
return(FetchError(wrk, "TestGunzip error at the very end"));
return(FetchError(wrk->busyobj,
"TestGunzip error at the very end"));
return (0);
}
......
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