Skip to content

Commit c00be44

Browse files
Merge pull request #600 from christopherm99/mac-timeout-2
Revert #599 and add new SocketOption `KeepInit`
2 parents 412cb41 + 1b01106 commit c00be44

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

Network/Socket.hs

+1
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ module Network.Socket (
149149
SendBuffer,
150150
RecvBuffer,
151151
KeepAlive,
152+
KeepInit,
152153
OOBInline,
153154
TimeToLive,
154155
MaxSegment,

Network/Socket/Options.hsc

+12-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ module Network.Socket.Options (
1212
SocketOption(SockOpt
1313
,UnsupportedSocketOption
1414
,AcceptConn,Debug,ReuseAddr,SoDomain,Type,SoProtocol,SoError
15-
,DontRoute,Broadcast,SendBuffer,RecvBuffer,KeepAlive,OOBInline
16-
,TimeToLive,MaxSegment,NoDelay,Cork,Linger,ReusePort
15+
,DontRoute,Broadcast,SendBuffer,RecvBuffer,KeepAlive,KeepInit
16+
,OOBInline,TimeToLive,MaxSegment,NoDelay,Cork,Linger,ReusePort
1717
,RecvLowWater,SendLowWater,RecvTimeOut,SendTimeOut
1818
,UseLoopBack,UserTimeout,IPv6Only
1919
,RecvIPv4TTL,RecvIPv4TOS,RecvIPv4PktInfo
@@ -77,6 +77,7 @@ socketOptionBijection =
7777
, (SendBuffer, "SendBuffer")
7878
, (RecvBuffer, "RecvBuffer")
7979
, (KeepAlive, "KeepAlive")
80+
, (KeepInit, "KeepInit")
8081
, (OOBInline, "OOBInline")
8182
, (Linger, "Linger")
8283
, (ReusePort, "ReusePort")
@@ -220,6 +221,15 @@ pattern KeepAlive = SockOpt (#const SOL_SOCKET) (#const SO_KEEPALIVE)
220221
#else
221222
pattern KeepAlive = SockOpt (-1) (-1)
222223
#endif
224+
-- | TCP_KEEPINIT
225+
pattern KeepInit :: SocketOption
226+
#ifdef TCP_KEEPINIT
227+
pattern KeepInit = SockOpt (#const IPPROTO_TCP) (#const TCP_KEEPINIT)
228+
#elif defined(TCP_CONNECTIONTIMEOUT)
229+
pattern KeepInit = SockOpt (#const IPPROTO_TCP) (#const TCP_CONNECTIONTIMEOUT)
230+
#else
231+
pattern KeepInit = SockOpt (-1) (-1)
232+
#endif
223233
-- | SO_OOBINLINE
224234
pattern OOBInline :: SocketOption
225235
#ifdef SO_OOBINLINE
@@ -299,8 +309,6 @@ pattern NoDelay = SockOpt (-1) (-1)
299309
pattern UserTimeout :: SocketOption
300310
#ifdef TCP_USER_TIMEOUT
301311
pattern UserTimeout = SockOpt (#const IPPROTO_TCP) (#const TCP_USER_TIMEOUT)
302-
#elif defined(TCP_CONNECTIONTIMEOUT)
303-
pattern UserTimeout = SockOpt (#const IPPROTO_TCP) (#const TCP_CONNECTIONTIMEOUT)
304312
#else
305313
pattern UserTimeout = SockOpt (-1) (-1)
306314
#endif

tests/Network/SocketSpec.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,8 @@ sockoptPatterns :: [SocketOption]
456456
sockoptPatterns = nub
457457
[UnsupportedSocketOption
458458
,Debug,ReuseAddr,SoDomain,Type,SoProtocol,SoError,DontRoute
459-
,Broadcast,SendBuffer,RecvBuffer,KeepAlive,OOBInline,TimeToLive
460-
,MaxSegment,NoDelay,Cork,Linger,ReusePort
459+
,Broadcast,SendBuffer,RecvBuffer,KeepAlive,KeepInit,OOBInline
460+
,TimeToLive,MaxSegment,NoDelay,Cork,Linger,ReusePort
461461
,RecvLowWater,SendLowWater,RecvTimeOut,SendTimeOut
462462
,UseLoopBack,UserTimeout,IPv6Only
463463
,RecvIPv4TTL,RecvIPv4TOS,RecvIPv4PktInfo

0 commit comments

Comments
 (0)