summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2026-05-08 19:24:34 +0200
committerTom Smeding <tom@tomsmeding.com>2026-05-08 19:24:34 +0200
commitba9d7504080fb4e9adfb2d33290190e06d2f8773 (patch)
tree95e7f936e9c46a6ae9dfbe1b3c7ff556ab55e0f5
parent5ba0fc25d8bfdaedd1a8ff7743ed2b0224d34ff3 (diff)
mini-http: Fix parser
-rw-r--r--mini-http/Network/HTTP/Server/Mini/Parser.hs8
1 files changed, 4 insertions, 4 deletions
diff --git a/mini-http/Network/HTTP/Server/Mini/Parser.hs b/mini-http/Network/HTTP/Server/Mini/Parser.hs
index 97e25c1..1e968cb 100644
--- a/mini-http/Network/HTTP/Server/Mini/Parser.hs
+++ b/mini-http/Network/HTTP/Server/Mini/Parser.hs
@@ -110,10 +110,10 @@ readUntilTerminator maxsize recv toprevprefix = do
-- now text2' has length at least 2 if available before EOF
case (haveCR, BS.length text2') of
(_, 0) -> return Nothing
- (False, _) | text2' `BS.index` 0 == 10 -> return (Just (BS.concat (reverse revprefix)))
- (False, n) | n >= 2, text2' `BS.index` 0 == 13, text2' `BS.index` 0 == 10 ->
- return (Just (BS.concat (reverse revprefix)))
- (True, _) | text2' `BS.index` 0 == 10 -> return (Just (BS.init (BS.concat (reverse revprefix))))
+ (False, _) | text2' `BS.index` 0 == 10 -> return (Just (BS.concat (reverse (text : revprefix))))
+ (False, n) | n >= 2, text2' `BS.index` 0 == 13, text2' `BS.index` 1 == 10 ->
+ return (Just (BS.concat (reverse (text : revprefix))))
+ (True, _) | text2' `BS.index` 0 == 10 -> return (Just (BS.init (BS.concat (reverse (text : revprefix)))))
(_, 1) -> return Nothing -- second recv returned EOF and no terminator found before that
_ -> goFind (text : revprefix) text2'
FoundTerm i -> return (Just (BS.concat (reverse (BS.take i text : revprefix))))