BUG/MEDIUM: mux-fcgi: Fix wrong test on FCGI_CF_KEEP_CONN in fcgi_detach()

When a stream is detached from its connection, we try to move the connection in
an idle list to keep it opened, the session one or the server one. But it must
only be done if there is no connection error and if we want to keep it
open. This last statement is true if FCGI_CF_KEEP_CONN flag is set. But the test
is inverted at the stage.

This patch must be backported to 2.1.
This commit is contained in:
Christopher Faulet 2020-05-02 09:21:24 +02:00
parent 8694f25040
commit 9bcd973a81

View File

@ -3532,7 +3532,7 @@ static void fcgi_detach(struct conn_stream *cs)
fcgi_strm_destroy(fstrm);
if (!(fconn->conn->flags & (CO_FL_ERROR|CO_FL_SOCK_RD_SH|CO_FL_SOCK_WR_SH)) &&
!(fconn->flags & FCGI_CF_KEEP_CONN)) {
(fconn->flags & FCGI_CF_KEEP_CONN)) {
/* Never ever allow to reuse a connection from a non-reuse backend */
if ((fconn->proxy->options & PR_O_REUSE_MASK) == PR_O_REUSE_NEVR)
fconn->conn->flags |= CO_FL_PRIVATE;