MINOR: h1-htx/http-ana: Set BODYLESS flag on message in TUNNEL state

When a H1 message is parsed, if the parser state is switched to TUNNEL mode
just after the header parsing, the BODYLESS flag is set on the HTX
start-line. By transitivity, the corresponding flag is set on the message in
HTTP analysers.  Thus it is possible to rely on it to not wait for the
request body.
This commit is contained in:
Christopher Faulet 2020-11-20 14:30:38 +01:00
parent 2a40854244
commit c31bc724d4
2 changed files with 4 additions and 2 deletions

View File

@ -146,6 +146,8 @@ static unsigned int h1m_htx_sl_flags(struct h1m *h1m)
else
flags |= HTX_SL_F_BODYLESS;
}
if (h1m->state == H1_MSG_TUNNEL)
flags |= HTX_SL_F_BODYLESS;
return flags;
}

View File

@ -875,8 +875,8 @@ int http_wait_for_request_body(struct stream *s, struct channel *req, int an_bit
if (htx->flags & HTX_FL_PROCESSING_ERROR)
goto return_int_err;
/* CONNECT requests have no body */
if (txn->meth == HTTP_METH_CONNECT)
/* Do nothing for bodyless and CONNECT requests */
if (txn->meth == HTTP_METH_CONNECT || (msg->flags & HTTP_MSGF_BODYLESS))
goto http_end;
/* We have to parse the HTTP request body to find any required data.