diff --git a/reg-tests/http-rules/http_after_response.vtc b/reg-tests/http-rules/http_after_response.vtc index 0a37daa5f..af6649850 100644 --- a/reg-tests/http-rules/http_after_response.vtc +++ b/reg-tests/http-rules/http_after_response.vtc @@ -182,11 +182,11 @@ client c4 -connect ${h1_feh1_sock} { client c5 -connect ${h1_feh1_sock} { txreq -req GET -url /deny-srv rxresp - expect resp.status == 502 - expect resp.http.be-sl1 == - expect resp.http.be-sl2 == - expect resp.http.be-hdr == - expect resp.http.sl1 == - expect resp.http.sl2 == - expect resp.http.hdr == + expect resp.status == 200 + expect resp.http.be-sl1 == "" + expect resp.http.be-sl2 == "" + expect resp.http.be-hdr == "" + expect resp.http.fe-sl1-crc == 3104968915 + expect resp.http.fe-sl2-crc == 561949791 + expect resp.http.fe-hdr-crc == 623352154 } -run diff --git a/src/http_ana.c b/src/http_ana.c index 341a9f870..036ae109d 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -2982,12 +2982,11 @@ int http_eval_after_res_rules(struct stream *s) vars_init_head(&s->vars_reqres, SCOPE_RES); } - def_rules = (s->be->defpx ? &s->be->defpx->http_after_res_rules : NULL); rules = &s->be->http_after_res_rules; ret = http_res_get_intercept_rule(s->be, def_rules, rules, s); - if (ret == HTTP_RULE_RES_CONT && sess->fe != s->be) { + if ((ret == HTTP_RULE_RES_CONT || ret == HTTP_RULE_RES_STOP) && sess->fe != s->be) { def_rules = ((sess->fe->defpx && sess->fe->defpx != s->be->defpx) ? &sess->fe->defpx->http_after_res_rules : NULL); rules = &sess->fe->http_after_res_rules; ret = http_res_get_intercept_rule(sess->fe, def_rules, rules, s);