Mercurial > prosody-hg
diff net/http/parser.lua @ 14087:15c3f0bca461
Merge 13.0->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 20 Feb 2026 15:16:31 +0100 |
| parents | 79a6598cef0b |
| children | 948bda5ed45f |
line wrap: on
line diff
--- a/net/http/parser.lua Thu Feb 19 01:06:04 2026 +0100 +++ b/net/http/parser.lua Fri Feb 20 15:16:31 2026 +0100 @@ -93,9 +93,12 @@ end end if not first_line then error = true; return error_cb("invalid-status-line"); end - chunked = have_body and headers["transfer-encoding"] == "chunked"; len = tonumber(headers["content-length"]); -- TODO check for invalid len if client then + -- The presence of a message body in a response, as detailed in Section 6.3, depends on both the request method to which it is responding + -- and the response status code. + -- -- RFC9112 Section 6 + chunked = have_body and headers["transfer-encoding"] == "chunked"; -- FIXME handle '100 Continue' response (by skipping it) if not have_body then len = 0; end packet = { @@ -111,6 +114,11 @@ responseheaders = headers; }; else + -- The presence of a message body in a request is signaled by a Content-Length or Transfer-Encoding header field. Request message framing + -- is independent of method semantics. + -- -- RFC9112 Section 6 + chunked = headers["transfer-encoding"] == "chunked"; + have_body = chunked or len; local parsed_url; if path:byte() == 47 then -- starts with / local _path, _query = path:match("([^?]*).?(.*)");
