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.
diff --git a/src/proto_htx.c b/src/proto_htx.c
index b99b9cf..e7341c1 100644
--- a/src/proto_htx.c
+++ b/src/proto_htx.c
@@ -1528,6 +1528,7 @@
*/
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 @@
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;