struct act_rule *rule;
struct hdr_ctx ctx;
const char *auth_realm;
+ int final;
/* If "the current_rule_list" match the executed rule list, we are in
* resume condition. If a resume is needed it is always in the action
}
case ACT_CUSTOM:
- switch (rule->action_ptr(rule, px, s->sess, s, 0)) {
+ final = 0;
+ if (px->options & PR_O_ABRT_CLOSE)
+ final = (s->req.flags & (CF_SHUTR|CF_READ_NULL|CF_READ_ERROR));
+
+ switch (rule->action_ptr(rule, px, s->sess, s, final)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
break;
struct connection *cli_conn;
struct act_rule *rule;
struct hdr_ctx ctx;
+ int final;
/* If "the current_rule_list" match the executed rule list, we are in
* resume condition. If a resume is needed it is always in the action
return HTTP_RULE_RES_DONE;
case ACT_CUSTOM:
- switch (rule->action_ptr(rule, px, s->sess, s, 0)) {
+ final = 0;
+ if (px->options & PR_O_ABRT_CLOSE)
+ final = (s->req.flags & (CF_SHUTR|CF_READ_NULL|CF_READ_ERROR));
+
+ switch (rule->action_ptr(rule, px, s->sess, s, final)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
break;