From 9b2e5b1f9ba6ab2b9e9e77008a1977265384ca8a Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Fri, 10 Mar 2017 11:24:14 +0700 Subject: [PATCH] Fix in brokerserver: trade sink --- src/ATrade/Broker/Server.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ATrade/Broker/Server.hs b/src/ATrade/Broker/Server.hs index aec9d21..68b537a 100644 --- a/src/ATrade/Broker/Server.hs +++ b/src/ATrade/Broker/Server.hs @@ -119,10 +119,13 @@ tradeSinkHandler c state tradeSinkEp = when (tradeSinkEp /= "") $ connect sock $ T.unpack tradeSinkEp timeoutMv <- newIORef False threadDelay 1000000 - whileM_ (andM [not <$> wasKilled, readIORef timeoutMv]) $ do + whileM_ (andM [not <$> wasKilled, not <$> readIORef timeoutMv]) $ do maybeTrade <- tryReadChan chan case maybeTrade of - Just trade -> sendMulti sock $ B.empty :| [encodeTrade trade] + Just trade -> do + sendMulti sock $ B.empty :| [encodeTrade trade] + _ <- receiveMulti sock + return () Nothing -> do threadDelay 1000000 sendMulti sock $ B.empty :| [BL.toStrict $ encode TradeSinkHeartBeat] @@ -169,8 +172,6 @@ brokerServerThread state = finally brokerServerThread' cleanup case shouldResend sqnum peerId lastPackMap of Just response -> do sendMessage sock peerId response -- Resend - _ <- receiveMulti sock - return () Nothing -> do -- Handle incoming request, send response response <- handleMessage peerId request