mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 07:07:04 +02:00
MINOR: proxy: Add support of 421-Misdirected-Request in retry-on status
The "421" status can now be specified on retry-on directives. PR_RE_* flags were updated to remains sorted. This patch should fix the issue #2794. It is quite simple so it may safely be backported to 3.1 if necessary.
This commit is contained in:
parent
7262433183
commit
bc66d31985
@ -11760,10 +11760,10 @@ retry-on [space-delimited list of keywords]
|
||||
|
||||
<status> any HTTP status code among "401" (Unauthorized), "403"
|
||||
(Forbidden), "404" (Not Found), "408" (Request Timeout),
|
||||
"425" (Too Early), "429" (Too Many Requests), "500"
|
||||
(Server Error), "501" (Not Implemented), "502"
|
||||
(Bad Gateway), "503" (Service Unavailable), "504"
|
||||
(Gateway Timeout).
|
||||
"421" (Misdirected Request), "425" (Too Early),
|
||||
"429" (Too Many Requests), "500" (Server Error),
|
||||
"501" (Not Implemented), "502" (Bad Gateway),
|
||||
"503" (Service Unavailable), "504" (Gateway Timeout).
|
||||
|
||||
all-retryable-errors
|
||||
retry request for any error that are considered
|
||||
|
@ -192,17 +192,18 @@ enum PR_SRV_STATE_FILE {
|
||||
#define PR_RE_403 0x00000010 /* Retry if we got a 403 */
|
||||
#define PR_RE_404 0x00000020 /* Retry if we got a 404 */
|
||||
#define PR_RE_408 0x00000040 /* Retry if we got a 408 */
|
||||
#define PR_RE_425 0x00000080 /* Retry if we got a 425 */
|
||||
#define PR_RE_429 0x00000100 /* Retry if we got a 429 */
|
||||
#define PR_RE_500 0x00000200 /* Retry if we got a 500 */
|
||||
#define PR_RE_501 0x00000400 /* Retry if we got a 501 */
|
||||
#define PR_RE_502 0x00000800 /* Retry if we got a 502 */
|
||||
#define PR_RE_503 0x00001000 /* Retry if we got a 503 */
|
||||
#define PR_RE_504 0x00002000 /* Retry if we got a 504 */
|
||||
#define PR_RE_421 0x00000080 /* Retry if we got a 421 */
|
||||
#define PR_RE_425 0x00000100 /* Retry if we got a 425 */
|
||||
#define PR_RE_429 0x00000200 /* Retry if we got a 429 */
|
||||
#define PR_RE_500 0x00000400 /* Retry if we got a 500 */
|
||||
#define PR_RE_501 0x00000800 /* Retry if we got a 501 */
|
||||
#define PR_RE_502 0x00001000 /* Retry if we got a 502 */
|
||||
#define PR_RE_503 0x00002000 /* Retry if we got a 503 */
|
||||
#define PR_RE_504 0x00004000 /* Retry if we got a 504 */
|
||||
#define PR_RE_STATUS_MASK (PR_RE_401 | PR_RE_403 | PR_RE_404 | \
|
||||
PR_RE_408 | PR_RE_425 | PR_RE_429 | \
|
||||
PR_RE_500 | PR_RE_501 | PR_RE_502 | \
|
||||
PR_RE_503 | PR_RE_504)
|
||||
PR_RE_408 | PR_RE_421 | PR_RE_425 | \
|
||||
PR_RE_429 | PR_RE_500 | PR_RE_501 | \
|
||||
PR_RE_502 | PR_RE_503 | PR_RE_504)
|
||||
/* 0x00000800, 0x00001000, 0x00002000, 0x00004000 and 0x00008000 unused,
|
||||
* reserved for eventual future status codes
|
||||
*/
|
||||
|
@ -205,6 +205,8 @@ static inline int l7_status_match(struct proxy *p, int status)
|
||||
return (p->retry_type & PR_RE_404);
|
||||
case 408:
|
||||
return (p->retry_type & PR_RE_408);
|
||||
case 421:
|
||||
return (p->retry_type & PR_RE_421);
|
||||
case 425:
|
||||
return (p->retry_type & PR_RE_425);
|
||||
case 429:
|
||||
|
@ -877,6 +877,8 @@ proxy_parse_retry_on(char **args, int section, struct proxy *curpx,
|
||||
curpx->retry_type |= PR_RE_404;
|
||||
else if (strcmp(args[i], "408") == 0)
|
||||
curpx->retry_type |= PR_RE_408;
|
||||
else if (strcmp(args[i], "421") == 0)
|
||||
curpx->retry_type |= PR_RE_421;
|
||||
else if (strcmp(args[i], "425") == 0)
|
||||
curpx->retry_type |= PR_RE_425;
|
||||
else if (strcmp(args[i], "429") == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user