]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: stconn: Rely on SC flags to handle errors instead of SE flags
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 14 Apr 2023 10:09:35 +0000 (12:09 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 14 Apr 2023 15:05:54 +0000 (17:05 +0200)
It is the last commit on this subject. we stop to use SE_FL_ERROR flag from
the SC, except at the I/O level. Otherwise, we rely on SC_FL_ERROR
flag. Now, there should be a real separation between SE flags and SC flags.

src/stconn.c

index f4d54a7c6ed68163b0f0b98766fcfb8a16b09224..8c72e3608d9113845e7d636946eaf21de01f5e42 100644 (file)
@@ -579,7 +579,7 @@ static void sc_app_shut(struct stconn *sc)
                 * However, if SC_FL_NOLINGER is explicitly set, we know there is
                 * no risk so we close both sides immediately.
                 */
-               if (!(sc->flags & (SC_FL_ERROR|SC_FL_NOLINGER|SC_FL_ABRT_DONE)) && !sc_ep_test(sc, SE_FL_ERROR) &&
+               if (!(sc->flags & (SC_FL_ERROR|SC_FL_NOLINGER|SC_FL_ABRT_DONE)) &&
                    !(ic->flags & CF_DONT_READ))
                        return;
 
@@ -705,7 +705,7 @@ static void sc_app_shut_conn(struct stconn *sc)
                 * no risk so we close both sides immediately.
                 */
 
-               if ((sc->flags & SC_FL_ERROR) || sc_ep_test(sc, SE_FL_ERROR)) {
+               if (sc->flags & SC_FL_ERROR) {
                        /* quick close, the socket is already shut anyway */
                }
                else if (sc->flags & SC_FL_NOLINGER) {
@@ -903,7 +903,7 @@ static void sc_app_shut_applet(struct stconn *sc)
                 * However, if SC_FL_NOLINGER is explicitly set, we know there is
                 * no risk so we close both sides immediately.
                 */
-               if (!(sc->flags & (SC_FL_ERROR|SC_FL_NOLINGER|SC_FL_ABRT_DONE)) && !sc_ep_test(sc, SE_FL_ERROR) &&
+               if (!(sc->flags & (SC_FL_ERROR|SC_FL_NOLINGER|SC_FL_ABRT_DONE)) &&
                    !(ic->flags & CF_DONT_READ))
                        return;
 
@@ -1101,7 +1101,7 @@ static void sc_notify(struct stconn *sc)
             *                  read event while consumer side is not established (CF_READ_EVENT + sco->state != SC_ST_EST)
             */
                ((ic->flags & CF_READ_EVENT) && ((sc->flags & SC_FL_EOI) || (sc->flags & SC_FL_ABRT_DONE) || !ic->to_forward || sco->state != SC_ST_EST)) ||
-               (sc->flags & SC_FL_ERROR) || sc_ep_test(sc, SE_FL_ERROR) ||
+               (sc->flags & SC_FL_ERROR) ||
 
            /* changes on the consumption side */
            sc_ep_test(sc, SE_FL_ERR_PENDING) ||