diff --git a/yesod-core/Yesod/Handler.hs b/yesod-core/Yesod/Handler.hs index 21bb25e5..6e70f20c 100644 --- a/yesod-core/Yesod/Handler.hs +++ b/yesod-core/Yesod/Handler.hs @@ -150,7 +150,7 @@ import qualified Data.ByteString.Lazy as L import Network.Wai.Parse (parseHttpAccept) import Yesod.Content -import Data.Maybe (fromMaybe) +import Data.Maybe (fromMaybe, mapMaybe) import Web.Cookie (SetCookie (..), renderSetCookie) import Control.Arrow ((***)) import qualified Network.Wai.Parse as NWP @@ -348,11 +348,18 @@ rbHelper' :: NWP.BackEnd x -> W.Request -> ResourceT IO ([(Text, Text)], [(Text, FileInfo)]) rbHelper' backend mkFI req = - (map fix1 *** map fix2) <$> (NWP.parseRequestBody backend req) + (map fix1 *** mapMaybe fix2) <$> (NWP.parseRequestBody backend req) where fix1 = go *** go - fix2 (x, NWP.FileInfo a b c) = - (go x, mkFI (go a) (go b) c) + fix2 (x, NWP.FileInfo a' b c) + | S.null a = Nothing + | otherwise = Just (go x, mkFI (go a) (go b) c) + where + a + | S.length a' < 2 = a' + | S8.head a' == '"' && S8.last a' == '"' = S.tail $ S.init a' + | S8.head a' == '\'' && S8.last a' == '\'' = S.tail $ S.init a' + | otherwise = a' go = decodeUtf8With lenientDecode -- | Get the sub application argument. diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index bd02ce69..212178bb 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -1,5 +1,5 @@ name: yesod-core -version: 1.1.0 +version: 1.1.0.1 license: MIT license-file: LICENSE author: Michael Snoyman