From: Christopher Faulet Date: Wed, 4 Mar 2026 08:05:14 +0000 (+0100) Subject: MINOR: filters: Use filter API as far as poissible to break loops on filters X-Git-Tag: v3.4-dev6~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3eadf887f7a0231973a9eb3bb56d6c8659686ab6;p=thirdparty%2Fhaproxy.git MINOR: filters: Use filter API as far as poissible to break loops on filters When the filters API was refactored to improve loops on filters, some places were not updated (or not fully updated). Some loops were not relying on resume_filter_list_break() while it was possible. So let's do so with this patch. --- diff --git a/src/filters.c b/src/filters.c index f12f16e2e..2add2ab79 100644 --- a/src/filters.c +++ b/src/filters.c @@ -741,8 +741,7 @@ flt_http_payload(struct stream *s, struct http_msg *msg, unsigned int len) filter->calls++; ret = FLT_OPS(filter)->http_payload(s, filter, msg, out + offset, data - offset); if (ret < 0) { - s->last_entity.type = STRM_ENTITY_FILTER; - s->last_entity.ptr = filter; + resume_filter_list_break(s, msg->chn, filter, ret); goto end; } data = ret + *flt_off - *strm_off; @@ -888,8 +887,7 @@ flt_post_analyze(struct stream *s, struct channel *chn, unsigned int an_bit) filter->calls++; ret = FLT_OPS(filter)->channel_post_analyze(s, filter, chn, an_bit); if (ret < 0) { - s->last_entity.type = STRM_ENTITY_FILTER; - s->last_entity.ptr = filter; + resume_filter_list_break(s, chn, filter, ret); break; } filter->post_analyzers &= ~an_bit; @@ -1053,8 +1051,7 @@ flt_tcp_payload(struct stream *s, struct channel *chn, unsigned int len) filter->calls++; ret = FLT_OPS(filter)->tcp_payload(s, filter, chn, out + offset, data - offset); if (ret < 0) { - s->last_entity.type = STRM_ENTITY_FILTER; - s->last_entity.ptr = filter; + resume_filter_list_break(s, chn, filter, ret); goto end; } data = ret + *flt_off - *strm_off;