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:
Joey Hess 2016-09-05 14:39:44 -04:00
parent 12db586469
commit 29b6ab467a
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
2 changed files with 7 additions and 4 deletions

View file

@ -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)

View file

@ -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