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.
This commit is contained in:
Olivier Houchard 2019-05-10 17:48:28 +02:00 committed by Olivier Houchard
parent bfe2a83c24
commit ad26d8d820

View file

@ -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;