]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: muxes/stream-int: Remove flags CS_FL_READ_NULL and SI_FL_READ_NULL
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 22 Mar 2019 13:51:36 +0000 (14:51 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 25 Mar 2019 05:55:23 +0000 (06:55 +0100)
Since the flag CF_SHUTR is no more set to mark the end of the message, these
flags become useless.

This patch should be backported to 1.9.

include/types/connection.h
include/types/stream_interface.h
src/mux_h1.c
src/mux_h2.c
src/mux_pt.c
src/stream_interface.c

index 66a0f46f0b98c1b3dbf28fbe8da19cc87b66c1c8..c7d968ca06e68ac663d6e4479a2eef33761e9384 100644 (file)
@@ -87,8 +87,8 @@ enum {
        CS_FL_ERR_PENDING   = 0x00000800,  /* An error is pending, but there's still data to be read */
        CS_FL_EOS           = 0x00001000,  /* End of stream delivered to data layer */
        CS_FL_REOS          = 0x00002000,  /* End of stream received (buffer not empty) */
-       CS_FL_READ_NULL     = 0x00004000,  /* Last read received */
-       CS_FL_EOI           = 0x00008000,  /* end-of-input reached */
+       CS_FL_EOI           = 0x00004000,  /* end-of-input reached */
+       /* unused: 0x00008000 */
        CS_FL_WAIT_FOR_HS   = 0x00010000,  /* This stream is waiting for handhskae */
        CS_FL_KILL_CONN     = 0x00020000,  /* must kill the connection when the CS closes */
 
index d1b81354bb1644b4faab4e1f8caa1e3a6419402d..61937e073ac7fd17e3be9e4a9d1ff804d2a4fd09 100644 (file)
@@ -72,7 +72,7 @@ enum {
        SI_FL_NOLINGER   = 0x00000080,  /* may close without lingering. One-shot. */
        SI_FL_NOHALF     = 0x00000100,  /* no half close, close both sides at once */
        SI_FL_SRC_ADDR   = 0x00001000,  /* get the source ip/port with getsockname */
-       SI_FL_READ_NULL  = 0x00000200,   /* Last read reported */
+       /* unused: 0x00000200 */
        SI_FL_WANT_GET   = 0x00004000,  /* a stream-int would like to get some data from the buffer */
        SI_FL_CLEAN_ABRT = 0x00008000,  /* SI_FL_ERR is used to report aborts, and not SHUTR */
 
index b191670250c3a9ce7677acbb800ccb6f5a7baeb6..65e99153d00714a5cf1f5e160c081c0143eece26 100644 (file)
@@ -1782,7 +1782,7 @@ static int h1_recv(struct h1c *h1c)
                h1_wake_stream_for_recv(h1s);
 
        if (conn_xprt_read0_pending(conn) && h1s && h1s->cs)
-               h1s->cs->flags |= (CS_FL_REOS|CS_FL_READ_NULL);
+               h1s->cs->flags |= CS_FL_REOS;
        if (!b_data(&h1c->ibuf))
                h1_release_buf(h1c, &h1c->ibuf);
        else if (!buf_room_for_htx_data(&h1c->ibuf))
@@ -1890,7 +1890,7 @@ static int h1_process(struct h1c * h1c)
                if (h1c->flags & H1C_F_CS_ERROR || conn->flags & CO_FL_ERROR)
                        flags |= CS_FL_ERROR;
                if (conn_xprt_read0_pending(conn))
-                       flags |= (CS_FL_REOS|CS_FL_READ_NULL);
+                       flags |= CS_FL_REOS;
                h1s->cs->flags |= flags;
                h1s->cs->data_cb->wake(h1s->cs);
        }
index 506226ce9beac7e17aea0bb6114390d831fd0c68..ab8504ecc35997840efe9a9eb52d23ca67e85a9c 100644 (file)
@@ -1443,7 +1443,7 @@ static void h2_wake_some_streams(struct h2c *h2c, int last, uint32_t flags)
                flags |= CS_FL_ERR_PENDING;
 
        if (conn_xprt_read0_pending(h2c->conn))
-               flags |= (CS_FL_REOS|CS_FL_READ_NULL);
+               flags |= CS_FL_REOS;
 
        /* Wake all streams with ID > last */
        node = eb32_lookup_ge(&h2c->streams_by_id, last + 1);
index 74c802ea82d4cb85ef5690b9ec9cba4ad10fcc87..4f53920c418579de034ecc69289c411b195d2af0 100644 (file)
@@ -255,7 +255,7 @@ static size_t mux_pt_rcv_buf(struct conn_stream *cs, struct buffer *buf, size_t
        if (conn_xprt_read0_pending(cs->conn)) {
                if (ret == 0)
                        cs->flags &= ~(CS_FL_RCV_MORE | CS_FL_WANT_ROOM);
-               cs->flags |= (CS_FL_EOS|CS_FL_READ_NULL);
+               cs->flags |= CS_FL_EOS;
        }
        if (cs->conn->flags & CO_FL_ERROR) {
                if (ret == 0)
@@ -298,7 +298,7 @@ static int mux_pt_rcv_pipe(struct conn_stream *cs, struct pipe *pipe, unsigned i
 
        ret = cs->conn->xprt->rcv_pipe(cs->conn, pipe, count);
        if (conn_xprt_read0_pending(cs->conn))
-               cs->flags |= (CS_FL_EOS|CS_FL_READ_NULL);
+               cs->flags |= CS_FL_EOS;
        if (cs->conn->flags & CO_FL_ERROR)
                cs->flags |= CS_FL_ERROR;
        return (ret);
index 1d216ae647ff33c175dd44680bd165b2f4d0663d..d13d69588a8fc46ec8d792677edeac98c0534890 100644 (file)
@@ -594,16 +594,6 @@ static int si_cs_process(struct conn_stream *cs)
                oc->flags |= CF_WRITE_NULL;
        }
 
-       /* The last read was received but not reported to the channel
-        * (CS_FL_READ_NULL set but not SI_FL_READ_NULL). So do it, even if the
-        * EOS was already reported.
-        *
-        * NOTE: It is a temporary fix to handle client aborts.
-        */
-       if (cs->flags & CS_FL_READ_NULL && !(si->flags & SI_FL_READ_NULL)) {
-               si->flags |= SI_FL_READ_NULL;
-               ic->flags |= CF_READ_NULL;
-       }
        /* Report EOI on the channel if it was reached from the mux point of
         * view. */
        if ((cs->flags & CS_FL_EOI) && !(ic->flags & CF_EOI))