network-multicast 0.0.7 → 0.0.8
raw patch · 2 files changed
+16/−11 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- network-multicast.cabal +1/−1
- src/Network/Multicast.hsc +15/−10
network-multicast.cabal view
@@ -1,5 +1,5 @@ name: network-multicast-version: 0.0.7+version: 0.0.8 copyright: 2008-2012 Audrey Tang license: PublicDomain license-file: LICENSE
src/Network/Multicast.hsc view
@@ -30,6 +30,7 @@ import Foreign.Storable import Foreign.Marshal import Foreign.Ptr+import Control.Exception (bracketOnError) type TimeToLive = Int type LoopbackMode = Bool@@ -72,18 +73,22 @@ -- > print (msg, addr) in loop -- multicastReceiver :: HostName -> PortNumber -> IO Socket-multicastReceiver host port = do- proto <- getProtocolNumber "udp"- sock <- socket AF_INET Datagram proto-#ifdef SO_REUSEPORT- setSocketOption sock ReusePort 1+multicastReceiver host port = bracketOnError get close setup+ where+ get = do+ proto <- getProtocolNumber "udp"+ sock <- socket AF_INET Datagram proto+#if defined(SO_REUSEPORT) && ! defined (__linux__)+ setSocketOption sock ReusePort 1 #else- setSocketOption sock ReuseAddr 1+ setSocketOption sock ReuseAddr 1+ return sock #endif- (addrInfo:_) <- getAddrInfo Nothing (Just host) (Just $ show port)- bindSocket sock $ addrAddress addrInfo- addMembership sock host- return sock+ setup sock = do+ (addrInfo:_) <- getAddrInfo Nothing (Just host) (Just $ show port)+ bindSocket sock $ addrAddress addrInfo+ addMembership sock host+ return sock doSetSocketOption :: Storable a => CInt -> Socket -> a -> IO CInt doSetSocketOption ip_multicast_option (MkSocket s _ _ _ _) x = alloca $ \ptr -> do