diff --git a/src/ATrade/Broker/Client.hs b/src/ATrade/Broker/Client.hs index f41893e..27cb1c5 100644 --- a/src/ATrade/Broker/Client.hs +++ b/src/ATrade/Broker/Client.hs @@ -43,10 +43,9 @@ brokerClientThread :: Context -> T.Text -> MVar BrokerServerRequest -> MVar Brok brokerClientThread ctx ep cmd resp comp killMv = finally brokerClientThread' cleanup where cleanup = putMVar comp () - brokerClientThread' = whileM_ (isNothing <$> tryReadMVar killMv) $ do - sock <- socket ctx Req + brokerClientThread' = whileM_ (isNothing <$> tryReadMVar killMv) $ withSocket ctx Req (\sock -> do connect sock $ T.unpack ep - finally (brokerClientThread'' sock) (close sock) + finally (brokerClientThread'' sock) (close sock)) brokerClientThread'' sock = whileM_ (isNothing <$> tryReadMVar killMv) $ do request <- takeMVar cmd send sock [] (BL.toStrict $ encode request) diff --git a/src/ATrade/Broker/Server.hs b/src/ATrade/Broker/Server.hs index 0c2f99e..9bbdc7b 100644 --- a/src/ATrade/Broker/Server.hs +++ b/src/ATrade/Broker/Server.hs @@ -135,7 +135,8 @@ brokerServerThread state = finally brokerServerThread' cleanup handleMessage peerId request = do bros <- brokers <$> readIORef state case request of - RequestSubmitOrder sqnum order -> + RequestSubmitOrder sqnum order -> do + debugM "Broker.Server" $ "Request: submit order:" ++ show request case findBrokerForAccount (orderAccountId order) bros of Just bro -> do oid <- nextOrderId @@ -145,7 +146,9 @@ brokerServerThread state = finally brokerServerThread' cleanup submitOrder bro order { orderId = oid } return $ ResponseOrderSubmitted oid - Nothing -> return $ ResponseError "Unknown account" + Nothing -> do + debugM "Broker.Server" $ "Unknown account: " ++ T.unpack (orderAccountId order) + return $ ResponseError "Unknown account" RequestCancelOrder sqnum oid -> do m <- orderToBroker <$> readIORef state case M.lookup oid m of