Changeset

4195:6811a229d92c

net.httpserver: Fix HTTP after commit c299726d2b4e and add a 500 error response if a request handler fails to make a response to the client
author Matthew Wild <mwild1@gmail.com>
date Wed, 23 Feb 2011 00:31:12 +0000
parents 4194:7cc041710106
children 4196:6de69a07fbf9
files net/httpserver.lua
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/net/httpserver.lua	Tue Feb 22 21:19:00 2011 +0000
+++ b/net/httpserver.lua	Wed Feb 23 00:31:12 2011 +0000
@@ -89,10 +89,20 @@
 	end
 	if callback then
 		local _callback = callback;
-		function callback(a, b, c)
-			local status, result = xpcall(function() _callback(a, b, c) end, debug_traceback);
-			if status then return result; end
+		function callback(method, body, request)
+			local ok, result = xpcall(function() return _callback(method, body, request) end, debug_traceback);
+			if ok then return result; end
 			log("error", "Error in HTTP server handler: %s", result);
+			-- TODO: When we support pipelining, request.destroyed
+			-- won't be the right flag - we just want to see if there
+			-- has been a response to this request yet.
+			if not request.destroyed then
+				return {
+					status = "500 Internal Server Error";
+					headers = { ["Content-Type"] = "text/plain" };
+					body = "There was an error processing your request. See the error log for more details.";
+				};
+			end
 		end
 		if err then
 			log("debug", "Request error: "..err);