# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: package/.../lua-wsapi/status_names.patch
# Copyright (C) 2009 The OpenSDE Project
#
# More information can be found in the files COPYING and README.
#
# This patch file is dual-licensed. It is available under the license the
# patched project is licensed under, as long as it is an OpenSource license
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
# of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
# --- SDE-COPYRIGHT-NOTE-END ---

--- ./src/wsapi/xavante.lua.orig	2009-06-02 16:30:03.000000000 +0200
+++ ./src/wsapi/xavante.lua	2009-06-02 17:09:31.000000000 +0200
@@ -4,6 +4,7 @@
 -- Author: Fabio Mascarenhas
 -- Copyright (c) 2007 Kepler Project
 --
+-- vim: ts=3 cw=3 et:
 -----------------------------------------------------------------------------
 
 require "coxpcall"
@@ -43,6 +44,49 @@
    end
 end
 
+local status_name = {
+   [100] = "Continue",
+   [101] = "Switching Protocols",
+   [200] = "OK",
+   [201] = "Created",
+   [202] = "Accepted",
+   [203] = "Non-Authoritative Information",
+   [204] = "No Content",
+   [205] = "Reset Content",
+   [206] = "Partial Content",
+   [300] = "Multiple Choices",
+   [301] = "Moved Permanently",
+   [302] = "Found",
+   [303] = "See Other",
+   [304] = "Not Modified",
+   [305] = "Use Proxy",
+   [307] = "Temporary Redirect",
+   [400] = "Bad Request",
+   [401] = "Unauthorized",
+   [402] = "Payment Required",
+   [403] = "Forbidden",
+   [404] = "Not Found",
+   [405] = "Method Not Allowed",
+   [406] = "Not Acceptable",
+   [407] = "Proxy Authentication Required",
+   [408] = "Request Time-out",
+   [409] = "Conflict",
+   [410] = "Gone",
+   [411] = "Length Required",
+   [412] = "Precondition Failed",
+   [413] = "Request Entity Too Large",
+   [414] = "Request-URI Too Large",
+   [415] = "Unsupported Media Type",
+   [416] = "Requested range not satisfiable",
+   [417] = "Expectation Failed",
+   [500] = "Internal Server Error",
+   [501] = "Not Implemented",
+   [502] = "Bad Gateway",
+   [503] = "Service Unavailable",
+   [504] = "Gateway Time-out",
+   [505] = "HTTP Version not supported",
+}
+
 local function wsapihandler (req, res, wsapi_run, app_prefix, docroot, app_path)
    local path_info_pat = "^" .. (app_prefix or "") .. "(.*)"
    set_cgivars(req, docroot, path_info_pat, app_prefix)
@@ -57,7 +101,8 @@
    wsapi_env.APP_PATH = app_path
 
    local function set_status(status)
-      res.statusline = "HTTP/1.1 " .. tostring(status) 
+      res.statusline = string.format("HTTP/1.1 %d %s",
+			status, status_name[status] or "Unknown")
    end
 
    local function send_headers(headers)
@@ -81,16 +126,14 @@
       set_status(status or 500)
       send_headers(headers or {})
       common.send_content(res, res_iter, "send_data")
+   elseif wsapi_env.STATUS == 404 then
+      set_status(404)
+      send_headers({ ["Content-Type"] = "text/html" })
+      res:send_data(status)
    else
-      if wsapi_env.STATUS == 404 then
-	 res.statusline = "HTTP/1.1 404" 
-	 send_headers({ ["Content-Type"] = "text/html" })
-	 res:send_data(status)
-      else
-	 res.statusline = "HTTP/1.1 500" 
-	 send_headers({ ["Content-Type"] = "text/html" })
-	 res:send_data(common.error_html(status))
-      end
+      set_status(500)
+      send_headers({ ["Content-Type"] = "text/html" })
+      res:send_data(common.error_html(status))
    end
 end