git.iko.soy/typeable/servant
on master help sign in
Don't override status code on empty body.
c6071bfJulian K. Arni
servant-server/src/Servant/Server/Internal.hs−1
@@ -139,7 +139,6 @@ processMethodRouter :: Maybe (BL.ByteString, BL.ByteString) -> Status -> Method
139 -> Request -> RouteResult Response
139 -> Request -> RouteResult Response
140processMethodRouter handleA status method headers request = case handleA of
140processMethodRouter handleA status method headers request = case handleA of
141 Nothing -> FailFatal err406 -- this should not happen (checked before), so we make it fatal if it does
141 Nothing -> FailFatal err406 -- this should not happen (checked before), so we make it fatal if it does
142− Just (_, "") -> Route $ responseLBS status204 (fromMaybe [] headers) ""
143 Just (contentT, body) -> Route $ responseLBS status hdrs bdy
142 Just (contentT, body) -> Route $ responseLBS status hdrs bdy
144 where
143 where
145 bdy = if allowedMethodHead method request then "" else body
144 bdy = if allowedMethodHead method request then "" else body
servant-server/test/Servant/ServerSpec.hs+5−5
@@ -157,7 +157,7 @@ getSpec = do
157 post "/empty" "" `shouldRespondWith` 405
157 post "/empty" "" `shouldRespondWith` 405
158
158
159 it "returns headers" $ do
159 it "returns headers" $ do
160− get "/emptyWithHeaders" `shouldRespondWith` 204 { matchHeaders = [ "H" <:> "5" ] }
160+ get "/emptyWithHeaders" `shouldRespondWith` 200 { matchHeaders = [ "H" <:> "5" ] }
161
161
162 it "returns 406 if the Accept header is not supported" $ do
162 it "returns 406 if the Accept header is not supported" $ do
163 Test.Hspec.Wai.request methodGet "" [(hAccept, "crazy/mime")] ""
163 Test.Hspec.Wai.request methodGet "" [(hAccept, "crazy/mime")] ""
@@ -407,16 +407,16 @@ headerSpec = describe "Servant.API.Header" $ do
407 expectsString Nothing = error "Expected a string"
407 expectsString Nothing = error "Expected a string"
408
408
409 with (return (serve headerApi expectsInt)) $ do
409 with (return (serve headerApi expectsInt)) $ do
410− let delete' x = Test.Hspec.Wai.request methodDelete x [("MyHeader" ,"5")]
410+ let delete' x = Test.Hspec.Wai.request methodDelete x [("MyHeader", "5")]
411
411
412 it "passes the header to the handler (Int)" $
412 it "passes the header to the handler (Int)" $
413− delete' "/" "" `shouldRespondWith` 204
413+ delete' "/" "" `shouldRespondWith` 200
414
414
415 with (return (serve headerApi expectsString)) $ do
415 with (return (serve headerApi expectsString)) $ do
416− let delete' x = Test.Hspec.Wai.request methodDelete x [("MyHeader" ,"more from you")]
416+ let delete' x = Test.Hspec.Wai.request methodDelete x [("MyHeader", "more from you")]
417
417
418 it "passes the header to the handler (String)" $
418 it "passes the header to the handler (String)" $
419− delete' "/" "" `shouldRespondWith` 204
419+ delete' "/" "" `shouldRespondWith` 200
420
420
421
421
422type RawApi = "foo" :> Raw
422type RawApi = "foo" :> Raw