The zlib stream was deinitialized even when the init failed.
#define SN_BE_TRACK_SC1 0x00100000 /* backend tracks stick-counter 1 */
#define SN_BE_TRACK_SC2 0x00200000 /* backend tracks stick-counter 2 */
+#define SN_COMP_READY 0x00400000 /* the compression is initialized */
+
/* WARNING: if new fields are added, they must be initialized in event_accept()
* and freed in session_free() !
if (s->comp_algo->init(&s->comp_ctx, global.tune.comp_maxlevel) < 0)
goto fail;
+ s->flags |= SN_COMP_READY;
+
s->comp_ctx.cur_lvl = global.tune.comp_maxlevel;
/* remove Content-Length header */
return 1;
fail:
- if (s->comp_algo) {
+ if (s->flags & SN_COMP_READY) {
s->comp_algo->end(&s->comp_ctx);
s->comp_algo = NULL;
+ s->flags &= ~SN_COMP_READY;
}
return 0;
}
sess_change_server(s, NULL);
}
- if (s->comp_algo) {
+ if (s->flags & SN_COMP_READY) {
s->comp_algo->end(&s->comp_ctx);
s->comp_algo = NULL;
+ s->flags &= ~SN_COMP_READY;
}
if (s->req->pipe)