diff options
author | joe <joe@jerkface.net> | 2014-03-10 21:35:37 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2014-03-10 21:35:37 -0400 |
commit | 0a6d10b2d309e0bcbce2ae075d73f98acfe159e9 (patch) | |
tree | 8df77fb1f127460361b98b7f9670a73e740b62f3 /Presence/XMPPServer.hs | |
parent | 148d372a1a9d305f3b1e836bafbf3398dbc27494 (diff) |
Threaded dns...
Diffstat (limited to 'Presence/XMPPServer.hs')
-rw-r--r-- | Presence/XMPPServer.hs | 8 |
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 | |||
68 | import qualified System.Random | 68 | import qualified System.Random |
69 | import qualified Network.BSD as BSD | 69 | import qualified Network.BSD as BSD |
70 | import Data.Void (Void) | 70 | import Data.Void (Void) |
71 | import System.Endian (toBE32) | ||
71 | 72 | ||
72 | import GetHostByAddr (getHostByAddr) | 73 | import GetHostByAddr (getHostByAddr) |
73 | import qualified Control.Concurrent.STM.UpdateStream as Slotted | 74 | import qualified Control.Concurrent.STM.UpdateStream as Slotted |
@@ -254,10 +255,15 @@ peerKeyToResolvedNames :: ConnectionKey -> IO [Text] | |||
254 | peerKeyToResolvedNames k@(ClientKey { localAddress=addr }) = return [] | 255 | peerKeyToResolvedNames k@(ClientKey { localAddress=addr }) = return [] |
255 | peerKeyToResolvedNames k@(PeerKey { callBackAddress=addr }) = do | 256 | peerKeyToResolvedNames 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 | ||
262 | unmap6mapped4 addr@(SockAddrInet6 port _ (0,0,0xFFFF,a) _) = | ||
263 | SockAddrInet port (toBE32 a) | ||
264 | unmap6mapped4 addr = addr | ||
265 | |||
266 | |||
261 | 267 | ||
262 | wlog :: String -> IO () | 268 | wlog :: String -> IO () |
263 | wlog s = putStrLn s >> hFlush stdout | 269 | wlog s = putStrLn s >> hFlush stdout |