diff --git a/src/filters.c b/src/filters.c index 99b44e06e..7640464e2 100644 --- a/src/filters.c +++ b/src/filters.c @@ -473,8 +473,10 @@ flt_stream_start(struct stream *s) if (FLT_OPS(filter)->stream_start && FLT_OPS(filter)->stream_start(s, filter) < 0) return -1; } - if (strm_li(s) && (strm_li(s)->analysers & AN_REQ_FLT_START_FE)) + if (strm_li(s) && (strm_li(s)->analysers & AN_REQ_FLT_START_FE)) { s->req.flags |= CF_FLT_ANALYZE; + s->req.analysers |= AN_RES_FLT_END; + } return 0; } @@ -533,10 +535,14 @@ flt_set_stream_backend(struct stream *s, struct proxy *be) FLT_OPS(filter)->stream_set_backend(s, filter, be) < 0) return -1; } - if (be->be_req_ana & AN_REQ_FLT_START_BE) + if (be->be_req_ana & AN_REQ_FLT_START_BE) { s->req.flags |= CF_FLT_ANALYZE; - if ((strm_fe(s)->fe_rsp_ana | be->be_rsp_ana) & (AN_RES_FLT_START_FE|AN_RES_FLT_START_BE)) + s->req.analysers |= AN_RES_FLT_END; + } + if ((strm_fe(s)->fe_rsp_ana | be->be_rsp_ana) & (AN_RES_FLT_START_FE|AN_RES_FLT_START_BE)) { s->res.flags |= CF_FLT_ANALYZE; + s->res.analysers |= AN_RES_FLT_END; + } return 0; } @@ -706,6 +712,7 @@ flt_start_analyze(struct stream *s, struct channel *chn, unsigned int an_bit) /* Set flag on channel to tell that the channel is filtered */ chn->flags |= CF_FLT_ANALYZE; + chn->analysers |= AN_RES_FLT_END; RESUME_FILTER_LOOP(s, chn) { if (!(chn->flags & CF_ISRESP)) {