From ad26d8d8207a5c839ab5fa133b1b65527f1bdbea Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Fri, 10 May 2019 17:48:28 +0200 Subject: [PATCH] BUG/MEDIUM: streams: Make sur SI_FL_L7_RETRY is set before attempting a retry. In a few cases, we'd just check if the backend is configured to do retries, and not if it's still allowed on the stream_interface. The SI_FL_L7_RETRY flag could have been removed because we failed to allocate a buffer, or because the request was too big to fit in a single buffer, so make sure it's there before attempting a retry. --- src/proto_htx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/proto_htx.c b/src/proto_htx.c index b99b9cf9b3..e7341c1ae1 100644 --- a/src/proto_htx.c +++ b/src/proto_htx.c @@ -1528,6 +1528,7 @@ int htx_wait_for_response(struct stream *s, struct channel *rep, int an_bit) */ if (conn->err_code == CO_ER_SSL_EARLY_FAILED) { if ((s->be->retry_type & PR_RE_EARLY_ERROR) && + (si_b->flags & SI_FL_L7_RETRY) && do_l7_retry(s, si_b) == 0) return 0; txn->status = 425; @@ -1817,6 +1818,7 @@ int htx_wait_for_response(struct stream *s, struct channel *rep, int an_bit) health_adjust(__objt_server(s->target), HANA_STATUS_HTTP_HDRRSP); } if ((s->be->retry_type & PR_RE_JUNK_REQUEST) && + (si_b->flags & SI_FL_L7_RETRY) && do_l7_retry(s, si_b) == 0) return 0; txn->status = 502; -- 2.47.3