diff --git a/src/session.c b/src/session.c index 016e47120..710118024 100644 --- a/src/session.c +++ b/src/session.c @@ -201,7 +201,8 @@ int session_accept_fd(struct connection *cli_conn) /* now evaluate the tcp-request layer4 rules. We only need a session * and no stream for these rules. */ - if (!LIST_ISEMPTY(&p->tcp_req.l4_rules) && !tcp_exec_l4_rules(sess)) { + if (((sess->fe->defpx && !LIST_ISEMPTY(&sess->fe->defpx->tcp_req.l4_rules)) || + !LIST_ISEMPTY(&p->tcp_req.l4_rules)) && !tcp_exec_l4_rules(sess)) { /* let's do a no-linger now to close with a single RST. */ if (!(cli_conn->flags & CO_FL_FDLESS)) setsockopt(cfd, SOL_SOCKET, SO_LINGER, (struct linger *) &nolinger, sizeof(struct linger)); @@ -493,7 +494,8 @@ int conn_complete_session(struct connection *conn) conn->flags |= CO_FL_XPRT_TRACKED; /* we may have some tcp-request-session rules */ - if (!LIST_ISEMPTY(&sess->fe->tcp_req.l5_rules) && !tcp_exec_l5_rules(sess)) + if (((sess->fe->defpx && !LIST_ISEMPTY(&sess->fe->defpx->tcp_req.l5_rules)) || + !LIST_ISEMPTY(&sess->fe->tcp_req.l5_rules)) && !tcp_exec_l5_rules(sess)) goto fail; session_count_new(sess);