Changeset

10324:3f4c25425589

net.http.server: Re-fire unhandled HEAD requsts as GET events (fixes #1447) BC: This overloads the GET event. Previous commit ensures HEAD requests are sent without a body.
author Kim Alvefur <zash@zash.se>
date Sat, 12 Oct 2019 18:27:54 +0200
parents 10323:73938168681c
children 10325:f2bbad04cf64
files CHANGES net/http/server.lua
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES	Sat Oct 12 18:27:02 2019 +0200
+++ b/CHANGES	Sat Oct 12 18:27:54 2019 +0200
@@ -11,6 +11,7 @@
 -   Rewritten migrator
 -   SCRAM-SHA-256
 -   Bi-directional server-to-server (XEP-0288)
+-   Built-in HTTP server now handles HEAD requests
 
 0.11.0
 ======
--- a/net/http/server.lua	Sat Oct 12 18:27:02 2019 +0200
+++ b/net/http/server.lua	Sat Oct 12 18:27:54 2019 +0200
@@ -229,6 +229,11 @@
 	local payload = { request = request, response = response };
 	log("debug", "Firing event: %s", global_event);
 	local result = events.fire_event(global_event, payload);
+	if result == nil and is_head_request then
+		local global_head_event = "GET "..request.path:match("[^?]*");
+		log("debug", "Firing event: %s", global_head_event);
+		result = events.fire_event(global_head_event, payload);
+	end
 	if result == nil then
 		if not hosts[host] then
 			if hosts[default_host] then
@@ -249,6 +254,12 @@
 		local host_event = request.method.." "..host..request.path:match("[^?]*");
 		log("debug", "Firing event: %s", host_event);
 		result = events.fire_event(host_event, payload);
+
+		if result == nil and is_head_request then
+			local host_head_event = "GET "..host..request.path:match("[^?]*");
+			log("debug", "Firing event: %s", host_head_event);
+			result = events.fire_event(host_head_event, payload);
+		end
 	end
 	if result ~= nil then
 		if result ~= true then