From 2b778484189735d22c45034b22de4665a745c49d Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 6 May 2019 15:00:22 +0200 Subject: [PATCH] MEDIUM: mux-h2: discard contents that are to be sent after a shutdown In h2_snd_buf() we discard any possible buffer contents requested to be sent after a close or an error. But in practice we can extend this to any case where the stream is locally half-closed since it means we will never be able to send these data anymore. For now it must not change anything, but it will be used by subsequent patches to discard lone a HTX EOM block arriving after the trailers block. --- src/mux_h2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mux_h2.c b/src/mux_h2.c index 7abcd80ae..1f0121c5e 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -5377,7 +5377,7 @@ static size_t h2_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun } if (htx) { - while (h2s->st < H2_SS_ERROR && !(h2s->flags & H2_SF_BLK_ANY) && + while (h2s->st < H2_SS_HLOC && !(h2s->flags & H2_SF_BLK_ANY) && count && !htx_is_empty(htx)) { idx = htx_get_head(htx); blk = htx_get_blk(htx, idx); @@ -5481,7 +5481,7 @@ static size_t h2_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun total += ret; count -= ret; - if (h2s->st >= H2_SS_ERROR) + if (h2s->st >= H2_SS_HLOC) break; if (h2s->flags & H2_SF_BLK_ANY) @@ -5489,7 +5489,7 @@ static size_t h2_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun } done: - if (h2s->st >= H2_SS_ERROR) { + if (h2s->st >= H2_SS_HLOC) { /* trim any possibly pending data after we close (extra CR-LF, * unprocessed trailers, abnormal extra data, ...) */