After some digging, we get to the following state: Based on tracing the code, the connection to the server fails and the SI_FL_EXP is set for the session. Then in sess_update_st_con_tcp the err_type is set to SI_ET_CONN_TO and the function returns 0 which means sess_update_st_cer is called. We set retries to 0 so the failure flags are set on both the read and write sides. I am not sure why we mark the client-side connection as failed when there has been no issues with it.
The recorded state for these failed http requests is “sC—“. It seems like whenever there is a failure in the communication to the server, haproxy drops the connection to the client before doing anything in the http layer. Based on my understanding, it is the responsibility of the response analyzers to give back a 504 to the clients in this case, but at the end of the process_session function, both s->req->analysers and s->rep->flags are 0. And no response is sent to the server. Regards.

