hack-handler-happstack 2009.4.50 → 2009.4.51
raw patch · 3 files changed
+71/−3 lines, 3 files
Files
- changelog.md +8/−0
- hack-handler-happstack.cabal +1/−1
- src/Hack/Handler/Happstack.hs +62/−2
changelog.md view
@@ -1,3 +1,11 @@+2009.4.51+-----------++### Fix++* translate lowercase header to normal header for env+* don't get server name, that cause a crash+ 2009.4.50 ---------
hack-handler-happstack.cabal view
@@ -1,5 +1,5 @@ Name: hack-handler-happstack-Version: 2009.4.50+Version: 2009.4.51 Build-type: Simple Synopsis: Hyena Kibro handler Description: Hyena Kibro handler
src/Hack/Handler/Happstack.hs view
@@ -10,6 +10,7 @@ import Control.Monad.Trans import Data.List import Data.Char+import Data.Maybe import qualified Data.Map as M import qualified Data.ByteString.Lazy.Char8 as C@@ -36,7 +37,7 @@ , script_name = "" , path_info = "/" ++ (intercalate "/" $ rqPaths req) , query_string = rqQuery req- , server_name = fst $ rqPeer req+ , server_name = "" -- fst $ rqPeer req , server_port = port conf' , http = toHttp (rqHeaders req) , hack_input = (\(Body x) -> C.unpack x) (rqBody req)@@ -58,7 +59,7 @@ toHttp = M.toList >>> map snd >>> map headerToPair headerToPair :: HeaderPair -> (String, String)-headerToPair (HeaderPair k v) = (b2s k, intercalate " " $ map b2s v)+headerToPair (HeaderPair k v) = (translate_header $ b2s k, intercalate " " $ map b2s v) where b2s x = map I.w2c $ L.unpack x toHappstackResponse :: Hack.Response -> Happstack.Response@@ -77,3 +78,62 @@ c2b x = L.pack $ map I.c2w x +-- happstack convert all request header to lowercase ...++translate_header :: String -> String+translate_header s = fromMaybe s $ find (map toLower >>> (== s) ) header_list++header_list :: [String]+header_list = + [ "Cache-Control" + , "Connection" + , "Date" + , "Pragma" + , "Transfer-Encoding" + , "Upgrade" + , "Via" + , "Accept" + , "Accept-Charset" + , "Accept-Encoding" + , "Accept-Language" + , "Authorization" + , "Cookie" + , "Expect" + , "From" + , "Host" + , "If-Modified-Since" + , "If-Match" + , "If-None-Match" + , "If-Range" + , "If-Unmodified-Since" + , "Max-Forwards" + , "Proxy-Authorization" + , "Range" + , "Referer" + , "User-Agent" + , "Age" + , "Location" + , "Proxy-Authenticate" + , "Public" + , "Retry-After" + , "Server" + , "Set-Cookie" + , "TE" + , "Trailer" + , "Vary" + , "Warning" + , "WWW-Authenticate" + , "Allow" + , "Content-Base" + , "Content-Encoding" + , "Content-Language" + , "Content-Length" + , "Content-Location" + , "Content-MD5" + , "Content-Range" + , "Content-Type" + , "ETag" + , "Expires" + , "Last-Modified" + , "Content-Transfer-Encodeing"+ ]