diff --git a/yesod-bin/Build.hs b/yesod-bin/Build.hs index 3050a1a8..aca37e74 100644 --- a/yesod-bin/Build.hs +++ b/yesod-bin/Build.hs @@ -20,8 +20,7 @@ import Data.Text.Encoding.Error (lenientDecode) import Data.ByteString (ByteString) import qualified Data.ByteString as S -import Control.Exception (SomeException, try, IOException) -import Control.Exception.Lifted (handle) +import UnliftIO (SomeException, try, IOException, handle) import Control.Monad (when, filterM, forM, forM_, (>=>)) import Control.Monad.Trans.State (StateT, get, put, execStateT) import Control.Monad.Trans.Writer (WriterT, tell, execWriterT) diff --git a/yesod-core/Yesod/Core/Handler.hs b/yesod-core/Yesod/Core/Handler.hs index 7ff66627..45e15a20 100644 --- a/yesod-core/Yesod/Core/Handler.hs +++ b/yesod-core/Yesod/Core/Handler.hs @@ -193,6 +193,7 @@ import Control.Applicative ((<$>)) import Data.Monoid (mempty, mappend) #endif import Control.Applicative ((<|>)) +import qualified Data.CaseInsensitive as CI import Control.Exception (evaluate, SomeException, throwIO) import Control.Exception (handle) @@ -779,7 +780,7 @@ setLanguage = setSession langKey -- -- @since 1.2.0 addHeader :: MonadHandler m => Text -> Text -> m () -addHeader a = addHeaderInternal . Header (encodeUtf8 a) . encodeUtf8 +addHeader a = addHeaderInternal . Header (CI.mk $ encodeUtf8 a) . encodeUtf8 -- | Deprecated synonym for addHeader. setHeader :: MonadHandler m => Text -> Text -> m () @@ -797,10 +798,10 @@ replaceOrAddHeader :: MonadHandler m => Text -> Text -> m () replaceOrAddHeader a b = modify $ \g -> g {ghsHeaders = replaceHeader (ghsHeaders g)} where - repHeader = Header (encodeUtf8 a) (encodeUtf8 b) + repHeader = Header (CI.mk $ encodeUtf8 a) (encodeUtf8 b) sameHeaderName :: Header -> Header -> Bool - sameHeaderName (Header n1 _) (Header n2 _) = T.toLower (decodeUtf8 n1) == T.toLower (decodeUtf8 n2) + sameHeaderName (Header n1 _) (Header n2 _) = n1 == n2 sameHeaderName _ _ = False replaceIndividualHeader :: [Header] -> [Header] diff --git a/yesod-core/Yesod/Core/Internal/Response.hs b/yesod-core/Yesod/Core/Internal/Response.hs index 7e2be331..abf0cdfa 100644 --- a/yesod-core/Yesod/Core/Internal/Response.hs +++ b/yesod-core/Yesod/Core/Internal/Response.hs @@ -8,7 +8,6 @@ import qualified Data.ByteString as S import qualified Data.ByteString.Char8 as S8 import qualified Data.ByteString.Lazy as BL import Data.CaseInsensitive (CI) -import qualified Data.CaseInsensitive as CI import Network.Wai import Control.Monad (mplus) import Control.Monad.Trans.Resource (runInternalState, InternalState) @@ -92,7 +91,7 @@ headerToPair (DeleteCookie key path) = , "; expires=Thu, 01-Jan-1970 00:00:00 GMT" ] ) -headerToPair (Header key value) = (CI.mk key, value) +headerToPair (Header key value) = (key, value) evaluateContent :: Content -> IO (Either ErrorResponse Content) evaluateContent (ContentBuilder b mlen) = handle f $ do diff --git a/yesod-core/Yesod/Core/Types.hs b/yesod-core/Yesod/Core/Types.hs index 78ec0fef..191ea460 100644 --- a/yesod-core/Yesod/Core/Types.hs +++ b/yesod-core/Yesod/Core/Types.hs @@ -24,6 +24,7 @@ import Control.Monad.Logger (LogLevel, LogSource, import Control.Monad.Trans.Resource (MonadResource (..), InternalState, runInternalState, MonadThrow (..), throwM, ResourceT) import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as L +import Data.CaseInsensitive (CI) import Data.Conduit (Flush, ConduitT) import Data.IORef (IORef, modifyIORef') import Data.Map (Map, unionWith)