diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2026-05-08 19:24:34 +0200 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2026-05-08 19:24:34 +0200 |
| commit | ba9d7504080fb4e9adfb2d33290190e06d2f8773 (patch) | |
| tree | 95e7f936e9c46a6ae9dfbe1b3c7ff556ab55e0f5 | |
| parent | 5ba0fc25d8bfdaedd1a8ff7743ed2b0224d34ff3 (diff) | |
mini-http: Fix parser
| -rw-r--r-- | mini-http/Network/HTTP/Server/Mini/Parser.hs | 8 |
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)))) |
