diff --git a/include/types/connection.h b/include/types/connection.h index 66a0f46f0..c7d968ca0 100644 --- a/include/types/connection.h +++ b/include/types/connection.h @@ -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 */ diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h index d1b81354b..61937e073 100644 --- a/include/types/stream_interface.h +++ b/include/types/stream_interface.h @@ -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 */ diff --git a/src/mux_h1.c b/src/mux_h1.c index b19167025..65e99153d 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -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); } diff --git a/src/mux_h2.c b/src/mux_h2.c index 506226ce9..ab8504ecc 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -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); diff --git a/src/mux_pt.c b/src/mux_pt.c index 74c802ea8..4f53920c4 100644 --- a/src/mux_pt.c +++ b/src/mux_pt.c @@ -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); diff --git a/src/stream_interface.c b/src/stream_interface.c index 1d216ae64..d13d69588 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -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))