Skip to content

Commit d259e21

Browse files
committed
tweak for chunked in rawRest
1 parent b1053df commit d259e21

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/Transient/Move/Internals.hs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,7 +1301,7 @@ listen (node@(Node _ port _ _ )) = onAll $ do
13011301

13021302
mlog <- listenNew (fromIntegral port) conn <|> listenResponses :: TransIO (StreamData NodeMSG)
13031303
execLog mlog
1304-
1304+
return () !> "AFTER LISTEN1"
13051305

13061306

13071307
-- listen incoming requests
@@ -1889,7 +1889,7 @@ servePages (method,uri, headers) = do
18891889

18901890
--counter= unsafePerformIO $ newMVar 0
18911891
api :: TransIO BS.ByteString -> Cloud ()
1892-
api w= Cloud $ do
1892+
api w= Cloud $ do
18931893
Log rec _ _ _ <- getSData <|> return (Log False [][] 0)
18941894
if not rec then empty else do
18951895
conn <- getSData <|> error "api: Need a connection opened with initNode, listen, simpleWebApp"
@@ -2249,22 +2249,26 @@ rawREST node restmsg = do
22492249
liftIO $ SBS.sendMany sock $ BL.toChunks $ BS.pack $ restmsg
22502250
return () !> "after send"
22512251
str <- liftIO $ SBSL.getContents sock
2252-
2252+
return() !> ("RECEIVED", BS.take 50 str)
22532253
setParseString str
22542254
(method, uri, vers) <- getFirstLine
2255+
return () !> (method, uri, vers)
22552256
headers <- getHeaders
22562257
setState $ HTTPHeaders headers
22572258
return () !> ("HEADERSSSSSSS", headers)
22582259
case lookup "Transfer-Encoding" headers of
22592260
Just "chunked" -> do
2260-
-- SMore s <- dechunk
2261-
-- setParseString s
2262-
-- decodeIt
2261+
-- SMore s <- dechunk
2262+
-- setParseString s
2263+
-- r <- decodeIt
2264+
2265+
-- return r
2266+
22632267
-- dechunk |- decodeIt >>= async . return
22642268

22652269
-- return a stream of JSON elements
2266-
(dechunk |- decodeIt <|> ( threads 0 $ (many $ decodeIt) >>= choose))
2267-
2270+
dechunk |- decodeIt <|> ( threads 0 $ (many $ decodeIt) >>= choose)
2271+
22682272
_ ->
22692273
case fmap (read . BC.unpack) $ lookup "Content-Length" headers of
22702274

@@ -2275,7 +2279,7 @@ rawREST node restmsg = do
22752279
where
22762280

22772281
deserialize'' msg= case deserialize msg !> ("msg",msg) of
2278-
Nothing -> error "callRestService : type mismatch"
2282+
Nothing -> error "callRestService :response type mismatch"
22792283
Just r -> r
22802284

22812285
deserialize'= fst . deserialize''
@@ -2296,10 +2300,14 @@ rawREST node restmsg = do
22962300

22972301
--decodeIt= withData $ \s -> (return $ deserialize'' s)
22982302

2299-
hex= withData $ \s -> if BS.null s then empty else parsehex (-1) s
2303+
hex= withData $ \s -> parsehex (-1) s
23002304
where
2301-
parsehex v s= do
2302-
return () !> ("v,s",v, BS.take 15 s)
2305+
parsehex v s=
2306+
case (BS.null s,v) of
2307+
(True, -1) -> empty
2308+
(True,_) -> return (v, mempty)
2309+
_ -> do
2310+
23032311

23042312
let h= BS.head s
23052313

@@ -2326,7 +2334,7 @@ rawREST node restmsg = do
23262334
return () !> "SMORE"
23272335
return $ SMore r
23282336

2329-
<|> return SDone
2337+
<|> return SDone !> "SDone in dechunk"
23302338

23312339
#endif
23322340

0 commit comments

Comments
 (0)