aboutsummaryrefslogtreecommitdiffstats
path: root/net/http
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2020-10-13 11:55:28 +0100
committerMatthew Wild <mwild1@gmail.com>2020-10-13 11:55:28 +0100
commit518904b66c472eeef18b85d0d742a72801517abf (patch)
treea844c33bd3ce085a41cbb725f170183b6656c912 /net/http
parentfb63187afceb8339b6142cc0b96162eb1c9af3b8 (diff)
downloadprosody-518904b66c472eeef18b85d0d742a72801517abf.tar.gz
prosody-518904b66c472eeef18b85d0d742a72801517abf.zip
net.http.server: Don't send Content-Length on 1xx/204 responses, per RFC (fixes #1596)
Diffstat (limited to 'net/http')
-rw-r--r--net/http/server.lua5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/http/server.lua b/net/http/server.lua
index 18704962..3873bbe0 100644
--- a/net/http/server.lua
+++ b/net/http/server.lua
@@ -295,7 +295,10 @@ _M.prepare_header = prepare_header;
function _M.send_response(response, body)
if response.finished then return; end
body = body or response.body or "";
- response.headers.content_length = #body;
+ -- Per RFC 7230, informational (1xx) and 204 (no content) should have no c-l header
+ if response.status_code > 199 and response.status_code ~= 204 then
+ response.headers.content_length = #body;
+ end
local output = prepare_header(response);
t_insert(output, body);
response.conn:write(t_concat(output));