Add SO_MARK support (#34)
* Add SO_MARK support * SO_MARK is now parametable Former-commit-id: d3a8db61378688b10741e37e9750962250d5b413 Former-commit-id: 3f2cfb1cf7bf25b7e98b908d7962c0d04c87b173 [formerly 4d7672c8b097390de2d4789a3612a7acdb251563] [formerly 84f02bd794a524c46a3303851b9090178c07e315 [formerly cc09d795159786b36d9e9f5ab48c92260cd0cdf5 [formerly cc09d795159786b36d9e9f5ab48c92260cd0cdf5 [formerly cc09d795159786b36d9e9f5ab48c92260cd0cdf5 [formerly 603b65e7d9fdd0aa421ef2cf5f8684eaca044dc0]]]]] Former-commit-id: cf75e5c7a77085f4c4bfce4da8c01ab9dcd94edf [formerly 4033012e5f39470e3c08b8918f686afe3dfb0200] Former-commit-id: a903f60697af67855408554260028dbea6fade14 Former-commit-id: 3115a5bc330ac8708eda9430b6f85ef5a0a8d1ce Former-commit-id: 6b2ba8627004dd0c916ecdaf9aea9cebb6de312e Former-commit-id: 5f65ff28217d015ac6a76a0803e677ac728563e4 [formerly 677120e2a339cc83c420f12354fbc4b1e3f7d91e] Former-commit-id: 0a91ab53293d5383b251f470962b640126dea526
This commit is contained in:
parent
bd3158c720
commit
2f48c7b95d
3 changed files with 13 additions and 0 deletions
|
@ -44,6 +44,8 @@ rrunTCPClient cfg app = bracket
|
|||
(s,addr) <- N.getSocketFamilyTCP (N.getHost cfg) (N.getPort cfg) (N.getAddrFamily cfg)
|
||||
N.setSocketOption s N.RecvBuffer defaultRecvBufferSize
|
||||
N.setSocketOption s N.SendBuffer defaultSendBufferSize
|
||||
so_mark_val <- readIORef sO_MARK_Value
|
||||
when (N.isSupportedSocketOption sO_MARK) (N.setSocketOption s sO_MARK so_mark_val)
|
||||
return (s,addr)
|
||||
)
|
||||
(\r -> catch (N.close $ fst r) (\(_ :: SomeException) -> return ()))
|
||||
|
|
|
@ -35,6 +35,13 @@ defaultRecvBufferSize = unsafeDupablePerformIO $
|
|||
defaultSendBufferSize :: Int
|
||||
defaultSendBufferSize = defaultRecvBufferSize
|
||||
|
||||
sO_MARK :: N.SocketOption
|
||||
sO_MARK = N.CustomSockOpt (fromIntegral 1, fromIntegral 36) -- https://elixir.bootlin.com/linux/latest/source/arch/alpha/include/uapi/asm/socket.h#L64
|
||||
|
||||
{-# NOINLINE sO_MARK_Value #-}
|
||||
sO_MARK_Value :: IORef Int
|
||||
sO_MARK_Value = unsafeDupablePerformIO $ (newIORef 131072)
|
||||
|
||||
data Protocol = UDP | TCP | STDIO | SOCKS5 deriving (Show, Read, Eq)
|
||||
|
||||
data StdioAppData = StdioAppData
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue