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

The VGZ api does not need a worker, it just needs a vsl_log

parent af2bfa94
......@@ -768,8 +768,8 @@ void Fetch_Init(void);
struct vgz;
enum vgz_flag { VGZ_NORMAL, VGZ_ALIGN, VGZ_RESET, VGZ_FINISH };
struct vgz *VGZ_NewUngzip(struct worker *wrk, const char *id);
struct vgz *VGZ_NewGzip(struct worker *wrk, const char *id);
struct vgz *VGZ_NewUngzip(struct vsl_log *vsl, const char *id);
struct vgz *VGZ_NewGzip(struct vsl_log *vsl, const char *id);
void VGZ_Ibuf(struct vgz *, const void *, ssize_t len);
int VGZ_IbufEmpty(const struct vgz *vg);
void VGZ_Obuf(struct vgz *, void *, ssize_t len);
......@@ -777,7 +777,7 @@ int VGZ_ObufFull(const struct vgz *vg);
int VGZ_ObufStorage(struct worker *w, struct vgz *vg);
int VGZ_Gzip(struct vgz *, const void **, size_t *len, enum vgz_flag);
int VGZ_Gunzip(struct vgz *, const void **, size_t *len);
int VGZ_Destroy(struct vgz **, int vsl_id);
int VGZ_Destroy(struct vgz **);
void VGZ_UpdateObj(const struct vgz*, struct object *);
int VGZ_WrwInit(struct vgz *vg);
......
......@@ -258,7 +258,7 @@ ESI_Deliver(struct sess *sp)
}
if (isgzip && !sp->req->gzip_resp) {
vgz = VGZ_NewUngzip(sp->wrk, "U D E");
vgz = VGZ_NewUngzip(sp->wrk->vsl, "U D E");
AZ(VGZ_WrwInit(vgz));
/* Feed a gzip header to gunzip to make it happy */
......@@ -390,7 +390,7 @@ ESI_Deliver(struct sess *sp)
}
if (vgz != NULL) {
VGZ_WrwFlush(sp->wrk, vgz);
(void)VGZ_Destroy(&vgz, sp->vsl_id);
(void)VGZ_Destroy(&vgz);
}
if (sp->req->gzip_resp && sp->req->esi_level == 0) {
/* Emit a gzip literal block with finish bit set */
......
......@@ -313,16 +313,16 @@ vfp_esi_begin(struct worker *wrk, size_t estimate)
AZ(bo->vgz_rx);
if (bo->is_gzip && bo->do_gunzip) {
bo->vgz_rx = VGZ_NewUngzip(wrk, "U F E");
bo->vgz_rx = VGZ_NewUngzip(wrk->vsl, "U F E");
VEP_Init(wrk, NULL);
vef->ibuf_sz = cache_param->gzip_buffer;
} else if (bo->is_gunzip && bo->do_gzip) {
vef->vgz = VGZ_NewGzip(wrk, "G F E");
vef->vgz = VGZ_NewGzip(wrk->vsl, "G F E");
VEP_Init(wrk, vfp_vep_callback);
vef->ibuf_sz = cache_param->gzip_buffer;
} else if (bo->is_gzip) {
bo->vgz_rx = VGZ_NewUngzip(wrk, "U F E");
vef->vgz = VGZ_NewGzip(wrk, "G F E");
bo->vgz_rx = VGZ_NewUngzip(wrk->vsl, "U F E");
vef->vgz = VGZ_NewGzip(wrk->vsl, "G F E");
VEP_Init(wrk, vfp_vep_callback);
vef->ibuf_sz = cache_param->gzip_buffer;
vef->ibuf2_sz = cache_param->gzip_buffer;
......@@ -386,7 +386,7 @@ vfp_esi_end(struct worker *wrk)
retval = bo->fetch_failed;
if (bo->vgz_rx != NULL && VGZ_Destroy(&bo->vgz_rx, -1) != VGZ_END)
if (bo->vgz_rx != NULL && VGZ_Destroy(&bo->vgz_rx) != VGZ_END)
retval = FetchError(bo, "Gunzip+ESI Failed at the very end");
vsb = VEP_Finish(wrk);
......@@ -414,7 +414,7 @@ vfp_esi_end(struct worker *wrk)
CHECK_OBJ_NOTNULL(vef, VEF_MAGIC);
if (vef->vgz != NULL) {
VGZ_UpdateObj(vef->vgz, bo->fetch_obj);
if (VGZ_Destroy(&vef->vgz, -1) != VGZ_END)
if (VGZ_Destroy(&vef->vgz) != VGZ_END)
retval = FetchError(bo,
"ESI+Gzip Failed at the very end");
}
......
......@@ -49,7 +49,7 @@ struct vgz {
unsigned magic;
#define VGZ_MAGIC 0x162df0cb
enum {VGZ_GZ,VGZ_UN} dir;
struct worker *wrk;
struct vsl_log *vsl;
const char *id;
struct ws *tmp;
char *tmp_snapshot;
......@@ -70,25 +70,23 @@ struct vgz {
*/
static struct vgz *
vgz_alloc_vgz(struct worker *wrk, const char *id)
vgz_alloc_vgz(struct vsl_log *vsl, const char *id)
{
struct vgz *vg;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
ALLOC_OBJ(vg, VGZ_MAGIC);
AN(vg);
vg->wrk = wrk;
vg->vsl = vsl;
vg->id = id;
return (vg);
}
struct vgz *
VGZ_NewUngzip(struct worker *wrk, const char *id)
VGZ_NewUngzip(struct vsl_log *vsl, const char *id)
{
struct vgz *vg;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
vg = vgz_alloc_vgz(wrk, id);
vg = vgz_alloc_vgz(vsl, id);
vg->dir = VGZ_UN;
VSC_C_main->n_gunzip++;
......@@ -103,13 +101,12 @@ VGZ_NewUngzip(struct worker *wrk, const char *id)
}
struct vgz *
VGZ_NewGzip(struct worker *wrk, const char *id)
VGZ_NewGzip(struct vsl_log *vsl, const char *id)
{
struct vgz *vg;
int i;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
vg = vgz_alloc_vgz(wrk, id);
vg = vgz_alloc_vgz(vsl, id);
vg->dir = VGZ_GZ;
VSC_C_main->n_gzip++;
......@@ -389,7 +386,7 @@ VGZ_UpdateObj(const struct vgz *vg, struct object *obj)
*/
int
VGZ_Destroy(struct vgz **vgp, int vsl_id)
VGZ_Destroy(struct vgz **vgp)
{
struct vgz *vg;
int i;
......@@ -398,22 +395,13 @@ VGZ_Destroy(struct vgz **vgp, int vsl_id)
CHECK_OBJ_NOTNULL(vg, VGZ_MAGIC);
*vgp = NULL;
if (vsl_id < 0)
VSLB(vg->wrk->busyobj, SLT_Gzip, "%s %jd %jd %jd %jd %jd",
vg->id,
(intmax_t)vg->vz.total_in,
(intmax_t)vg->vz.total_out,
(intmax_t)vg->vz.start_bit,
(intmax_t)vg->vz.last_bit,
(intmax_t)vg->vz.stop_bit);
else
WSL(vg->wrk->vsl, SLT_Gzip, vsl_id, "%s %jd %jd %jd %jd %jd",
vg->id,
(intmax_t)vg->vz.total_in,
(intmax_t)vg->vz.total_out,
(intmax_t)vg->vz.start_bit,
(intmax_t)vg->vz.last_bit,
(intmax_t)vg->vz.stop_bit);
WSL(vg->vsl, SLT_Gzip, -1, "%s %jd %jd %jd %jd %jd",
vg->id,
(intmax_t)vg->vz.total_in,
(intmax_t)vg->vz.total_out,
(intmax_t)vg->vz.start_bit,
(intmax_t)vg->vz.last_bit,
(intmax_t)vg->vz.stop_bit);
if (vg->tmp != NULL)
WS_Reset(vg->tmp, vg->tmp_snapshot);
if (vg->dir == VGZ_GZ)
......@@ -447,7 +435,7 @@ vfp_gunzip_begin(struct worker *wrk, size_t estimate)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
AZ(wrk->busyobj->vgz_rx);
wrk->busyobj->vgz_rx = VGZ_NewUngzip(wrk, "U F -");
wrk->busyobj->vgz_rx = VGZ_NewUngzip(wrk->vsl, "U F -");
XXXAZ(vgz_getmbuf(wrk->busyobj->vgz_rx));
}
......@@ -502,10 +490,10 @@ vfp_gunzip_end(struct worker *wrk)
wrk->busyobj->vgz_rx = NULL;
CHECK_OBJ_NOTNULL(vg, VGZ_MAGIC);
if (wrk->busyobj->fetch_failed) {
(void)VGZ_Destroy(&vg, -1);
(void)VGZ_Destroy(&vg);
return(0);
}
if (VGZ_Destroy(&vg, -1) != VGZ_END)
if (VGZ_Destroy(&vg) != VGZ_END)
return(FetchError(wrk->busyobj,
"Gunzip error at the very end"));
return (0);
......@@ -531,7 +519,7 @@ vfp_gzip_begin(struct worker *wrk, size_t estimate)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
AZ(wrk->busyobj->vgz_rx);
wrk->busyobj->vgz_rx = VGZ_NewGzip(wrk, "G F -");
wrk->busyobj->vgz_rx = VGZ_NewGzip(wrk->vsl, "G F -");
XXXAZ(vgz_getmbuf(wrk->busyobj->vgz_rx));
}
......@@ -586,7 +574,7 @@ vfp_gzip_end(struct worker *wrk)
CHECK_OBJ_NOTNULL(vg, VGZ_MAGIC);
wrk->busyobj->vgz_rx = NULL;
if (wrk->busyobj->fetch_failed) {
(void)VGZ_Destroy(&vg, -1);
(void)VGZ_Destroy(&vg);
return(0);
}
do {
......@@ -599,7 +587,7 @@ vfp_gzip_end(struct worker *wrk)
if (wrk->busyobj->do_stream)
RES_StreamPoll(wrk);
VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
if (VGZ_Destroy(&vg, -1) != VGZ_END)
if (VGZ_Destroy(&vg) != VGZ_END)
return(FetchError(wrk->busyobj, "Gzip error at the very end"));
return (0);
}
......@@ -623,7 +611,7 @@ vfp_testgzip_begin(struct worker *wrk, size_t estimate)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
(void)estimate;
wrk->busyobj->vgz_rx = VGZ_NewUngzip(wrk, "u F -");
wrk->busyobj->vgz_rx = VGZ_NewUngzip(wrk->vsl, "u F -");
CHECK_OBJ_NOTNULL(wrk->busyobj->vgz_rx, VGZ_MAGIC);
XXXAZ(vgz_getmbuf(wrk->busyobj->vgz_rx));
}
......@@ -687,11 +675,11 @@ vfp_testgzip_end(struct worker *wrk)
wrk->busyobj->vgz_rx = NULL;
CHECK_OBJ_NOTNULL(vg, VGZ_MAGIC);
if (wrk->busyobj->fetch_failed) {
(void)VGZ_Destroy(&vg, -1);
(void)VGZ_Destroy(&vg);
return(0);
}
VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
if (VGZ_Destroy(&vg, -1) != VGZ_END)
if (VGZ_Destroy(&vg) != VGZ_END)
return(FetchError(wrk->busyobj,
"TestGunzip error at the very end"));
return (0);
......
......@@ -160,7 +160,7 @@ res_WriteGunzipObj(const struct sess *sp)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
vg = VGZ_NewUngzip(sp->wrk, "U D -");
vg = VGZ_NewUngzip(sp->wrk->vsl, "U D -");
AZ(VGZ_WrwInit(vg));
VTAILQ_FOREACH(st, &sp->req->obj->store, list) {
......@@ -175,7 +175,7 @@ res_WriteGunzipObj(const struct sess *sp)
(void)i;
}
VGZ_WrwFlush(sp->wrk, vg);
(void)VGZ_Destroy(&vg, sp->vsl_id);
(void)VGZ_Destroy(&vg);
assert(u == sp->req->obj->len);
}
......@@ -325,7 +325,7 @@ RES_StreamStart(struct sess *sp)
WRW_Reserve(sp->wrk, &sp->fd);
if (req->res_mode & RES_GUNZIP) {
req->stream_vgz = VGZ_NewUngzip(sp->wrk, "U S -");
req->stream_vgz = VGZ_NewUngzip(sp->wrk->vsl, "U S -");
AZ(VGZ_WrwInit(req->stream_vgz));
http_Unset(req->resp, H_Content_Encoding);
}
......@@ -407,7 +407,7 @@ RES_StreamEnd(struct sess *sp)
if (req->res_mode & RES_GUNZIP) {
AN(req->stream_vgz);
VGZ_WrwFlush(sp->wrk, req->stream_vgz);
(void)VGZ_Destroy(&req->stream_vgz, sp->vsl_id);
(void)VGZ_Destroy(&req->stream_vgz);
}
if (req->res_mode & RES_CHUNKED && !(req->res_mode & RES_ESI_CHILD))
WRW_EndChunk(sp->wrk);
......
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