From 81b4217a56bcc8d21ee452b2bf42b003e9276be5 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Sun, 20 Mar 2022 19:13:35 +0000 Subject: [PATCH] confitional keep-alive parameters to work on mac --- src/Simplex/Messaging/Transport/KeepAlive.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Simplex/Messaging/Transport/KeepAlive.hs b/src/Simplex/Messaging/Transport/KeepAlive.hs index 476c2f2b6..0f7ee9b1a 100644 --- a/src/Simplex/Messaging/Transport/KeepAlive.hs +++ b/src/Simplex/Messaging/Transport/KeepAlive.hs @@ -1,4 +1,5 @@ {-# LANGUAGE CApiFFI #-} +{-# LANGUAGE CPP #-} {-# LANGUAGE NamedFieldPuns #-} module Simplex.Messaging.Transport.KeepAlive where @@ -8,11 +9,15 @@ import Network.Socket foreign import capi "netinet/tcp.h value TCP_KEEPCNT" tcpKeepCnt :: CInt -foreign import capi "netinet/tcp.h value TCP_KEEPIDLE" tcpKeepIdle :: CInt - foreign import capi "netinet/tcp.h value TCP_KEEPINTVL" tcpKeepIntvl :: CInt +#if defined(darwin_HOST_OS) +foreign import capi "netinet/tcp.h value TCP_KEEPALIVE" tcpKeepIdle :: CInt +foreign import capi "netinet/in.h value IPPROTO_TCP" solTcp :: CInt +#else +foreign import capi "netinet/tcp.h value TCP_KEEPIDLE" tcpKeepIdle :: CInt foreign import capi "netinet/tcp.h value SOL_TCP" solTcp :: CInt +#endif data KeepAliveOpts = KeepAliveOpts { keepCnt :: Int, @@ -31,10 +36,6 @@ defaultKeepAlive = setSocketKeepAlive :: Socket -> KeepAliveOpts -> IO () setSocketKeepAlive sock KeepAliveOpts {keepCnt, keepIdle, keepIntvl} = do setSocketOption sock KeepAlive 1 - putStrLn $ "solTcp: " <> show solTcp - putStrLn $ "tcpKeepCnt: " <> show tcpKeepCnt - putStrLn $ "tcpKeepIdle: " <> show tcpKeepIdle - putStrLn $ "tcpKeepIntvl: " <> show tcpKeepIntvl setSocketOption sock (SockOpt solTcp tcpKeepCnt) keepCnt setSocketOption sock (SockOpt solTcp tcpKeepIdle) keepIdle setSocketOption sock (SockOpt solTcp tcpKeepIntvl) keepIntvl