From 16a524c9ea7c761aa4b00fdeb3129c76ff0954ef Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 2 Feb 2021 21:16:03 +0100 Subject: [PATCH] MINOR: mux-h1/mux-fcgi: Don't needlessly loop on data parsing Because the function parsing H1 data is now able to handle wrapping input buffers, there is no reason to loop anymore in the muxes to be sure to parse wrapping data. --- src/mux_fcgi.c | 4 ++-- src/mux_h1.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mux_fcgi.c b/src/mux_fcgi.c index 5985c04fd8..bc9d0232c5 100644 --- a/src/mux_fcgi.c +++ b/src/mux_fcgi.c @@ -3420,7 +3420,7 @@ static size_t fcgi_strm_parse_response(struct fcgi_strm *fstrm, struct buffer *b TRACE_USER("H1 response fully rcvd", FCGI_EV_RSP_DATA|FCGI_EV_RSP_EOM, fconn->conn, fstrm, htx); } - if (!ret && h1m->state != H1_MSG_DONE) + if (h1m->state < H1_MSG_TRAILERS) break; TRACE_PROTO("rcvd response payload data", FCGI_EV_RSP_DATA|FCGI_EV_RSP_BODY, fconn->conn, fstrm, htx); @@ -3428,7 +3428,7 @@ static size_t fcgi_strm_parse_response(struct fcgi_strm *fstrm, struct buffer *b else if (h1m->state == H1_MSG_TRAILERS) { TRACE_PROTO("parsing response trailers", FCGI_EV_RSP_DATA|FCGI_EV_RSP_TLRS, fconn->conn, fstrm); ret = fcgi_strm_parse_trailers(fstrm, h1m, htx, &fstrm->rxbuf, &total, count); - if (!ret && h1m->state != H1_MSG_DONE) + if (h1m->state != H1_MSG_DONE) break; TRACE_PROTO("rcvd H1 response trailers", FCGI_EV_RSP_DATA|FCGI_EV_RSP_TLRS, fconn->conn, fstrm, htx); diff --git a/src/mux_h1.c b/src/mux_h1.c index 0b75dbb7a8..b90e11c9e4 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1553,7 +1553,7 @@ static size_t h1_process_input(struct h1c *h1c, struct buffer *buf, size_t count else if (h1m->state < H1_MSG_TRAILERS) { TRACE_PROTO("parsing message payload", H1_EV_RX_DATA|H1_EV_RX_BODY, h1c->conn, h1s); ret = h1_process_data(h1s, h1m, &htx, &h1c->ibuf, &total, count, buf); - if (!ret && h1m->state != H1_MSG_DONE) + if (h1m->state < H1_MSG_TRAILERS) break; TRACE_PROTO((!(h1m->flags & H1_MF_RESP) ? "rcvd H1 request payload data" : "rcvd H1 response payload data"), @@ -1562,7 +1562,7 @@ static size_t h1_process_input(struct h1c *h1c, struct buffer *buf, size_t count else if (h1m->state == H1_MSG_TRAILERS) { TRACE_PROTO("parsing message trailers", H1_EV_RX_DATA|H1_EV_RX_TLRS, h1c->conn, h1s); ret = h1_process_trailers(h1s, h1m, htx, &h1c->ibuf, &total, count); - if (!ret && h1m->state != H1_MSG_DONE) + if (h1m->state != H1_MSG_DONE) break; TRACE_PROTO((!(h1m->flags & H1_MF_RESP) ? "rcvd H1 request trailers" : "rcvd H1 response trailers"), -- 2.47.3