@@ -52,7 +52,7 @@ import Blaze.ByteString.Builder.HTTP
52 (chunkedTransferEncoding, chunkedTransferTerminator)
52 (chunkedTransferEncoding, chunkedTransferTerminator)
53import Blaze.ByteString.Builder
53import Blaze.ByteString.Builder
54 (copyByteString, Builder, toLazyByteString, toByteStringIO)
54 (copyByteString, Builder, toLazyByteString, toByteStringIO)
55−import Blaze.ByteString.Builder.Char8 (fromChar, fromString)
55+import Blaze.ByteString.Builder.Char8 (fromChar, fromShow)
56import Data.Monoid (mconcat, mappend)
56import Data.Monoid (mconcat, mappend)
57import Network.Socket.SendFile (sendFile)
57import Network.Socket.SendFile (sendFile)
@@ -190,18 +190,20 @@ parseFirst s = do
190 [x, y, z] -> return (x, y, z)
190 [x, y, z] -> return (x, y, z)
191 _ -> E.throwError $ BadFirstLine $ B.unpack s
191 _ -> E.throwError $ BadFirstLine $ B.unpack s
192 let (hfirst, hsecond) = B.splitAt 5 http'
192 let (hfirst, hsecond) = B.splitAt 5 http'
193− unless (hfirst == "HTTP/") $ E.throwError NonHttp
193+ if (hfirst == "HTTP/")
194− let (rpath, qstring) = B.break (== '?') query
195+ let (rpath, qstring) = B.break (== '?') query
195− return (method, rpath, qstring, hsecond)
196+ in return (method, rpath, qstring, hsecond)
197+ else E.throwError NonHttp
197headers :: HttpVersion -> Status -> ResponseHeaders -> Bool -> Builder
199headers :: HttpVersion -> Status -> ResponseHeaders -> Bool -> Builder
198headers httpversion status responseHeaders isChunked' =
200headers httpversion status responseHeaders isChunked' =
199 copyByteString "HTTP/"
201 copyByteString "HTTP/"
200 `mappend` copyByteString httpversion
202 `mappend` copyByteString httpversion
201 `mappend` fromChar ' '
203 `mappend` fromChar ' '
202− `mappend` fromString $ show $ statusCode status
204+ `mappend` fromShow (statusCode status)
203 `mappend` fromChar ' '
205 `mappend` fromChar ' '
204− `mappend` copyByteString $ statusMessage status
206+ `mappend` copyByteString (statusMessage status)
205 `mappend` copyByteString "\r\n"
207 `mappend` copyByteString "\r\n"
206 `mappend` mconcat (map go responseHeaders)
208 `mappend` mconcat (map go responseHeaders)
207 `mappend`
209 `mappend`
@@ -210,7 +212,7 @@ headers httpversion status responseHeaders isChunked' =
210 else copyByteString "\r\n"
212 else copyByteString "\r\n"
212 go (x, y) =
214 go (x, y) =
213− copyByteString $ ciOriginal x
215+ copyByteString (ciOriginal x)
214 `mappend` copyByteString ": "
216 `mappend` copyByteString ": "
215 `mappend` copyByteString y
217 `mappend` copyByteString y
216 `mappend` copyByteString "\r\n"
218 `mappend` copyByteString "\r\n"