BUG/MEDIUM: mux-fcgi: Don't rely on SI src/dst addresses for FCGI health-checks
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 28 Feb 2022 10:49:02 +0000 (11:49 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 1 Mar 2022 10:31:08 +0000 (11:31 +0100)
commita3b31c481c293dccb7ed40285fb4807e8d3c4523
tree0037121a39bb6ba5d7ec0061c32ef1bece97d2d1
parentd0642f93b778ff38b01d1e70a93ef15d0a7f57a4
BUG/MEDIUM: mux-fcgi: Don't rely on SI src/dst addresses for FCGI health-checks

When an HTTP health-check is performed in FCGI, we must not rely on the SI
source and destination addresses to set default parameters
(REMOTE_ADDR/REMOTE_PORT and SERVER_NAME/SERVER_PORT) because the backend
conn-stream is not attached to a stream but to a healt-check. Thus, there is
no stream-interface. In addition, there is no client connection because it
is an "internal" session.

Thus, for now, in this case, there is only the server connection that can be
used. So src/dst addresses are retrieved from the server connection when the
CS application is a health-check.

This patch should solve issue #1572. It must be backported to 2.5. Note than
the CS api has changed. Thus, on HAProxy 2.5, we should test the session's
origin instead:

    const struct sockaddr_storage *src = (cs_check(fstrm->cs) ? ...);
    const struct sockaddr_storage *dst = (cs_check(fstrm->cs) ? ...);

(cherry picked from commit 4ab8438362e9c37338350984afb76b393769f998)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
src/mux_fcgi.c