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.Multicast
|
||||||
import Network.Info
|
import Network.Info
|
||||||
import Network.Socket
|
import Network.Socket
|
||||||
|
import qualified Network.Socket.ByteString as B
|
||||||
|
import qualified Data.ByteString.UTF8 as BU8
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import Control.Concurrent
|
import Control.Concurrent
|
||||||
|
|
||||||
|
@ -63,10 +65,11 @@ multicastPairMsg repeats secret pairdata stage = go M.empty repeats
|
||||||
withSocketsDo $ bracket setup cleanup use
|
withSocketsDo $ bracket setup cleanup use
|
||||||
where
|
where
|
||||||
setup = multicastSender (multicastAddress IPv4AddrClass) pairingPort
|
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
|
use (sock, addr) = do
|
||||||
setInterface sock (showAddr i)
|
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)
|
(M.lookup i cache)
|
||||||
updatecache cache [] = cache
|
updatecache cache [] = cache
|
||||||
updatecache cache (i:is)
|
updatecache cache (i:is)
|
||||||
|
|
|
@ -127,12 +127,12 @@ getSocket h = do
|
||||||
go' :: Int -> AddrInfo -> IO Socket
|
go' :: Int -> AddrInfo -> IO Socket
|
||||||
go' 0 _ = error "unable to bind to local socket"
|
go' 0 _ = error "unable to bind to local socket"
|
||||||
go' n addr = do
|
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
|
either (const $ go' (pred n) addr) return r
|
||||||
open addr = socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
|
open addr = socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
|
||||||
useaddr addr sock = do
|
useaddr addr sock = do
|
||||||
preparesocket sock
|
preparesocket sock
|
||||||
bindSocket sock (addrAddress addr)
|
bind sock (addrAddress addr)
|
||||||
use sock
|
use sock
|
||||||
#endif
|
#endif
|
||||||
preparesocket sock = setSocketOption sock ReuseAddr 1
|
preparesocket sock = setSocketOption sock ReuseAddr 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue