switch away from deprecated interface
Again the new stuff works back to network-2.4, so no need to adjust cabal bounds.
This commit is contained in:
parent
12db586469
commit
29b6ab467a
2 changed files with 7 additions and 4 deletions
|
@ -20,6 +20,8 @@ import Utility.Verifiable
|
|||
import Network.Multicast
|
||||
import Network.Info
|
||||
import Network.Socket
|
||||
import qualified Network.Socket.ByteString as B
|
||||
import qualified Data.ByteString.UTF8 as BU8
|
||||
import qualified Data.Map as M
|
||||
import Control.Concurrent
|
||||
|
||||
|
@ -63,10 +65,11 @@ multicastPairMsg repeats secret pairdata stage = go M.empty repeats
|
|||
withSocketsDo $ bracket setup cleanup use
|
||||
where
|
||||
setup = multicastSender (multicastAddress IPv4AddrClass) pairingPort
|
||||
cleanup (sock, _) = sClose sock -- FIXME does not work
|
||||
cleanup (sock, _) = close sock -- FIXME does not work
|
||||
use (sock, addr) = do
|
||||
setInterface sock (showAddr i)
|
||||
maybe noop (\s -> void $ sendTo sock s addr)
|
||||
maybe noop
|
||||
(\s -> void $ B.sendTo sock (BU8.fromString s) addr)
|
||||
(M.lookup i cache)
|
||||
updatecache cache [] = cache
|
||||
updatecache cache (i:is)
|
||||
|
|
|
@ -127,12 +127,12 @@ getSocket h = do
|
|||
go' :: Int -> AddrInfo -> IO Socket
|
||||
go' 0 _ = error "unable to bind to local socket"
|
||||
go' n addr = do
|
||||
r <- tryIO $ bracketOnError (open addr) sClose (useaddr addr)
|
||||
r <- tryIO $ bracketOnError (open addr) close (useaddr addr)
|
||||
either (const $ go' (pred n) addr) return r
|
||||
open addr = socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
|
||||
useaddr addr sock = do
|
||||
preparesocket sock
|
||||
bindSocket sock (addrAddress addr)
|
||||
bind sock (addrAddress addr)
|
||||
use sock
|
||||
#endif
|
||||
preparesocket sock = setSocketOption sock ReuseAddr 1
|
||||
|
|
Loading…
Reference in a new issue