MINOR: http-rules: Set SF_ERR_PRXCOND termination flag when a header rewrite fails
When a header rewrite fails, an internal errors is triggered. But
SF_ERR_INTERNAL is documented to be the concequence of a bug and must be
reported to the dev teamm. So, when this happens, the SF_ERR_PRXCOND termination
flag is set now.
diff --git a/src/http_act.c b/src/http_act.c
index e1d9c96..5d3d2e2 100644
--- a/src/http_act.c
+++ b/src/http_act.c
@@ -107,8 +107,11 @@
if (objt_server(s->target))
_HA_ATOMIC_ADD(&__objt_server(s->target)->counters.failed_rewrites, 1);
- if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW))
+ if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
+ if (!(s->flags & SF_ERR_MASK))
+ s->flags |= SF_ERR_PRXCOND;
+ }
goto leave;
}
@@ -227,8 +230,11 @@
if (objt_server(s->target))
_HA_ATOMIC_ADD(&__objt_server(s->target)->counters.failed_rewrites, 1);
- if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW))
+ if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
+ if (!(s->flags & SF_ERR_MASK))
+ s->flags |= SF_ERR_PRXCOND;
+ }
goto leave;
}
@@ -289,8 +295,11 @@
if (objt_server(s->target))
_HA_ATOMIC_ADD(&__objt_server(s->target)->counters.failed_rewrites, 1);
- if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW))
+ if (!(s->txn->req.flags & HTTP_MSGF_SOFT_RW)) {
return ACT_RET_ERR;
+ if (!(s->flags & SF_ERR_MASK))
+ s->flags |= SF_ERR_PRXCOND;
+ }
}
return ACT_RET_CONT;
@@ -1187,8 +1196,11 @@
if (objt_server(s->target))
_HA_ATOMIC_ADD(&__objt_server(s->target)->counters.failed_rewrites, 1);
- if (!(msg->flags & HTTP_MSGF_SOFT_RW))
+ if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
+ if (!(s->flags & SF_ERR_MASK))
+ s->flags |= SF_ERR_PRXCOND;
+ }
goto leave;
}
@@ -1297,8 +1309,11 @@
if (objt_server(s->target))
_HA_ATOMIC_ADD(&__objt_server(s->target)->counters.failed_rewrites, 1);
- if (!(msg->flags & HTTP_MSGF_SOFT_RW))
+ if (!(msg->flags & HTTP_MSGF_SOFT_RW)) {
ret = ACT_RET_ERR;
+ if (!(s->flags & SF_ERR_MASK))
+ s->flags |= SF_ERR_PRXCOND;
+ }
goto leave;
}