From: Willy Tarreau Date: Tue, 31 Oct 2017 07:35:27 +0000 (+0100) Subject: MEDIUM: h2: properly continue to parse header block when facing a 1xx response X-Git-Tag: v1.8-rc1~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c199faf5bd54aa4b53053a0919b5f9afb1592d12;p=thirdparty%2Fhaproxy.git MEDIUM: h2: properly continue to parse header block when facing a 1xx response We still didn't handle the 1xx responses properly. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index e0e2ebe57b..0b4165e860 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -1949,6 +1949,7 @@ static int h2s_frt_make_resp_headers(struct h2s *h2s, struct buffer *buf) * block does not wrap and we can safely read it this way without * having to realign the buffer. */ + next_header_block: ret = h1_headers_to_hdr_list(bo_ptr(buf), bo_ptr(buf) + buf->o, list, sizeof(list)/sizeof(list[0]), h1m); if (ret <= 0) { @@ -2067,6 +2068,12 @@ static int h2s_frt_make_resp_headers(struct h2s *h2s, struct buffer *buf) else h2s->st = H2_SS_CLOSED; } + else if (h1m->status >= 100 && h1m->status < 200) { + h1m->state = HTTP_MSG_RPBEFORE; + h1m->status = 0; + h1m->flags = 0; + goto next_header_block; + } else h1m->state = (h1m->flags & H1_MF_CLEN) ? HTTP_MSG_BODY : HTTP_MSG_CHUNK_SIZE;