closes #52 - use 307 redirect for http 1.1

This commit is contained in:
Greg Weber 2011-12-23 07:04:56 -03:00
parent a1bf9c7457
commit 0ef60e752f

View File

@ -377,7 +377,7 @@ runHandler :: HasReps c
-> master -> master
-> sub -> sub
-> YesodApp -> YesodApp
runHandler handler mrender sroute tomr ma sa = runHandler handler mrender sroute tomr master sub =
YesodApp $ \eh rr cts initSession -> do YesodApp $ \eh rr cts initSession -> do
let toErrorHandler e = let toErrorHandler e =
case fromException e of case fromException e of
@ -392,8 +392,8 @@ runHandler handler mrender sroute tomr ma sa =
} }
let hd = HandlerData let hd = HandlerData
{ handlerRequest = rr { handlerRequest = rr
, handlerSub = sa , handlerSub = sub
, handlerMaster = ma , handlerMaster = master
, handlerRoute = sroute , handlerRoute = sroute
, handlerRender = mrender , handlerRender = mrender
, handlerToMaster = tomr , handlerToMaster = tomr
@ -423,7 +423,7 @@ runHandler handler mrender sroute tomr ma sa =
HCRedirect rt loc -> do HCRedirect rt loc -> do
let hs = Header "Location" (encodeUtf8 loc) : appEndo headers [] let hs = Header "Location" (encodeUtf8 loc) : appEndo headers []
return $ YARPlain return $ YARPlain
(getRedirectStatus rt) hs typePlain emptyContent (getRedirectStatus rt $ reqWaiRequest rr) hs typePlain emptyContent
finalSession finalSession
HCSendFile ct fp p -> catchIter HCSendFile ct fp p -> catchIter
(sendFile' ct fp p) (sendFile' ct fp p)
@ -707,10 +707,12 @@ getStatus (InvalidArgs _) = H.status400
getStatus (PermissionDenied _) = H.status403 getStatus (PermissionDenied _) = H.status403
getStatus (BadMethod _) = H.status405 getStatus (BadMethod _) = H.status405
getRedirectStatus :: RedirectType -> H.Status getRedirectStatus :: RedirectType -> W.Request -> H.Status
getRedirectStatus RedirectPermanent = H.status301 getRedirectStatus RedirectPermanent _ = H.status301
getRedirectStatus RedirectTemporary = H.status302 getRedirectStatus RedirectTemporary r
getRedirectStatus RedirectSeeOther = H.status303 | W.httpVersion r == H.http11 = H.status307
| otherwise = H.status302
getRedirectStatus RedirectSeeOther _ = H.status303
-- | Different types of redirects. -- | Different types of redirects.
data RedirectType = RedirectPermanent data RedirectType = RedirectPermanent