BUG/MINOR: backend: check available list allocation for reuse

Do not consider reuse connection if available list is not allocated for
the target server. This will prevent a crash when using a standalone
server for an external purpose like socket_tcp/socket_ssl on hlua code.
For the idle/safe lists, they are considered allocated if
srv.max_idle_conns is not null.

Note that the hlua code is currently safe thanks to the additional
checks on proxy http mode and stream reuse policy not never. However,
this might not be sufficient for future code.

This patch should be backported in every branches containing the
following patch :
  7f68d815af (2.4 tree)
  REORG: backend: simplify conn_backend_get
This commit is contained in:
Amaury Denoyelle 2021-01-28 17:33:26 +01:00 committed by Willy Tarreau
parent 02757d02c2
commit a81bb7197e

View File

@ -1250,7 +1250,8 @@ int connect_server(struct stream *s)
srv = objt_server(s->target);
if (s->be->mode != PR_MODE_HTTP)
/* do not reuse if mode is http or if avail list is not allocated */
if ((s->be->mode != PR_MODE_HTTP) || (srv && !srv->available_conns))
goto skip_reuse;
/* first, search for a matching connection in the session's idle conns */