summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Crayne <jim.crayne@gmail.com>2018-11-04 03:25:21 -0500
committerJames Crayne <jim.crayne@gmail.com>2018-11-04 03:25:21 -0500
commit5f5aa818f8484570349e75a061d7b37cc9fe826a (patch)
tree9a574cc572d2caa4af9571a4776d207250e93add
parentdf787ee7eea3d0d6e0defdc4a7cbe646ca062feb (diff)
Preparation to move DPut to a separate project.
-rw-r--r--Connection/Tcp.hs1
-rw-r--r--HandshakeCache.hs1
-rw-r--r--Presence/ConfigFiles.hs1
-rw-r--r--Presence/ConsoleWriter.hs1
-rw-r--r--Presence/DNSCache.hs1
-rw-r--r--Presence/Presence.hs1
-rw-r--r--Presence/XMPPServer.hs1
-rw-r--r--ToxManager.hs1
-rw-r--r--dht-client.cabal1
-rw-r--r--examples/dhtd.hs4
-rw-r--r--examples/testTox.hs3
-rw-r--r--src/Control/Concurrent/Lifted/Instrument.hs1
-rw-r--r--src/DPut.hs55
-rw-r--r--src/Data/PacketBuffer.hs1
-rw-r--r--src/Network/Address.hs1
-rw-r--r--src/Network/BitTorrent/MainlineDHT.hs1
-rw-r--r--src/Network/Kademlia/Bootstrap.hs1
-rw-r--r--src/Network/Lossless.hs1
-rw-r--r--src/Network/QueryResponse.hs1
-rw-r--r--src/Network/StreamServer.hs1
-rw-r--r--src/Network/Tox.hs1
-rw-r--r--src/Network/Tox/AggregateSession.hs1
-rw-r--r--src/Network/Tox/ContactInfo.hs1
-rw-r--r--src/Network/Tox/Crypto/Handlers.hs1
-rw-r--r--src/Network/Tox/Crypto/Transport.hs1
-rw-r--r--src/Network/Tox/DHT/Handlers.hs1
-rw-r--r--src/Network/Tox/Handshake.hs1
-rw-r--r--src/Network/Tox/Onion/Handlers.hs1
-rw-r--r--src/Network/Tox/Onion/Transport.hs1
-rw-r--r--src/Network/Tox/Session.hs1
-rw-r--r--src/Network/UPNP.hs1
31 files changed, 57 insertions, 33 deletions
diff --git a/Connection/Tcp.hs b/Connection/Tcp.hs
index 97b78eda..a59f35d1 100644
--- a/Connection/Tcp.hs
+++ b/Connection/Tcp.hs
@@ -82,6 +82,7 @@ import Network.SocketLike hiding (sClose)
82import qualified Connection as G 82import qualified Connection as G
83 ;import Connection (Manager (..), PeerAddress (..), Policy (..)) 83 ;import Connection (Manager (..), PeerAddress (..), Policy (..))
84import DPut 84import DPut
85import DebugTag
85 86
86 87
87type Microseconds = Int 88type Microseconds = Int
diff --git a/HandshakeCache.hs b/HandshakeCache.hs
index c4dd090c..61735e8a 100644
--- a/HandshakeCache.hs
+++ b/HandshakeCache.hs
@@ -15,6 +15,7 @@ import Crypto.Tox
15import qualified Data.MinMaxPSQ as MM 15import qualified Data.MinMaxPSQ as MM
16 ;import Data.MinMaxPSQ (MinMaxPSQ') 16 ;import Data.MinMaxPSQ (MinMaxPSQ')
17import DPut 17import DPut
18import DebugTag
18import Network.Tox.Crypto.Transport (Handshake, HandshakeData (..)) 19import Network.Tox.Crypto.Transport (Handshake, HandshakeData (..))
19import Network.Tox.DHT.Handlers (createCookieSTM) 20import Network.Tox.DHT.Handlers (createCookieSTM)
20import Network.Tox.DHT.Transport (Cookie (..), CookieData (..), NodeInfo, 21import Network.Tox.DHT.Transport (Cookie (..), CookieData (..), NodeInfo,
diff --git a/Presence/ConfigFiles.hs b/Presence/ConfigFiles.hs
index 27a65bbf..d0164e33 100644
--- a/Presence/ConfigFiles.hs
+++ b/Presence/ConfigFiles.hs
@@ -17,6 +17,7 @@ import Data.List (partition)
17import Data.Maybe (catMaybes,isJust) 17import Data.Maybe (catMaybes,isJust)
18 18
19import DPut 19import DPut
20import DebugTag
20 21
21type User = ByteString 22type User = ByteString
22type Profile = String 23type Profile = String
diff --git a/Presence/ConsoleWriter.hs b/Presence/ConsoleWriter.hs
index 7c377d83..c6e1871a 100644
--- a/Presence/ConsoleWriter.hs
+++ b/Presence/ConsoleWriter.hs
@@ -36,6 +36,7 @@ import qualified Data.Text as Text
36import qualified Network.BSD as BSD 36import qualified Network.BSD as BSD
37 37
38import DPut 38import DPut
39import DebugTag
39import UTmp ( users2, utmp_file, UtmpRecord(..), UT_Type(..) ) 40import UTmp ( users2, utmp_file, UtmpRecord(..), UT_Type(..) )
40import FGConsole ( forkTTYMonitor ) 41import FGConsole ( forkTTYMonitor )
41import XMPPServer ( Stanza, makePresenceStanza, JabberShow(..), stanzaType 42import XMPPServer ( Stanza, makePresenceStanza, JabberShow(..), stanzaType
diff --git a/Presence/DNSCache.hs b/Presence/DNSCache.hs
index c5154e34..e28655c5 100644
--- a/Presence/DNSCache.hs
+++ b/Presence/DNSCache.hs
@@ -53,6 +53,7 @@ import ControlMaybe ( handleIO_ )
53import GetHostByAddr ( getHostByAddr ) 53import GetHostByAddr ( getHostByAddr )
54import InterruptibleDelay 54import InterruptibleDelay
55import DPut 55import DPut
56import DebugTag
56 57
57type TimeStamp = UTCTime 58type TimeStamp = UTCTime
58 59
diff --git a/Presence/Presence.hs b/Presence/Presence.hs
index cc3f488b..0ae9653f 100644
--- a/Presence/Presence.hs
+++ b/Presence/Presence.hs
@@ -53,6 +53,7 @@ import qualified Connection
53import Network.Tox.NodeId (key2id,parseNoSpamId,nospam64,NoSpamId(..),ToxProgress,ToxContact(..)) 53import Network.Tox.NodeId (key2id,parseNoSpamId,nospam64,NoSpamId(..),ToxProgress,ToxContact(..))
54import Crypto.Tox (decodeSecret) 54import Crypto.Tox (decodeSecret)
55import DPut 55import DPut
56import DebugTag
56 57
57{- 58{-
58isPeerKey :: ClientAddress -> Bool 59isPeerKey :: ClientAddress -> Bool
diff --git a/Presence/XMPPServer.hs b/Presence/XMPPServer.hs
index 2345cb67..42425c5e 100644
--- a/Presence/XMPPServer.hs
+++ b/Presence/XMPPServer.hs
@@ -105,6 +105,7 @@ import Data.String ( IsString(..) )
105import qualified System.Random 105import qualified System.Random
106import Data.Void (Void) 106import Data.Void (Void)
107import DPut 107import DPut
108import DebugTag
108 109
109-- peerport :: PortNumber 110-- peerport :: PortNumber
110-- peerport = 5269 111-- peerport = 5269
diff --git a/ToxManager.hs b/ToxManager.hs
index 4ea6736d..40377b62 100644
--- a/ToxManager.hs
+++ b/ToxManager.hs
@@ -28,6 +28,7 @@ import qualified Data.Text as T
28import Data.Time.Clock.POSIX 28import Data.Time.Clock.POSIX
29import Data.Word 29import Data.Word
30import DPut 30import DPut
31import DebugTag
31import Foreign.Storable 32import Foreign.Storable
32import HandshakeCache 33import HandshakeCache
33import Network.Address 34import Network.Address
diff --git a/dht-client.cabal b/dht-client.cabal
index da9e5366..38f4b8c6 100644
--- a/dht-client.cabal
+++ b/dht-client.cabal
@@ -70,6 +70,7 @@ library
70 , NondecreasingIndentation 70 , NondecreasingIndentation
71 hs-source-dirs: src, ., Presence 71 hs-source-dirs: src, ., Presence
72 exposed-modules: DPut 72 exposed-modules: DPut
73 DebugTag
73 Network.SocketLike 74 Network.SocketLike
74 Data.Digest.CRC32C 75 Data.Digest.CRC32C
75 Data.Bits.ByteString 76 Data.Bits.ByteString
diff --git a/examples/dhtd.hs b/examples/dhtd.hs
index 7c66fd73..27403971 100644
--- a/examples/dhtd.hs
+++ b/examples/dhtd.hs
@@ -113,6 +113,7 @@ import ToxToXMPP
113import XMPPToTox 113import XMPPToTox
114import qualified Connection.Tcp as Tcp (ConnectionEvent(..),noCleanUp,TCPStatus) 114import qualified Connection.Tcp as Tcp (ConnectionEvent(..),noCleanUp,TCPStatus)
115import DPut 115import DPut
116import DebugTag
116 117
117 118
118pshow :: Show a => a -> B.ByteString 119pshow :: Show a => a -> B.ByteString
@@ -361,6 +362,7 @@ clientSession s@Session{..} sock cnum h = do
361 case B.unsnoc x of 362 case B.unsnoc x of
362 Just (str,c) | isSpace c -> (str,False) 363 Just (str,c) | isSpace c -> (str,False)
363 _ -> (x,True) 364 _ -> (x,True)
365 allDebugTags :: [DebugTag]
364 allDebugTags = [minBound .. maxBound] 366 allDebugTags = [minBound .. maxBound]
365 showDebugTags = do 367 showDebugTags = do
366 vs <- mapM getVerbose allDebugTags 368 vs <- mapM getVerbose allDebugTags
@@ -1535,7 +1537,7 @@ main = do
1535 announcer <- forkAnnouncer 1537 announcer <- forkAnnouncer
1536 1538
1537 -- Default: quiet all tags (except XMisc). 1539 -- Default: quiet all tags (except XMisc).
1538 forM [minBound .. maxBound] setQuiet 1540 forM ([minBound .. maxBound]::[DebugTag]) setQuiet
1539 forM (verboseTags opts) setVerbose 1541 forM (verboseTags opts) setVerbose
1540 1542
1541 (quitBt,btdhts,btips,baddrs) <- case portbt opts of 1543 (quitBt,btdhts,btips,baddrs) <- case portbt opts of
diff --git a/examples/testTox.hs b/examples/testTox.hs
index cc8bd45f..e82ca2d3 100644
--- a/examples/testTox.hs
+++ b/examples/testTox.hs
@@ -17,6 +17,7 @@ import qualified Data.IntMap.Strict as IntMap
17import Data.Function 17import Data.Function
18import DebugUtil 18import DebugUtil
19import DPut 19import DPut
20import DebugTag
20import HandshakeCache 21import HandshakeCache
21import Network.QueryResponse 22import Network.QueryResponse
22import Network.Socket 23import Network.Socket
@@ -81,7 +82,7 @@ netCrypto tox me ni them = do
81 82
82main :: IO () 83main :: IO ()
83main = do 84main = do
84 mapM_ setVerbose [ minBound .. maxBound ] 85 mapM_ setVerbose ([ minBound .. maxBound ]::[DebugTag])
85 setQuiet XRoutes 86 setQuiet XRoutes
86 87
87 (udpA,udpB) <- testPairTransport 88 (udpA,udpB) <- testPairTransport
diff --git a/src/Control/Concurrent/Lifted/Instrument.hs b/src/Control/Concurrent/Lifted/Instrument.hs
index 680b264f..fc3b6369 100644
--- a/src/Control/Concurrent/Lifted/Instrument.hs
+++ b/src/Control/Concurrent/Lifted/Instrument.hs
@@ -21,6 +21,7 @@ import qualified GHC.Conc as GHC
21import Data.Time() 21import Data.Time()
22import Data.Time.Clock 22import Data.Time.Clock
23import DPut 23import DPut
24import DebugTag
24 25
25 26
26data PerThread = PerThread 27data PerThread = PerThread
diff --git a/src/DPut.hs b/src/DPut.hs
index 6fd69040..38e532d0 100644
--- a/src/DPut.hs
+++ b/src/DPut.hs
@@ -1,3 +1,5 @@
1{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE ScopedTypeVariables #-}
1module DPut where 3module DPut where
2 4
3import Control.Monad.IO.Class 5import Control.Monad.IO.Class
@@ -10,26 +12,10 @@ import qualified Data.ByteString.Char8 as B
10import qualified Data.Text as T 12import qualified Data.Text as T
11import qualified Data.Text.Encoding as T 13import qualified Data.Text.Encoding as T
12import Debug.Trace 14import Debug.Trace
15import Data.Typeable
16import Data.Dynamic
13 17
14-- | Debug Tags, add more as needed, but ensure XAnnounce is always first, XMisc last 18type IsDebugTag t = (Eq t, Ord t, Show t, Read t, Enum t, Bounded t,Typeable t)
15data DebugTag
16 = XAnnounce
17 | XBitTorrent
18 | XDHT
19 | XLan
20 | XMan
21 | XNetCrypto
22 | XNetCryptoOut
23 | XOnion
24 | XRoutes
25 | XPing
26 | XRefresh
27 | XJabber
28 | XMisc
29 | XNodeinfoSearch
30 | XUnexpected -- Used only for special anomalous errors that we didn't expect to happen.
31 | XUnused -- Never commit code that uses XUnused.
32 deriving (Eq, Ord, Show, Read, Enum, Bounded)
33 19
34appName :: String 20appName :: String
35appName = "toxmpp" 21appName = "toxmpp"
@@ -37,43 +23,50 @@ appName = "toxmpp"
37(<.>) :: String -> String -> String 23(<.>) :: String -> String -> String
38a <.> b = a ++ "." ++ b 24a <.> b = a ++ "." ++ b
39 25
40dput :: MonadIO m => DebugTag -> String -> m () 26dput :: (MonadIO m, IsDebugTag tag) => tag -> String -> m ()
41dput tag msg = liftIO $ debugM (appName <.> show tag) msg 27dput tag msg = liftIO $ debugM (appName <.> show tag) msg
42 28
43dputB :: MonadIO m => DebugTag -> B.ByteString -> m () 29dputB :: (MonadIO m, IsDebugTag tag) => tag -> B.ByteString -> m ()
44dputB tag msg = liftIO $ debugM (appName <.> show tag) (T.unpack . T.decodeUtf8 $ msg) 30dputB tag msg = liftIO $ debugM (appName <.> show tag) (T.unpack . T.decodeUtf8 $ msg)
45 31
46{-# NOINLINE verbosityMap #-} 32{-# NOINLINE verbosityMap #-}
47verbosityMap :: IORef (Map.Map DebugTag Bool) 33verbosityMap :: IORef (Map.Map TypeRep Dynamic)
48verbosityMap = unsafePerformIO $ newIORef (Map.empty) 34verbosityMap = unsafePerformIO $ newIORef (Map.empty)
49 35
50-- | Trace version of 'dput' works in arbitrary monad, using unsafePerformIO. 36-- | Trace version of 'dput' works in arbitrary monad, using unsafePerformIO.
51tput :: Applicative m => DebugTag -> String -> m () 37tput :: (Applicative m, IsDebugTag tag) => tag -> String -> m ()
52tput tag msg = 38tput tag msg =
53 let mp = unsafePerformIO $ readIORef verbosityMap 39 let mp = unsafePerformIO $ readIORef verbosityMap
54 in if fromMaybe True (Map.lookup tag mp) 40 in if maybe True (fromMaybe True . Map.lookup tag . flip fromDyn Map.empty) (Map.lookup (typeOf tag) mp)
55 then trace msg (pure ()) 41 then trace msg (pure ())
56 else pure () 42 else pure ()
57 43
58-- | like 'trace' but parameterized with 'DebugTag' 44-- | like 'trace' but parameterized with 'DebugTag'
59dtrace :: DebugTag -> String -> a -> a 45dtrace :: forall a tag. IsDebugTag tag => tag -> String -> a -> a
60dtrace tag msg result = let mp = unsafePerformIO $ readIORef verbosityMap 46dtrace tag msg result = let mp = unsafePerformIO $ readIORef verbosityMap
61 in if fromMaybe True (Map.lookup tag mp) 47 mp' :: Map.Map tag Bool
48 mp' = maybe Map.empty (flip fromDyn Map.empty) (Map.lookup (typeOf tag) mp)
49 in if fromMaybe True (Map.lookup tag mp')
62 then trace msg result 50 then trace msg result
63 else result 51 else result
64 52
65setTagLevel :: Priority -> DebugTag -> IO () 53setTagLevel :: forall tag. IsDebugTag tag => Priority -> tag -> IO ()
66setTagLevel level tag = do 54setTagLevel level tag = do
67 updateGlobalLogger (appName <.> show tag) (setLevel level) 55 updateGlobalLogger (appName <.> show tag) (setLevel level)
68 modifyIORef verbosityMap (Map.insert tag (level <= DEBUG)) 56 modifyIORef verbosityMap $ \mpByType -> do
57 case Map.lookup (typeOf tag) mpByType of
58 Nothing -> Map.insert (typeOf tag) (toDyn $ Map.fromList [(tag,(level <= DEBUG))]) mpByType
59 Just dyn -> let mpByTag :: Map.Map tag Bool
60 mpByTag = fromDyn dyn Map.empty
61 in Map.insert (typeOf tag) (toDyn $ Map.insert tag (level <= DEBUG) mpByTag) mpByType
69 62
70setQuiet :: DebugTag -> IO () 63setQuiet :: forall tag. IsDebugTag tag => tag -> IO ()
71setQuiet = setTagLevel WARNING 64setQuiet = setTagLevel WARNING
72 65
73setVerbose :: DebugTag -> IO () 66setVerbose :: forall tag. IsDebugTag tag => tag -> IO ()
74setVerbose = setTagLevel DEBUG 67setVerbose = setTagLevel DEBUG
75 68
76getVerbose :: DebugTag -> IO Bool 69getVerbose :: forall tag. IsDebugTag tag => tag -> IO Bool
77getVerbose tag = do 70getVerbose tag = do
78 logger <- getLogger (appName <.> show tag) 71 logger <- getLogger (appName <.> show tag)
79 case getLevel logger of 72 case getLevel logger of
diff --git a/src/Data/PacketBuffer.hs b/src/Data/PacketBuffer.hs
index 343cb04e..17745664 100644
--- a/src/Data/PacketBuffer.hs
+++ b/src/Data/PacketBuffer.hs
@@ -19,6 +19,7 @@ module Data.PacketBuffer
19 19
20import Data.PacketQueue as Q 20import Data.PacketQueue as Q
21import DPut 21import DPut
22import DebugTag
22 23
23import Control.Concurrent.STM 24import Control.Concurrent.STM
24import Control.Monad 25import Control.Monad
diff --git a/src/Network/Address.hs b/src/Network/Address.hs
index 3adfdc91..246463c0 100644
--- a/src/Network/Address.hs
+++ b/src/Network/Address.hs
@@ -130,6 +130,7 @@ import System.Locale (defaultTimeLocale)
130#endif 130#endif
131import System.Entropy 131import System.Entropy
132import DPut 132import DPut
133import DebugTag
133 134
134-- import Paths_bittorrent (version) 135-- import Paths_bittorrent (version)
135 136
diff --git a/src/Network/BitTorrent/MainlineDHT.hs b/src/Network/BitTorrent/MainlineDHT.hs
index c5b99234..573efcba 100644
--- a/src/Network/BitTorrent/MainlineDHT.hs
+++ b/src/Network/BitTorrent/MainlineDHT.hs
@@ -83,6 +83,7 @@ import Text.Read
83import System.Global6 83import System.Global6
84import Control.TriadCommittee 84import Control.TriadCommittee
85import DPut 85import DPut
86import DebugTag
86 87
87newtype NodeId = NodeId ByteString 88newtype NodeId = NodeId ByteString
88 deriving (Eq,Ord,ByteArrayAccess, Bits, Hashable) 89 deriving (Eq,Ord,ByteArrayAccess, Bits, Hashable)
diff --git a/src/Network/Kademlia/Bootstrap.hs b/src/Network/Kademlia/Bootstrap.hs
index 1a70a9c5..aad8a81e 100644
--- a/src/Network/Kademlia/Bootstrap.hs
+++ b/src/Network/Kademlia/Bootstrap.hs
@@ -32,6 +32,7 @@ import Data.Ord
32import System.Entropy 32import System.Entropy
33import System.Timeout 33import System.Timeout
34import DPut 34import DPut
35import DebugTag
35 36
36import qualified Data.Wrapper.PSQInt as Int 37import qualified Data.Wrapper.PSQInt as Int
37 ;import Data.Wrapper.PSQInt (pattern (:->)) 38 ;import Data.Wrapper.PSQInt (pattern (:->))
diff --git a/src/Network/Lossless.hs b/src/Network/Lossless.hs
index 4d5521fd..861792ab 100644
--- a/src/Network/Lossless.hs
+++ b/src/Network/Lossless.hs
@@ -18,6 +18,7 @@ import System.IO.Error
18 18
19import Data.PacketBuffer as PB 19import Data.PacketBuffer as PB
20import DPut 20import DPut
21import DebugTag
21import Network.QueryResponse 22import Network.QueryResponse
22 23
23#ifdef THREAD_DEBUG 24#ifdef THREAD_DEBUG
diff --git a/src/Network/QueryResponse.hs b/src/Network/QueryResponse.hs
index fdfbdbae..4e110ec3 100644
--- a/src/Network/QueryResponse.hs
+++ b/src/Network/QueryResponse.hs
@@ -38,6 +38,7 @@ import System.IO
38import System.IO.Error 38import System.IO.Error
39import System.Timeout 39import System.Timeout
40import DPut 40import DPut
41import DebugTag
41 42
42-- | Three methods are required to implement a datagram based query\/response protocol. 43-- | Three methods are required to implement a datagram based query\/response protocol.
43data TransportA err addr x y = Transport 44data TransportA err addr x y = Transport
diff --git a/src/Network/StreamServer.hs b/src/Network/StreamServer.hs
index 2734f0cd..afa35675 100644
--- a/src/Network/StreamServer.hs
+++ b/src/Network/StreamServer.hs
@@ -44,6 +44,7 @@ import Control.Concurrent.MVar (newMVar)
44 44
45import Network.SocketLike 45import Network.SocketLike
46import DPut 46import DPut
47import DebugTag
47 48
48data ServerHandle = ServerHandle Socket (Weak ThreadId) 49data ServerHandle = ServerHandle Socket (Weak ThreadId)
49 50
diff --git a/src/Network/Tox.hs b/src/Network/Tox.hs
index 88228c50..ddb22d50 100644
--- a/src/Network/Tox.hs
+++ b/src/Network/Tox.hs
@@ -61,6 +61,7 @@ import OnionRouter
61import Network.Tox.ContactInfo 61import Network.Tox.ContactInfo
62import Text.XXD 62import Text.XXD
63import DPut 63import DPut
64import DebugTag
64import Network.Tox.Avahi 65import Network.Tox.Avahi
65import Network.Tox.Session 66import Network.Tox.Session
66import Network.SessionTransports 67import Network.SessionTransports
diff --git a/src/Network/Tox/AggregateSession.hs b/src/Network/Tox/AggregateSession.hs
index 2323673a..b248c96f 100644
--- a/src/Network/Tox/AggregateSession.hs
+++ b/src/Network/Tox/AggregateSession.hs
@@ -41,6 +41,7 @@ import Connection (Status (..))
41import Crypto.Tox (PublicKey, toPublic) 41import Crypto.Tox (PublicKey, toPublic)
42import Data.Wrapper.PSQInt as PSQ 42import Data.Wrapper.PSQInt as PSQ
43import DPut 43import DPut
44import DebugTag
44import Network.QueryResponse 45import Network.QueryResponse
45import Network.Tox.Crypto.Transport (CryptoMessage (..), pattern KillPacket, 46import Network.Tox.Crypto.Transport (CryptoMessage (..), pattern KillPacket,
46 pattern ONLINE, pattern PING, 47 pattern ONLINE, pattern PING,
diff --git a/src/Network/Tox/ContactInfo.hs b/src/Network/Tox/ContactInfo.hs
index 387a6e47..e7cb48c1 100644
--- a/src/Network/Tox/ContactInfo.hs
+++ b/src/Network/Tox/ContactInfo.hs
@@ -15,6 +15,7 @@ import Network.Tox.DHT.Transport as DHT
15import Network.Tox.NodeId (id2key) 15import Network.Tox.NodeId (id2key)
16import Network.Tox.Onion.Transport as Onion 16import Network.Tox.Onion.Transport as Onion
17import DPut 17import DPut
18import DebugTag
18 19
19newtype ContactInfo extra = ContactInfo 20newtype ContactInfo extra = ContactInfo
20 -- | Map our toxid public key to an Account record. 21 -- | Map our toxid public key to an Account record.
diff --git a/src/Network/Tox/Crypto/Handlers.hs b/src/Network/Tox/Crypto/Handlers.hs
index bf01e1b5..94dde8e3 100644
--- a/src/Network/Tox/Crypto/Handlers.hs
+++ b/src/Network/Tox/Crypto/Handlers.hs
@@ -51,6 +51,7 @@ import qualified Data.IntMap.Strict as IntMap
51import Control.Concurrent.Supply 51import Control.Concurrent.Supply
52import Data.InOrOut 52import Data.InOrOut
53import DPut 53import DPut
54import DebugTag
54import Text.Printf 55import Text.Printf
55import Data.Bool 56import Data.Bool
56import Network.Tox.Handshake 57import Network.Tox.Handshake
diff --git a/src/Network/Tox/Crypto/Transport.hs b/src/Network/Tox/Crypto/Transport.hs
index 84929e63..555164f2 100644
--- a/src/Network/Tox/Crypto/Transport.hs
+++ b/src/Network/Tox/Crypto/Transport.hs
@@ -87,6 +87,7 @@ import Data.Text.Encoding as T
87import Data.Serialize as S 87import Data.Serialize as S
88import Control.Arrow 88import Control.Arrow
89import DPut 89import DPut
90import DebugTag
90import Data.PacketBuffer as PB 91import Data.PacketBuffer as PB
91 92
92showCryptoMsg :: Word32 -> CryptoMessage -> [Char] 93showCryptoMsg :: Word32 -> CryptoMessage -> [Char]
diff --git a/src/Network/Tox/DHT/Handlers.hs b/src/Network/Tox/DHT/Handlers.hs
index b1db9044..d7f05dbc 100644
--- a/src/Network/Tox/DHT/Handlers.hs
+++ b/src/Network/Tox/DHT/Handlers.hs
@@ -40,6 +40,7 @@ import Data.Maybe
40import Data.Serialize (Serialize) 40import Data.Serialize (Serialize)
41import Data.Word 41import Data.Word
42import DPut 42import DPut
43import DebugTag
43 44
44data TransactionId = TransactionId 45data TransactionId = TransactionId
45 { transactionKey :: Nonce8 -- ^ Used to lookup pending query. 46 { transactionKey :: Nonce8 -- ^ Used to lookup pending query.
diff --git a/src/Network/Tox/Handshake.hs b/src/Network/Tox/Handshake.hs
index 0ca99fe2..6df9edab 100644
--- a/src/Network/Tox/Handshake.hs
+++ b/src/Network/Tox/Handshake.hs
@@ -23,6 +23,7 @@ import Control.Concurrent
23import GHC.Conc (labelThread) 23import GHC.Conc (labelThread)
24#endif 24#endif
25import DPut 25import DPut
26import DebugTag
26 27
27 28
28anyRight :: Monad m => a -> [t] -> (t -> m (Either b b1)) -> m (Either a b1) 29anyRight :: Monad m => a -> [t] -> (t -> m (Either b b1)) -> m (Either a b1)
diff --git a/src/Network/Tox/Onion/Handlers.hs b/src/Network/Tox/Onion/Handlers.hs
index 80a6ae3a..0d8a9151 100644
--- a/src/Network/Tox/Onion/Handlers.hs
+++ b/src/Network/Tox/Onion/Handlers.hs
@@ -38,6 +38,7 @@ import Data.IP
38import Data.Maybe 38import Data.Maybe
39import Data.Functor.Identity 39import Data.Functor.Identity
40import DPut 40import DPut
41import DebugTag
41 42
42type Client r = QR.Client String PacketKind TransactionId (OnionDestination r) Message 43type Client r = QR.Client String PacketKind TransactionId (OnionDestination r) Message
43type Message = OnionMessage Identity 44type Message = OnionMessage Identity
diff --git a/src/Network/Tox/Onion/Transport.hs b/src/Network/Tox/Onion/Transport.hs
index 7ed9702a..10bd5a44 100644
--- a/src/Network/Tox/Onion/Transport.hs
+++ b/src/Network/Tox/Onion/Transport.hs
@@ -82,6 +82,7 @@ import Network.Socket
82import qualified Text.ParserCombinators.ReadP as RP 82import qualified Text.ParserCombinators.ReadP as RP
83import Data.Hashable 83import Data.Hashable
84import DPut 84import DPut
85import DebugTag
85 86
86type HandleLo a = Maybe (Either String (ByteString, SockAddr)) -> IO a 87type HandleLo a = Maybe (Either String (ByteString, SockAddr)) -> IO a
87 88
diff --git a/src/Network/Tox/Session.hs b/src/Network/Tox/Session.hs
index 968b3503..18e17fb6 100644
--- a/src/Network/Tox/Session.hs
+++ b/src/Network/Tox/Session.hs
@@ -20,6 +20,7 @@ import Crypto.Tox
20import Data.PacketBuffer (PacketInboundEvent (..)) 20import Data.PacketBuffer (PacketInboundEvent (..))
21import Data.Tox.Message 21import Data.Tox.Message
22import DPut 22import DPut
23import DebugTag
23import Network.Lossless 24import Network.Lossless
24import Network.QueryResponse 25import Network.QueryResponse
25import Network.SessionTransports 26import Network.SessionTransports
diff --git a/src/Network/UPNP.hs b/src/Network/UPNP.hs
index e89471c2..01d222bf 100644
--- a/src/Network/UPNP.hs
+++ b/src/Network/UPNP.hs
@@ -6,6 +6,7 @@ import Network.Socket
6import System.Directory 6import System.Directory
7import System.Process as Process 7import System.Process as Process
8import DPut 8import DPut
9import DebugTag
9 10
10protocols :: SocketType -> [String] 11protocols :: SocketType -> [String]
11protocols Stream = ["tcp"] 12protocols Stream = ["tcp"]