diff --git a/src/ATrade/Broker/Client.hs b/src/ATrade/Broker/Client.hs index 5f8bbc8..edcace2 100644 --- a/src/ATrade/Broker/Client.hs +++ b/src/ATrade/Broker/Client.hs @@ -55,6 +55,7 @@ brokerClientThread ctx ep cmd resp comp killMv secParams = finally brokerClientT throwIO e else do putMVar resp (ResponseError "Response error")) $ withSocket ctx Req (\sock -> do + setLinger (restrict 0) sock debugM "Broker.Client" $ "Connecting to: " ++ show (T.unpack ep) case cspCertificate secParams of Just clientCert -> zapApplyCertificate clientCert sock diff --git a/src/ATrade/Broker/Server.hs b/src/ATrade/Broker/Server.hs index dd5b0a3..a59b40b 100644 --- a/src/ATrade/Broker/Server.hs +++ b/src/ATrade/Broker/Server.hs @@ -58,6 +58,7 @@ data BrokerServerHandle = BrokerServerHandle ThreadId ThreadId (MVar ()) (MVar ( startBrokerServer :: [BrokerInterface] -> Context -> T.Text -> T.Text -> ServerSecurityParams -> IO BrokerServerHandle startBrokerServer brokers c ep tradeSinkEp params = do sock <- socket c Router + setLinger (restrict 0) sock case sspDomain params of Just domain -> setZapDomain domain sock Nothing -> return () diff --git a/src/ATrade/QuoteSource/Client.hs b/src/ATrade/QuoteSource/Client.hs index e690d20..f5bba8a 100644 --- a/src/ATrade/QuoteSource/Client.hs +++ b/src/ATrade/QuoteSource/Client.hs @@ -51,6 +51,7 @@ startQuoteSourceClient chan tickers ctx endpoint = do return QuoteSourceClientHandle { tid = tid, completionMvar = compMv, killMVar = killMv } where clientThread lastHeartbeat killMv = whileM_ (isNothing <$> tryReadMVar killMv) $ withSocket ctx Sub (\sock -> do + setLinger (restrict 0) sock connect sock $ T.unpack endpoint debugM "QuoteSource.Client" $ "Tickers: " ++ show tickers mapM_ (subscribe sock . encodeUtf8) tickers diff --git a/src/ATrade/QuoteSource/Server.hs b/src/ATrade/QuoteSource/Server.hs index 3d9afbb..ff66d72 100644 --- a/src/ATrade/QuoteSource/Server.hs +++ b/src/ATrade/QuoteSource/Server.hs @@ -82,6 +82,7 @@ serverThread state = do startQuoteSourceServer :: BoundedChan QuoteSourceServerData -> Context -> T.Text -> IO QuoteSourceServer startQuoteSourceServer chan c ep = do sock <- socket c Pub + setLinger (restrict 0) sock bind sock $ T.unpack ep tid <- myThreadId hbTid <- forkIO $ forever $ do