Skip to content

Commit f8cb3e2

Browse files
committed
clean up recvMsgBuf
1 parent 861e768 commit f8cb3e2

File tree

4 files changed

+27
-20
lines changed

4 files changed

+27
-20
lines changed

Network/Socket/Buffer.hsc

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -257,28 +257,23 @@ recvBufMsg s bufsizs clen flags = do
257257
allocaBytes clen $ \ctrlPtr ->
258258
#if !defined(mingw32_HOST_OS)
259259
withIOVec bufsizs $ \(iovsPtr, iovsLen) -> do
260-
#else
261-
withWSABuf bufsizs $ \(wsaBPtr, wsaBLen) -> do
262-
#endif
263260
let msgHdr = MsgHdr {
264261
msgName = addrPtr
265262
, msgNameLen = fromIntegral addrSize
266-
#if !defined(mingw32_HOST_OS)
267263
, msgIov = iovsPtr
268264
, msgIovLen = fromIntegral iovsLen
265+
, msgCtrl = castPtr ctrlPtr
266+
, msgCtrlLen = fromIntegral clen
267+
, msgFlags = 0
269268
#else
269+
withWSABuf bufsizs $ \(wsaBPtr, wsaBLen) -> do
270+
let msgHdr = MsgHdr {
271+
msgName = addrPtr
272+
, msgNameLen = fromIntegral addrSize
270273
, msgBuffer = wsaBPtr
271274
, msgBufferLen = fromIntegral wsaBLen
272-
#endif
273-
#if !defined(mingw32_HOST_OS)
274-
, msgCtrl = castPtr ctrlPtr
275-
#else
276275
, msgCtrl = if clen == 0 then nullPtr else castPtr ctrlPtr
277-
#endif
278276
, msgCtrlLen = fromIntegral clen
279-
#if !defined(mingw32_HOST_OS)
280-
, msgFlags = 0
281-
#else
282277
, msgFlags = fromIntegral $ fromMsgFlag flags
283278
#endif
284279
}

Network/Socket/Internal.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ throwSocketErrorIfMinus1_ name act = do
167167
_ <- throwSocketErrorIfMinus1Retry name act
168168
return ()
169169

170+
throwSocketErrorIfMinus1ButRetry :: (Eq a, Num a) =>
171+
(CInt -> Bool) -> String -> IO a -> IO a
170172
throwSocketErrorIfMinus1ButRetry exempt name act = do
171173
r <- act
172174
if (r == -1)

appveyor.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ environment:
1212
DOCTEST: YES
1313
matrix:
1414
- GHCVER: 8.0.2
15-
- GHCVER: 8.2.2
16-
- GHCVER: 8.4.4
17-
- GHCVER: 8.6.5
18-
- GHCVER: 8.8.3
15+
# - GHCVER: 8.2.2
16+
# - GHCVER: 8.4.4
17+
# - GHCVER: 8.6.5
18+
# - GHCVER: 8.8.3
1919

2020
platform:
2121
# - x86 # We may want to test x86 as well, but it would double the 23min build time.
@@ -54,6 +54,9 @@ before_build:
5454
- cabal %CABOPTS% new-update -vverbose+nowrap
5555
- IF EXIST configure.ac bash -c "autoreconf -i"
5656

57+
on_finish:
58+
- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
59+
5760
deploy: off
5861

5962
build_script:

tests/Network/Socket/ByteStringSpec.hs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,18 @@ spec = do
229229

230230
it "receives control messages for IPv4" $ do
231231
let server sock = do
232-
whenSupported RecvIPv4TTL $ setSocketOption sock RecvIPv4TTL 1
233-
whenSupported RecvIPv4TOS $ setSocketOption sock RecvIPv4TOS 1
234-
whenSupported RecvIPv4PktInfo $ setSocketOption sock RecvIPv4PktInfo 1
232+
--whenSupported RecvIPv4TTL $ setSocketOption sock RecvIPv4TTL 1
233+
--whenSupported RecvIPv4TOS $ setSocketOption sock RecvIPv4TOS 1
234+
--whenSupported RecvIPv4PktInfo $ setSocketOption sock RecvIPv4PktInfo 1
235235
(_, _, cmsgs, _) <- recvMsg sock 1024 128 mempty
236-
236+
print RecvIPv4TTL
237+
print RecvIPv4TOS
238+
print RecvIPv4PktInfo
239+
print cmsgs
240+
print =<< getSocketOption sock RecvIPv4TOS
241+
print CmsgIdIPv4TTL
242+
print CmsgIdIPv4TOS
243+
print CmsgIdIPv4PktInfo
237244
whenSupported RecvIPv4TTL $
238245
((lookupCmsg CmsgIdIPv4TTL cmsgs >>= decodeCmsg) :: Maybe IPv4TTL) `shouldNotBe` Nothing
239246
whenSupported RecvIPv4TOS $

0 commit comments

Comments
 (0)