summaryrefslogtreecommitdiff
path: root/Presence/XMPPServer.hs
diff options
context:
space:
mode:
authorjoe <joe@jerkface.net>2014-03-10 21:35:37 -0400
committerjoe <joe@jerkface.net>2014-03-10 21:35:37 -0400
commit0a6d10b2d309e0bcbce2ae075d73f98acfe159e9 (patch)
tree8df77fb1f127460361b98b7f9670a73e740b62f3 /Presence/XMPPServer.hs
parent148d372a1a9d305f3b1e836bafbf3398dbc27494 (diff)
Threaded dns...
Diffstat (limited to 'Presence/XMPPServer.hs')
-rw-r--r--Presence/XMPPServer.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/Presence/XMPPServer.hs b/Presence/XMPPServer.hs
index aae5e97a..f029810d 100644
--- a/Presence/XMPPServer.hs
+++ b/Presence/XMPPServer.hs
@@ -68,6 +68,7 @@ import qualified Data.Set as Set
68import qualified System.Random 68import qualified System.Random
69import qualified Network.BSD as BSD 69import qualified Network.BSD as BSD
70import Data.Void (Void) 70import Data.Void (Void)
71import System.Endian (toBE32)
71 72
72import GetHostByAddr (getHostByAddr) 73import GetHostByAddr (getHostByAddr)
73import qualified Control.Concurrent.STM.UpdateStream as Slotted 74import qualified Control.Concurrent.STM.UpdateStream as Slotted
@@ -254,10 +255,15 @@ peerKeyToResolvedNames :: ConnectionKey -> IO [Text]
254peerKeyToResolvedNames k@(ClientKey { localAddress=addr }) = return [] 255peerKeyToResolvedNames k@(ClientKey { localAddress=addr }) = return []
255peerKeyToResolvedNames k@(PeerKey { callBackAddress=addr }) = do 256peerKeyToResolvedNames k@(PeerKey { callBackAddress=addr }) = do
256 handleIO_ (return []) $ do 257 handleIO_ (return []) $ do
257 ent <- getHostByAddr addr -- AF_UNSPEC addr 258 ent <- getHostByAddr (unmap6mapped4 addr) -- AF_UNSPEC addr
258 let names = BSD.hostName ent : BSD.hostAliases ent 259 let names = BSD.hostName ent : BSD.hostAliases ent
259 return $ map Text.pack $ nub names 260 return $ map Text.pack $ nub names
260 261
262unmap6mapped4 addr@(SockAddrInet6 port _ (0,0,0xFFFF,a) _) =
263 SockAddrInet port (toBE32 a)
264unmap6mapped4 addr = addr
265
266
261 267
262wlog :: String -> IO () 268wlog :: String -> IO ()
263wlog s = putStrLn s >> hFlush stdout 269wlog s = putStrLn s >> hFlush stdout