summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Crayne <jim.crayne@gmail.com>2019-09-28 13:43:29 -0400
committerJoe Crayne <joe@jerkface.net>2020-01-01 19:27:53 -0500
commit11987749fc6e6d3e53ea737d46d5ab13a16faeb8 (patch)
tree5716463275c2d3e902889db619908ded2a73971c
parentadd2c76bced51fde5e9917e7449ef52be70faf87 (diff)
Factor out some new libraries
word64-map: Data.Word64Map network-addr: Network.Address tox-crypto: Crypto.Tox lifted-concurrent: Control.Concurrent.Lifted.Instrument Control.Concurrent.Async.Lifted.Instrument psq-wrap: Data.Wrapper.PSQInt Data.Wrapper.PSQ minmax-psq: Data.MinMaxPSQ tasks: Control.Concurrent.Tasks kad: Network.Kademlia Network.Kademlia.Bootstrap Network.Kademlia.Routing Network.Kademlia.CommonAPI Network.Kademlia.Persistence Network.Kademlia.Search
-rw-r--r--dht/Announcer.hs (renamed from Announcer.hs)0
-rw-r--r--dht/Announcer/Tox.hs (renamed from Announcer/Tox.hs)0
-rw-r--r--dht/ChangeLog (renamed from ChangeLog)0
-rw-r--r--dht/Connection.hs (renamed from Connection.hs)0
-rw-r--r--dht/Connection/Tcp.hs (renamed from Connection/Tcp.hs)0
-rw-r--r--dht/Control/Concurrent/STM/StatusCache.hs (renamed from Control/Concurrent/STM/StatusCache.hs)0
-rw-r--r--dht/Control/Concurrent/STM/UpdateStream.hs (renamed from Control/Concurrent/STM/UpdateStream.hs)0
-rw-r--r--dht/Data/BitSyntax.hs (renamed from Data/BitSyntax.hs)0
-rw-r--r--dht/HandshakeCache.hs (renamed from HandshakeCache.hs)0
-rw-r--r--dht/InterruptibleDelay.hs (renamed from InterruptibleDelay.hs)0
-rw-r--r--dht/LICENSE (renamed from LICENSE)0
-rw-r--r--dht/LLCSNAP.hs (renamed from LLCSNAP.hs)0
-rw-r--r--dht/Makefile (renamed from Makefile)0
-rw-r--r--dht/OnionRouter.hs (renamed from OnionRouter.hs)0
-rw-r--r--dht/PingMachine.hs (renamed from PingMachine.hs)0
-rw-r--r--dht/Presence/ByteStringOperators.hs (renamed from Presence/ByteStringOperators.hs)0
-rw-r--r--dht/Presence/Chat.hs (renamed from Presence/Chat.hs)0
-rw-r--r--dht/Presence/ClientState.hs (renamed from Presence/ClientState.hs)0
-rw-r--r--dht/Presence/ConfigFiles.hs (renamed from Presence/ConfigFiles.hs)0
-rw-r--r--dht/Presence/ConnectionKey.hs (renamed from Presence/ConnectionKey.hs)0
-rw-r--r--dht/Presence/ConsoleWriter.hs (renamed from Presence/ConsoleWriter.hs)0
-rw-r--r--dht/Presence/Control/Concurrent/STM/Util.hs (renamed from Presence/Control/Concurrent/STM/Util.hs)0
-rw-r--r--dht/Presence/ControlMaybe.hs (renamed from Presence/ControlMaybe.hs)0
-rw-r--r--dht/Presence/DNSCache.hs (renamed from Presence/DNSCache.hs)0
-rw-r--r--dht/Presence/EventUtil.hs (renamed from Presence/EventUtil.hs)0
-rw-r--r--dht/Presence/FGConsole.hs (renamed from Presence/FGConsole.hs)0
-rw-r--r--dht/Presence/GetHostByAddr.hs (renamed from Presence/GetHostByAddr.hs)0
-rw-r--r--dht/Presence/IDMangler.hs (renamed from Presence/IDMangler.hs)0
-rw-r--r--dht/Presence/LocalChat.hs (renamed from Presence/LocalChat.hs)0
-rw-r--r--dht/Presence/LocalPeerCred.hs (renamed from Presence/LocalPeerCred.hs)0
-rw-r--r--dht/Presence/LockedChan.hs (renamed from Presence/LockedChan.hs)0
-rw-r--r--dht/Presence/Logging.hs (renamed from Presence/Logging.hs)0
-rw-r--r--dht/Presence/MUC.hs (renamed from Presence/MUC.hs)0
-rw-r--r--dht/Presence/Nesting.hs (renamed from Presence/Nesting.hs)0
-rw-r--r--dht/Presence/Paths.hs (renamed from Presence/Paths.hs)0
-rw-r--r--dht/Presence/PeerResolve.hs (renamed from Presence/PeerResolve.hs)0
-rw-r--r--dht/Presence/Presence.hs (renamed from Presence/Presence.hs)0
-rw-r--r--dht/Presence/SockAddr.hs (renamed from Presence/SockAddr.hs)0
-rw-r--r--dht/Presence/Stanza/Build.hs (renamed from Presence/Stanza/Build.hs)0
-rw-r--r--dht/Presence/Stanza/Parse.hs (renamed from Presence/Stanza/Parse.hs)0
-rw-r--r--dht/Presence/Stanza/Types.hs (renamed from Presence/Stanza/Types.hs)0
-rw-r--r--dht/Presence/UTmp.hs (renamed from Presence/UTmp.hs)0
-rw-r--r--dht/Presence/Util.hs (renamed from Presence/Util.hs)0
-rw-r--r--dht/Presence/XMPPServer.hs (renamed from Presence/XMPPServer.hs)0
-rw-r--r--dht/Presence/monitortty.c (renamed from Presence/monitortty.c)0
-rw-r--r--dht/Setup.hs (renamed from Setup.hs)0
-rw-r--r--dht/TCPProber.hs (renamed from TCPProber.hs)0
-rw-r--r--dht/TODO.org (renamed from TODO.org)0
-rw-r--r--dht/ToxChat.hs (renamed from ToxChat.hs)0
-rw-r--r--dht/ToxManager.hs (renamed from ToxManager.hs)0
-rw-r--r--dht/ToxToXMPP.hs (renamed from ToxToXMPP.hs)0
-rw-r--r--dht/TraversableT.hs (renamed from TraversableT.hs)0
-rw-r--r--dht/WifiHeader.hs (renamed from WifiHeader.hs)0
-rw-r--r--dht/XMPPToTox.hs (renamed from XMPPToTox.hs)0
-rwxr-xr-xdht/b (renamed from b)0
-rw-r--r--dht/bittorrent/README.md (renamed from bittorrent/README.md)0
-rw-r--r--dht/bittorrent/Readme.md (renamed from bittorrent/Readme.md)0
-rw-r--r--dht/bittorrent/bench/Main.hs (renamed from bittorrent/bench/Main.hs)0
-rw-r--r--dht/bittorrent/bench/Throughtput.hs (renamed from bittorrent/bench/Throughtput.hs)0
-rw-r--r--dht/bittorrent/bench/TorrentFile.hs (renamed from bittorrent/bench/TorrentFile.hs)0
-rw-r--r--dht/bittorrent/bittorrent.cabal (renamed from bittorrent/bittorrent.cabal)0
-rw-r--r--dht/bittorrent/dev/README.md (renamed from bittorrent/dev/README.md)0
-rwxr-xr-xdht/bittorrent/dev/add-sources.sh (renamed from bittorrent/dev/add-sources.sh)0
-rwxr-xr-xdht/bittorrent/dev/bench (renamed from bittorrent/dev/bench)0
-rwxr-xr-xdht/bittorrent/dev/test (renamed from bittorrent/dev/test)0
-rwxr-xr-xdht/bittorrent/dev/update-dependencies.sh (renamed from bittorrent/dev/update-dependencies.sh)0
-rw-r--r--dht/bittorrent/examples/Client.hs (renamed from bittorrent/examples/Client.hs)0
-rw-r--r--dht/bittorrent/examples/FS.hs (renamed from bittorrent/examples/FS.hs)0
-rw-r--r--dht/bittorrent/examples/MkTorrent.hs (renamed from bittorrent/examples/MkTorrent.hs)0
-rw-r--r--dht/bittorrent/res/dapper-dvd-amd64.iso.torrent (renamed from bittorrent/res/dapper-dvd-amd64.iso.torrent)bin64198 -> 64198 bytes
-rw-r--r--dht/bittorrent/res/pkg.torrent (renamed from bittorrent/res/pkg.torrent)bin32113 -> 32113 bytes
-rw-r--r--dht/bittorrent/res/testfile (renamed from bittorrent/res/testfile)bin8192 -> 8192 bytes
-rw-r--r--dht/bittorrent/res/testfile.torrent (renamed from bittorrent/res/testfile.torrent)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent.hs (renamed from bittorrent/src/Network/BitTorrent.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Client.hs (renamed from bittorrent/src/Network/BitTorrent/Client.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Client/Handle.hs (renamed from bittorrent/src/Network/BitTorrent/Client/Handle.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Client/Types.hs (renamed from bittorrent/src/Network/BitTorrent/Client/Types.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Block.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Block.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Connection.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Connection.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Download.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Download.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Manager.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Manager.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Message.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Message.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Exchange/Session.hs (renamed from bittorrent/src/Network/BitTorrent/Exchange/Session.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Internal/Cache.hs (renamed from bittorrent/src/Network/BitTorrent/Internal/Cache.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Internal/Progress.hs (renamed from bittorrent/src/Network/BitTorrent/Internal/Progress.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Internal/Types.hs (renamed from bittorrent/src/Network/BitTorrent/Internal/Types.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Readme.md (renamed from bittorrent/src/Network/BitTorrent/Readme.md)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/List.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/List.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/Message.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/Message.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/RPC.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/RPC.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs)0
-rw-r--r--dht/bittorrent/src/Network/BitTorrent/Tracker/Session.hs (renamed from bittorrent/src/Network/BitTorrent/Tracker/Session.hs)0
-rw-r--r--dht/bittorrent/src/System/Torrent/FileMap.hs (renamed from bittorrent/src/System/Torrent/FileMap.hs)0
-rw-r--r--dht/bittorrent/src/System/Torrent/Storage.hs (renamed from bittorrent/src/System/Torrent/Storage.hs)0
-rw-r--r--dht/bittorrent/src/System/Torrent/Tree.hs (renamed from bittorrent/src/System/Torrent/Tree.hs)0
-rw-r--r--dht/bittorrent/tests/Config.hs (renamed from bittorrent/tests/Config.hs)0
-rw-r--r--dht/bittorrent/tests/Data/TorrentSpec.hs (renamed from bittorrent/tests/Data/TorrentSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Main.hs (renamed from bittorrent/tests/Main.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/CoreSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/CoreSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/TestData.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/TestData.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/DHTSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/DHTSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs (renamed from bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs)0
-rw-r--r--dht/bittorrent/tests/Network/KRPC/MessageSpec.hs (renamed from bittorrent/tests/Network/KRPC/MessageSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/KRPC/MethodSpec.hs (renamed from bittorrent/tests/Network/KRPC/MethodSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Network/KRPCSpec.hs (renamed from bittorrent/tests/Network/KRPCSpec.hs)0
-rw-r--r--dht/bittorrent/tests/Readme.md (renamed from bittorrent/tests/Readme.md)0
-rw-r--r--dht/bittorrent/tests/Spec.hs (renamed from bittorrent/tests/Spec.hs)0
-rw-r--r--dht/bittorrent/tests/System/Torrent/FileMapSpec.hs (renamed from bittorrent/tests/System/Torrent/FileMapSpec.hs)0
-rw-r--r--dht/bittorrent/tests/System/Torrent/StorageSpec.hs (renamed from bittorrent/tests/System/Torrent/StorageSpec.hs)0
-rwxr-xr-xdht/bp (renamed from bp)0
-rwxr-xr-xdht/c (renamed from c)0
-rw-r--r--dht/cbits/cryptonite_bitfn.h (renamed from cbits/cryptonite_bitfn.h)0
-rw-r--r--dht/cbits/cryptonite_salsa.c (renamed from cbits/cryptonite_salsa.c)0
-rw-r--r--dht/cbits/cryptonite_salsa.h (renamed from cbits/cryptonite_salsa.h)0
-rw-r--r--dht/cbits/cryptonite_xsalsa.c (renamed from cbits/cryptonite_xsalsa.c)0
-rw-r--r--dht/cbits/cryptonite_xsalsa.h (renamed from cbits/cryptonite_xsalsa.h)0
-rwxr-xr-xdht/ci (renamed from ci)0
-rw-r--r--dht/conn-notes.txt (renamed from conn-notes.txt)0
-rw-r--r--dht/cryptonite-backport/Crypto/Cipher/Salsa.hs (renamed from cryptonite-backport/Crypto/Cipher/Salsa.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Cipher/XSalsa.hs (renamed from cryptonite-backport/Crypto/Cipher/XSalsa.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/ECC/Class.hs (renamed from cryptonite-backport/Crypto/ECC/Class.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/ECC/Simple/Prim.hs (renamed from cryptonite-backport/Crypto/ECC/Simple/Prim.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/ECC/Simple/Types.hs (renamed from cryptonite-backport/Crypto/ECC/Simple/Types.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Error/Types.hs (renamed from cryptonite-backport/Crypto/Error/Types.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Internal/ByteArray.hs (renamed from cryptonite-backport/Crypto/Internal/ByteArray.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Internal/Compat.hs (renamed from cryptonite-backport/Crypto/Internal/Compat.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Internal/DeepSeq.hs (renamed from cryptonite-backport/Crypto/Internal/DeepSeq.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/Internal/Imports.hs (renamed from cryptonite-backport/Crypto/Internal/Imports.hs)0
-rw-r--r--dht/cryptonite-backport/Crypto/PubKey/Curve25519.hs (renamed from cryptonite-backport/Crypto/PubKey/Curve25519.hs)0
-rw-r--r--dht/dht-client.cabal (renamed from dht-client.cabal)23
-rw-r--r--dht/doc/rfc6120.html (renamed from doc/rfc6120.html)0
-rw-r--r--dht/doc/rfc6121.html (renamed from doc/rfc6121.html)0
-rw-r--r--dht/examples/AliceBob.hs (renamed from examples/AliceBob.hs)0
-rw-r--r--dht/examples/atox.hs (renamed from examples/atox.hs)0
-rw-r--r--dht/examples/avahi.hs (renamed from examples/avahi.hs)0
-rw-r--r--dht/examples/consolation.hs (renamed from examples/consolation.hs)0
-rw-r--r--dht/examples/dht.hs (renamed from examples/dht.hs)0
-rw-r--r--dht/examples/dhtd.hs (renamed from examples/dhtd.hs)0
-rw-r--r--dht/examples/nalias.hs (renamed from examples/nalias.hs)0
-rw-r--r--dht/examples/nalias2.hs (renamed from examples/nalias2.hs)0
-rw-r--r--dht/examples/pjson.hs (renamed from examples/pjson.hs)0
-rw-r--r--dht/examples/pwrite.hs (renamed from examples/pwrite.hs)0
-rw-r--r--dht/examples/test-xmpp.hs (renamed from examples/test-xmpp.hs)0
-rw-r--r--dht/examples/testTox.hs (renamed from examples/testTox.hs)0
-rw-r--r--dht/examples/testcookie.hs (renamed from examples/testcookie.hs)0
-rw-r--r--dht/examples/toxrelay.hs (renamed from examples/toxrelay.hs)0
-rw-r--r--dht/examples/whosocket.hs (renamed from examples/whosocket.hs)0
-rw-r--r--dht/examples/xmppServer.hs (renamed from examples/xmppServer.hs)0
-rwxr-xr-xdht/g (renamed from g)0
-rwxr-xr-xdht/gi (renamed from gi)0
-rwxr-xr-xdht/graphdeps (renamed from graphdeps)0
-rw-r--r--dht/modules.svg (renamed from modules.svg)0
-rwxr-xr-xdht/p (renamed from p)0
-rw-r--r--dht/presence.cabal.bak (renamed from presence.cabal.bak)0
-rw-r--r--dht/presence.service (renamed from presence.service)0
-rw-r--r--dht/readpackets.hs (renamed from readpackets.hs)0
-rw-r--r--dht/src/Control/TriadCommittee.hs (renamed from src/Control/TriadCommittee.hs)0
-rw-r--r--dht/src/Crypto/Nonce.hs (renamed from src/Crypto/Nonce.hs)0
-rw-r--r--dht/src/Crypto/XEd25519.hs (renamed from src/Crypto/XEd25519.hs)0
-rw-r--r--dht/src/Crypto/XEd25519/FieldElement.hs (renamed from src/Crypto/XEd25519/FieldElement.hs)0
-rw-r--r--dht/src/DPut.hs (renamed from src/DPut.hs)0
-rw-r--r--dht/src/Data/BEncode/Pretty.hs (renamed from src/Data/BEncode/Pretty.hs)0
-rw-r--r--dht/src/Data/Bits/ByteString.hs (renamed from src/Data/Bits/ByteString.hs)0
-rw-r--r--dht/src/Data/Digest/CRC32C.hs (renamed from src/Data/Digest/CRC32C.hs)0
-rw-r--r--dht/src/Data/IntervalSet.hs (renamed from src/Data/IntervalSet.hs)0
-rw-r--r--dht/src/Data/PacketBuffer.hs (renamed from src/Data/PacketBuffer.hs)0
-rw-r--r--dht/src/Data/PacketQueue.hs (renamed from src/Data/PacketQueue.hs)0
-rw-r--r--dht/src/Data/Sized.hs (renamed from src/Data/Sized.hs)0
-rw-r--r--dht/src/Data/TableMethods.hs (renamed from src/Data/TableMethods.hs)0
-rw-r--r--dht/src/Data/Torrent.hs (renamed from src/Data/Torrent.hs)0
-rw-r--r--dht/src/Data/Tox/Message.hs (renamed from src/Data/Tox/Message.hs)0
-rw-r--r--dht/src/Data/Tox/Msg.hs (renamed from src/Data/Tox/Msg.hs)0
-rw-r--r--dht/src/Data/Tox/Onion.hs (renamed from src/Data/Tox/Onion.hs)0
-rw-r--r--dht/src/Data/Tox/Relay.hs (renamed from src/Data/Tox/Relay.hs)0
-rw-r--r--dht/src/DebugTag.hs (renamed from src/DebugTag.hs)0
-rw-r--r--dht/src/DebugUtil.hs (renamed from src/DebugUtil.hs)0
-rw-r--r--dht/src/Hans/Checksum.hs (renamed from src/Hans/Checksum.hs)0
-rw-r--r--dht/src/Network/BitTorrent/DHT/ContactInfo.hs (renamed from src/Network/BitTorrent/DHT/ContactInfo.hs)0
-rw-r--r--dht/src/Network/BitTorrent/DHT/Readme.md (renamed from src/Network/BitTorrent/DHT/Readme.md)0
-rw-r--r--dht/src/Network/BitTorrent/DHT/Token.hs (renamed from src/Network/BitTorrent/DHT/Token.hs)0
-rw-r--r--dht/src/Network/BitTorrent/MainlineDHT.hs (renamed from src/Network/BitTorrent/MainlineDHT.hs)0
-rw-r--r--dht/src/Network/BitTorrent/MainlineDHT/Symbols.hs (renamed from src/Network/BitTorrent/MainlineDHT/Symbols.hs)0
-rw-r--r--dht/src/Network/Lossless.hs (renamed from src/Network/Lossless.hs)0
-rw-r--r--dht/src/Network/QueryResponse.hs (renamed from src/Network/QueryResponse.hs)0
-rw-r--r--dht/src/Network/QueryResponse/TCP.hs (renamed from src/Network/QueryResponse/TCP.hs)0
-rw-r--r--dht/src/Network/SessionTransports.hs (renamed from src/Network/SessionTransports.hs)0
-rw-r--r--dht/src/Network/SocketLike.hs (renamed from src/Network/SocketLike.hs)0
-rw-r--r--dht/src/Network/StreamServer.hs (renamed from src/Network/StreamServer.hs)0
-rw-r--r--dht/src/Network/Tox.hs (renamed from src/Network/Tox.hs)0
-rw-r--r--dht/src/Network/Tox/AggregateSession.hs (renamed from src/Network/Tox/AggregateSession.hs)0
-rw-r--r--dht/src/Network/Tox/Avahi.hs (renamed from src/Network/Tox/Avahi.hs)0
-rw-r--r--dht/src/Network/Tox/ContactInfo.hs (renamed from src/Network/Tox/ContactInfo.hs)0
-rw-r--r--dht/src/Network/Tox/Crypto/Transport.hs (renamed from src/Network/Tox/Crypto/Transport.hs)0
-rw-r--r--dht/src/Network/Tox/DHT/Handlers.hs (renamed from src/Network/Tox/DHT/Handlers.hs)0
-rw-r--r--dht/src/Network/Tox/DHT/Transport.hs (renamed from src/Network/Tox/DHT/Transport.hs)0
-rw-r--r--dht/src/Network/Tox/Handshake.hs (renamed from src/Network/Tox/Handshake.hs)0
-rw-r--r--dht/src/Network/Tox/NodeId.hs (renamed from src/Network/Tox/NodeId.hs)0
-rw-r--r--dht/src/Network/Tox/Onion/Handlers.hs (renamed from src/Network/Tox/Onion/Handlers.hs)0
-rw-r--r--dht/src/Network/Tox/Onion/Transport.hs (renamed from src/Network/Tox/Onion/Transport.hs)0
-rw-r--r--dht/src/Network/Tox/Relay.hs (renamed from src/Network/Tox/Relay.hs)0
-rw-r--r--dht/src/Network/Tox/Session.hs (renamed from src/Network/Tox/Session.hs)0
-rw-r--r--dht/src/Network/Tox/TCP.hs (renamed from src/Network/Tox/TCP.hs)0
-rw-r--r--dht/src/Network/Tox/Transport.hs (renamed from src/Network/Tox/Transport.hs)0
-rw-r--r--dht/src/Network/UPNP.hs (renamed from src/Network/UPNP.hs)0
-rw-r--r--dht/src/StaticAssert.hs (renamed from src/StaticAssert.hs)0
-rw-r--r--dht/src/System/Global6.hs (renamed from src/System/Global6.hs)0
-rw-r--r--dht/src/Text/XXD.hs (renamed from src/Text/XXD.hs)0
-rw-r--r--dht/stack.yaml (renamed from stack.yaml)0
-rwxr-xr-xdht/t (renamed from t)0
-rw-r--r--dht/todo.txt (renamed from todo.txt)0
-rwxr-xr-xdht/vnet/build.sh (renamed from vnet/build.sh)0
-rwxr-xr-xdht/vnet/clean.sh (renamed from vnet/clean.sh)0
-rwxr-xr-xdht/vnet/everywhere.sh (renamed from vnet/everywhere.sh)0
-rwxr-xr-xdht/vnet/mkroutes.sh (renamed from vnet/mkroutes.sh)0
-rwxr-xr-xdht/vnet/run.sh (renamed from vnet/run.sh)0
-rwxr-xr-xdht/vnet/screen-everywhere.sh (renamed from vnet/screen-everywhere.sh)0
-rwxr-xr-xdht/vnet/screen-shell.sh (renamed from vnet/screen-shell.sh)0
-rwxr-xr-xdht/vnet/show-links.sh (renamed from vnet/show-links.sh)0
-rw-r--r--dput-hslogger/CHANGELOG.md5
-rw-r--r--dput-hslogger/LICENSE30
-rw-r--r--dput-hslogger/Setup.hs2
-rw-r--r--dput-hslogger/dput-hslogger.cabal24
-rw-r--r--dput-hslogger/src/DPut.hs75
-rw-r--r--kad/CHANGELOG.md5
-rw-r--r--kad/LICENSE30
-rw-r--r--kad/Setup.hs2
-rw-r--r--kad/kad.cabal76
-rw-r--r--kad/src/DebugTag.hs24
-rw-r--r--kad/src/Network/Kademlia.hs (renamed from src/Network/Kademlia.hs)0
-rw-r--r--kad/src/Network/Kademlia/Bootstrap.hs (renamed from src/Network/Kademlia/Bootstrap.hs)2
-rw-r--r--kad/src/Network/Kademlia/CommonAPI.hs (renamed from src/Network/Kademlia/CommonAPI.hs)0
-rw-r--r--kad/src/Network/Kademlia/Persistence.hs (renamed from src/Network/Kademlia/Persistence.hs)1
-rw-r--r--kad/src/Network/Kademlia/Routing.hs (renamed from src/Network/Kademlia/Routing.hs)1
-rw-r--r--kad/src/Network/Kademlia/Search.hs (renamed from src/Network/Kademlia/Search.hs)0
-rw-r--r--lifted-concurrent/CHANGELOG.md5
-rw-r--r--lifted-concurrent/LICENSE30
-rw-r--r--lifted-concurrent/Setup.hs2
-rw-r--r--lifted-concurrent/lifted-concurrent.cabal34
-rw-r--r--lifted-concurrent/src/Control/Concurrent/Async/Lifted/Instrument.hs (renamed from src/Control/Concurrent/Async/Lifted/Instrument.hs)0
-rw-r--r--lifted-concurrent/src/Control/Concurrent/Lifted/Instrument.hs (renamed from src/Control/Concurrent/Lifted/Instrument.hs)0
-rw-r--r--lifted-concurrent/src/DebugTag.hs24
-rw-r--r--minmax-psq/CHANGELOG.md5
-rw-r--r--minmax-psq/LICENSE30
-rw-r--r--minmax-psq/Setup.hs2
-rw-r--r--minmax-psq/minmax-psq.cabal24
-rw-r--r--minmax-psq/src/Data/MinMaxPSQ.hs (renamed from src/Data/MinMaxPSQ.hs)0
-rw-r--r--network-addr/CHANGELOG.md5
-rw-r--r--network-addr/LICENSE30
-rw-r--r--network-addr/Setup.hs2
-rw-r--r--network-addr/network-addr.cabal52
-rw-r--r--network-addr/src/DebugTag.hs24
-rw-r--r--network-addr/src/Network/Address.hs (renamed from src/Network/Address.hs)7
-rw-r--r--psq-wrap/CHANGELOG.md5
-rw-r--r--psq-wrap/LICENSE30
-rw-r--r--psq-wrap/Setup.hs2
-rw-r--r--psq-wrap/psq-wrap.cabal30
-rw-r--r--psq-wrap/src/Data/Wrapper/PSQ.hs (renamed from src/Data/Wrapper/PSQ.hs)0
-rw-r--r--psq-wrap/src/Data/Wrapper/PSQInt.hs (renamed from src/Data/Wrapper/PSQInt.hs)0
-rw-r--r--sensible-directory/Setup.hs2
-rw-r--r--sensible-directory/sensible-directory.cabal30
-rw-r--r--sensible-directory/src/SensibleDir.hs121
-rw-r--r--tasks/CHANGELOG.md5
-rw-r--r--tasks/LICENSE30
-rw-r--r--tasks/Setup.hs2
-rw-r--r--tasks/src/Control/Concurrent/Tasks.hs (renamed from src/Control/Concurrent/Tasks.hs)0
-rw-r--r--tasks/tasks.cabal29
-rw-r--r--tox-crypto/CHANGELOG.md5
-rw-r--r--tox-crypto/CHANGELOG.md.save05
-rw-r--r--tox-crypto/LICENSE30
-rw-r--r--tox-crypto/LICENSE.save030
-rw-r--r--tox-crypto/Setup.hs2
-rw-r--r--tox-crypto/Setup.hs.save02
-rw-r--r--tox-crypto/src/Crypto/Tox.hs (renamed from src/Crypto/Tox.hs)1
-rw-r--r--tox-crypto/src/DebugTag.hs24
-rw-r--r--tox-crypto/tox-crypto.cabal59
-rw-r--r--word64-map/CHANGELOG.md5
-rw-r--r--word64-map/LICENSE30
-rw-r--r--word64-map/Setup.hs2
-rw-r--r--word64-map/src/Data/Word64Map.hs (renamed from src/Data/Word64Map.hs)0
-rw-r--r--word64-map/word64-map.cabal26
304 files changed, 1065 insertions, 18 deletions
diff --git a/Announcer.hs b/dht/Announcer.hs
index c6a04cb1..c6a04cb1 100644
--- a/Announcer.hs
+++ b/dht/Announcer.hs
diff --git a/Announcer/Tox.hs b/dht/Announcer/Tox.hs
index f8343f8d..f8343f8d 100644
--- a/Announcer/Tox.hs
+++ b/dht/Announcer/Tox.hs
diff --git a/ChangeLog b/dht/ChangeLog
index 60a1006c..60a1006c 100644
--- a/ChangeLog
+++ b/dht/ChangeLog
diff --git a/Connection.hs b/dht/Connection.hs
index 9a4077f5..9a4077f5 100644
--- a/Connection.hs
+++ b/dht/Connection.hs
diff --git a/Connection/Tcp.hs b/dht/Connection/Tcp.hs
index fd5d333b..fd5d333b 100644
--- a/Connection/Tcp.hs
+++ b/dht/Connection/Tcp.hs
diff --git a/Control/Concurrent/STM/StatusCache.hs b/dht/Control/Concurrent/STM/StatusCache.hs
index d1c977ae..d1c977ae 100644
--- a/Control/Concurrent/STM/StatusCache.hs
+++ b/dht/Control/Concurrent/STM/StatusCache.hs
diff --git a/Control/Concurrent/STM/UpdateStream.hs b/dht/Control/Concurrent/STM/UpdateStream.hs
index 227ffef4..227ffef4 100644
--- a/Control/Concurrent/STM/UpdateStream.hs
+++ b/dht/Control/Concurrent/STM/UpdateStream.hs
diff --git a/Data/BitSyntax.hs b/dht/Data/BitSyntax.hs
index 6d14d0c1..6d14d0c1 100644
--- a/Data/BitSyntax.hs
+++ b/dht/Data/BitSyntax.hs
diff --git a/HandshakeCache.hs b/dht/HandshakeCache.hs
index 61735e8a..61735e8a 100644
--- a/HandshakeCache.hs
+++ b/dht/HandshakeCache.hs
diff --git a/InterruptibleDelay.hs b/dht/InterruptibleDelay.hs
index b2683441..b2683441 100644
--- a/InterruptibleDelay.hs
+++ b/dht/InterruptibleDelay.hs
diff --git a/LICENSE b/dht/LICENSE
index 4c30139e..4c30139e 100644
--- a/LICENSE
+++ b/dht/LICENSE
diff --git a/LLCSNAP.hs b/dht/LLCSNAP.hs
index 417c36ba..417c36ba 100644
--- a/LLCSNAP.hs
+++ b/dht/LLCSNAP.hs
diff --git a/Makefile b/dht/Makefile
index e2eba85f..e2eba85f 100644
--- a/Makefile
+++ b/dht/Makefile
diff --git a/OnionRouter.hs b/dht/OnionRouter.hs
index 57c8ba35..57c8ba35 100644
--- a/OnionRouter.hs
+++ b/dht/OnionRouter.hs
diff --git a/PingMachine.hs b/dht/PingMachine.hs
index ccf5b1d3..ccf5b1d3 100644
--- a/PingMachine.hs
+++ b/dht/PingMachine.hs
diff --git a/Presence/ByteStringOperators.hs b/dht/Presence/ByteStringOperators.hs
index e8485134..e8485134 100644
--- a/Presence/ByteStringOperators.hs
+++ b/dht/Presence/ByteStringOperators.hs
diff --git a/Presence/Chat.hs b/dht/Presence/Chat.hs
index 03bea44b..03bea44b 100644
--- a/Presence/Chat.hs
+++ b/dht/Presence/Chat.hs
diff --git a/Presence/ClientState.hs b/dht/Presence/ClientState.hs
index 08cc54ed..08cc54ed 100644
--- a/Presence/ClientState.hs
+++ b/dht/Presence/ClientState.hs
diff --git a/Presence/ConfigFiles.hs b/dht/Presence/ConfigFiles.hs
index d0164e33..d0164e33 100644
--- a/Presence/ConfigFiles.hs
+++ b/dht/Presence/ConfigFiles.hs
diff --git a/Presence/ConnectionKey.hs b/dht/Presence/ConnectionKey.hs
index ad4eeab7..ad4eeab7 100644
--- a/Presence/ConnectionKey.hs
+++ b/dht/Presence/ConnectionKey.hs
diff --git a/Presence/ConsoleWriter.hs b/dht/Presence/ConsoleWriter.hs
index c6e1871a..c6e1871a 100644
--- a/Presence/ConsoleWriter.hs
+++ b/dht/Presence/ConsoleWriter.hs
diff --git a/Presence/Control/Concurrent/STM/Util.hs b/dht/Presence/Control/Concurrent/STM/Util.hs
index 4be3cff5..4be3cff5 100644
--- a/Presence/Control/Concurrent/STM/Util.hs
+++ b/dht/Presence/Control/Concurrent/STM/Util.hs
diff --git a/Presence/ControlMaybe.hs b/dht/Presence/ControlMaybe.hs
index a101d667..a101d667 100644
--- a/Presence/ControlMaybe.hs
+++ b/dht/Presence/ControlMaybe.hs
diff --git a/Presence/DNSCache.hs b/dht/Presence/DNSCache.hs
index e28655c5..e28655c5 100644
--- a/Presence/DNSCache.hs
+++ b/dht/Presence/DNSCache.hs
diff --git a/Presence/EventUtil.hs b/dht/Presence/EventUtil.hs
index 908e09e0..908e09e0 100644
--- a/Presence/EventUtil.hs
+++ b/dht/Presence/EventUtil.hs
diff --git a/Presence/FGConsole.hs b/dht/Presence/FGConsole.hs
index 03aaebf2..03aaebf2 100644
--- a/Presence/FGConsole.hs
+++ b/dht/Presence/FGConsole.hs
diff --git a/Presence/GetHostByAddr.hs b/dht/Presence/GetHostByAddr.hs
index 45bca5e9..45bca5e9 100644
--- a/Presence/GetHostByAddr.hs
+++ b/dht/Presence/GetHostByAddr.hs
diff --git a/Presence/IDMangler.hs b/dht/Presence/IDMangler.hs
index 664d4f54..664d4f54 100644
--- a/Presence/IDMangler.hs
+++ b/dht/Presence/IDMangler.hs
diff --git a/Presence/LocalChat.hs b/dht/Presence/LocalChat.hs
index eab54a03..eab54a03 100644
--- a/Presence/LocalChat.hs
+++ b/dht/Presence/LocalChat.hs
diff --git a/Presence/LocalPeerCred.hs b/dht/Presence/LocalPeerCred.hs
index f68557e8..f68557e8 100644
--- a/Presence/LocalPeerCred.hs
+++ b/dht/Presence/LocalPeerCred.hs
diff --git a/Presence/LockedChan.hs b/dht/Presence/LockedChan.hs
index eac2b5ad..eac2b5ad 100644
--- a/Presence/LockedChan.hs
+++ b/dht/Presence/LockedChan.hs
diff --git a/Presence/Logging.hs b/dht/Presence/Logging.hs
index b997d341..b997d341 100644
--- a/Presence/Logging.hs
+++ b/dht/Presence/Logging.hs
diff --git a/Presence/MUC.hs b/dht/Presence/MUC.hs
index 639e834b..639e834b 100644
--- a/Presence/MUC.hs
+++ b/dht/Presence/MUC.hs
diff --git a/Presence/Nesting.hs b/dht/Presence/Nesting.hs
index cf47c9fc..cf47c9fc 100644
--- a/Presence/Nesting.hs
+++ b/dht/Presence/Nesting.hs
diff --git a/Presence/Paths.hs b/dht/Presence/Paths.hs
index 9d51b66e..9d51b66e 100644
--- a/Presence/Paths.hs
+++ b/dht/Presence/Paths.hs
diff --git a/Presence/PeerResolve.hs b/dht/Presence/PeerResolve.hs
index 62becfe1..62becfe1 100644
--- a/Presence/PeerResolve.hs
+++ b/dht/Presence/PeerResolve.hs
diff --git a/Presence/Presence.hs b/dht/Presence/Presence.hs
index 8cdd1cdc..8cdd1cdc 100644
--- a/Presence/Presence.hs
+++ b/dht/Presence/Presence.hs
diff --git a/Presence/SockAddr.hs b/dht/Presence/SockAddr.hs
index b5fbf16e..b5fbf16e 100644
--- a/Presence/SockAddr.hs
+++ b/dht/Presence/SockAddr.hs
diff --git a/Presence/Stanza/Build.hs b/dht/Presence/Stanza/Build.hs
index 16552428..16552428 100644
--- a/Presence/Stanza/Build.hs
+++ b/dht/Presence/Stanza/Build.hs
diff --git a/Presence/Stanza/Parse.hs b/dht/Presence/Stanza/Parse.hs
index 58bf7c51..58bf7c51 100644
--- a/Presence/Stanza/Parse.hs
+++ b/dht/Presence/Stanza/Parse.hs
diff --git a/Presence/Stanza/Types.hs b/dht/Presence/Stanza/Types.hs
index 7275c8ab..7275c8ab 100644
--- a/Presence/Stanza/Types.hs
+++ b/dht/Presence/Stanza/Types.hs
diff --git a/Presence/UTmp.hs b/dht/Presence/UTmp.hs
index fcfe529a..fcfe529a 100644
--- a/Presence/UTmp.hs
+++ b/dht/Presence/UTmp.hs
diff --git a/Presence/Util.hs b/dht/Presence/Util.hs
index e19b35fd..e19b35fd 100644
--- a/Presence/Util.hs
+++ b/dht/Presence/Util.hs
diff --git a/Presence/XMPPServer.hs b/dht/Presence/XMPPServer.hs
index fe099fb8..fe099fb8 100644
--- a/Presence/XMPPServer.hs
+++ b/dht/Presence/XMPPServer.hs
diff --git a/Presence/monitortty.c b/dht/Presence/monitortty.c
index 7582aa56..7582aa56 100644
--- a/Presence/monitortty.c
+++ b/dht/Presence/monitortty.c
diff --git a/Setup.hs b/dht/Setup.hs
index bd7c6d3e..bd7c6d3e 100644
--- a/Setup.hs
+++ b/dht/Setup.hs
diff --git a/TCPProber.hs b/dht/TCPProber.hs
index 5e011116..5e011116 100644
--- a/TCPProber.hs
+++ b/dht/TCPProber.hs
diff --git a/TODO.org b/dht/TODO.org
index dbba5c8c..dbba5c8c 100644
--- a/TODO.org
+++ b/dht/TODO.org
diff --git a/ToxChat.hs b/dht/ToxChat.hs
index fba5d33b..fba5d33b 100644
--- a/ToxChat.hs
+++ b/dht/ToxChat.hs
diff --git a/ToxManager.hs b/dht/ToxManager.hs
index dceb9210..dceb9210 100644
--- a/ToxManager.hs
+++ b/dht/ToxManager.hs
diff --git a/ToxToXMPP.hs b/dht/ToxToXMPP.hs
index 1420c642..1420c642 100644
--- a/ToxToXMPP.hs
+++ b/dht/ToxToXMPP.hs
diff --git a/TraversableT.hs b/dht/TraversableT.hs
index c0e40853..c0e40853 100644
--- a/TraversableT.hs
+++ b/dht/TraversableT.hs
diff --git a/WifiHeader.hs b/dht/WifiHeader.hs
index 90e77003..90e77003 100644
--- a/WifiHeader.hs
+++ b/dht/WifiHeader.hs
diff --git a/XMPPToTox.hs b/dht/XMPPToTox.hs
index 33e6ae04..33e6ae04 100644
--- a/XMPPToTox.hs
+++ b/dht/XMPPToTox.hs
diff --git a/b b/dht/b
index a116163e..a116163e 100755
--- a/b
+++ b/dht/b
diff --git a/bittorrent/README.md b/dht/bittorrent/README.md
index 32948896..32948896 100644
--- a/bittorrent/README.md
+++ b/dht/bittorrent/README.md
diff --git a/bittorrent/Readme.md b/dht/bittorrent/Readme.md
index e092c3ad..e092c3ad 100644
--- a/bittorrent/Readme.md
+++ b/dht/bittorrent/Readme.md
diff --git a/bittorrent/bench/Main.hs b/dht/bittorrent/bench/Main.hs
index f04485ab..f04485ab 100644
--- a/bittorrent/bench/Main.hs
+++ b/dht/bittorrent/bench/Main.hs
diff --git a/bittorrent/bench/Throughtput.hs b/dht/bittorrent/bench/Throughtput.hs
index d0404405..d0404405 100644
--- a/bittorrent/bench/Throughtput.hs
+++ b/dht/bittorrent/bench/Throughtput.hs
diff --git a/bittorrent/bench/TorrentFile.hs b/dht/bittorrent/bench/TorrentFile.hs
index e91a9c10..e91a9c10 100644
--- a/bittorrent/bench/TorrentFile.hs
+++ b/dht/bittorrent/bench/TorrentFile.hs
diff --git a/bittorrent/bittorrent.cabal b/dht/bittorrent/bittorrent.cabal
index 8ec314e7..8ec314e7 100644
--- a/bittorrent/bittorrent.cabal
+++ b/dht/bittorrent/bittorrent.cabal
diff --git a/bittorrent/dev/README.md b/dht/bittorrent/dev/README.md
index e2cc51a6..e2cc51a6 100644
--- a/bittorrent/dev/README.md
+++ b/dht/bittorrent/dev/README.md
diff --git a/bittorrent/dev/add-sources.sh b/dht/bittorrent/dev/add-sources.sh
index e125cade..e125cade 100755
--- a/bittorrent/dev/add-sources.sh
+++ b/dht/bittorrent/dev/add-sources.sh
diff --git a/bittorrent/dev/bench b/dht/bittorrent/dev/bench
index 5d03db3f..5d03db3f 100755
--- a/bittorrent/dev/bench
+++ b/dht/bittorrent/dev/bench
diff --git a/bittorrent/dev/test b/dht/bittorrent/dev/test
index 2eb85df2..2eb85df2 100755
--- a/bittorrent/dev/test
+++ b/dht/bittorrent/dev/test
diff --git a/bittorrent/dev/update-dependencies.sh b/dht/bittorrent/dev/update-dependencies.sh
index c83694c3..c83694c3 100755
--- a/bittorrent/dev/update-dependencies.sh
+++ b/dht/bittorrent/dev/update-dependencies.sh
diff --git a/bittorrent/examples/Client.hs b/dht/bittorrent/examples/Client.hs
index 26711676..26711676 100644
--- a/bittorrent/examples/Client.hs
+++ b/dht/bittorrent/examples/Client.hs
diff --git a/bittorrent/examples/FS.hs b/dht/bittorrent/examples/FS.hs
index 550d85a7..550d85a7 100644
--- a/bittorrent/examples/FS.hs
+++ b/dht/bittorrent/examples/FS.hs
diff --git a/bittorrent/examples/MkTorrent.hs b/dht/bittorrent/examples/MkTorrent.hs
index 88a84893..88a84893 100644
--- a/bittorrent/examples/MkTorrent.hs
+++ b/dht/bittorrent/examples/MkTorrent.hs
diff --git a/bittorrent/res/dapper-dvd-amd64.iso.torrent b/dht/bittorrent/res/dapper-dvd-amd64.iso.torrent
index 5713344b..5713344b 100644
--- a/bittorrent/res/dapper-dvd-amd64.iso.torrent
+++ b/dht/bittorrent/res/dapper-dvd-amd64.iso.torrent
Binary files differ
diff --git a/bittorrent/res/pkg.torrent b/dht/bittorrent/res/pkg.torrent
index be89e9e0..be89e9e0 100644
--- a/bittorrent/res/pkg.torrent
+++ b/dht/bittorrent/res/pkg.torrent
Binary files differ
diff --git a/bittorrent/res/testfile b/dht/bittorrent/res/testfile
index 8e984818..8e984818 100644
--- a/bittorrent/res/testfile
+++ b/dht/bittorrent/res/testfile
Binary files differ
diff --git a/bittorrent/res/testfile.torrent b/dht/bittorrent/res/testfile.torrent
index 297f56a2..297f56a2 100644
--- a/bittorrent/res/testfile.torrent
+++ b/dht/bittorrent/res/testfile.torrent
diff --git a/bittorrent/src/Network/BitTorrent.hs b/dht/bittorrent/src/Network/BitTorrent.hs
index 91a58887..91a58887 100644
--- a/bittorrent/src/Network/BitTorrent.hs
+++ b/dht/bittorrent/src/Network/BitTorrent.hs
diff --git a/bittorrent/src/Network/BitTorrent/Client.hs b/dht/bittorrent/src/Network/BitTorrent/Client.hs
index c84290dd..c84290dd 100644
--- a/bittorrent/src/Network/BitTorrent/Client.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Client.hs
diff --git a/bittorrent/src/Network/BitTorrent/Client/Handle.hs b/dht/bittorrent/src/Network/BitTorrent/Client/Handle.hs
index 66baac48..66baac48 100644
--- a/bittorrent/src/Network/BitTorrent/Client/Handle.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Client/Handle.hs
diff --git a/bittorrent/src/Network/BitTorrent/Client/Types.hs b/dht/bittorrent/src/Network/BitTorrent/Client/Types.hs
index e2ad858f..e2ad858f 100644
--- a/bittorrent/src/Network/BitTorrent/Client/Types.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Client/Types.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange.hs
index 143bf090..143bf090 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs
index 1be9f970..1be9f970 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Bitfield.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Block.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Block.hs
index bc9a3d24..bc9a3d24 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Block.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Block.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Connection.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Connection.hs
index 6804d0a2..6804d0a2 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Connection.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Connection.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Download.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Download.hs
index 981db2fb..981db2fb 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Download.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Download.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Manager.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Manager.hs
index 30a6a607..30a6a607 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Manager.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Manager.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Message.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Message.hs
index 5c096523..5c096523 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Message.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Message.hs
diff --git a/bittorrent/src/Network/BitTorrent/Exchange/Session.hs b/dht/bittorrent/src/Network/BitTorrent/Exchange/Session.hs
index 38a3c3a6..38a3c3a6 100644
--- a/bittorrent/src/Network/BitTorrent/Exchange/Session.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Exchange/Session.hs
diff --git a/bittorrent/src/Network/BitTorrent/Internal/Cache.hs b/dht/bittorrent/src/Network/BitTorrent/Internal/Cache.hs
index 8c74467a..8c74467a 100644
--- a/bittorrent/src/Network/BitTorrent/Internal/Cache.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Internal/Cache.hs
diff --git a/bittorrent/src/Network/BitTorrent/Internal/Progress.hs b/dht/bittorrent/src/Network/BitTorrent/Internal/Progress.hs
index 6ac889e2..6ac889e2 100644
--- a/bittorrent/src/Network/BitTorrent/Internal/Progress.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Internal/Progress.hs
diff --git a/bittorrent/src/Network/BitTorrent/Internal/Types.hs b/dht/bittorrent/src/Network/BitTorrent/Internal/Types.hs
index d157db3e..d157db3e 100644
--- a/bittorrent/src/Network/BitTorrent/Internal/Types.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Internal/Types.hs
diff --git a/bittorrent/src/Network/BitTorrent/Readme.md b/dht/bittorrent/src/Network/BitTorrent/Readme.md
index ebf9545e..ebf9545e 100644
--- a/bittorrent/src/Network/BitTorrent/Readme.md
+++ b/dht/bittorrent/src/Network/BitTorrent/Readme.md
diff --git a/bittorrent/src/Network/BitTorrent/Tracker.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker.hs
index 1191f921..1191f921 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/List.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/List.hs
index 1507b4be..1507b4be 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/List.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/List.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/Message.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/Message.hs
index ab492275..ab492275 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/Message.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/Message.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/RPC.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC.hs
index 45fef05e..45fef05e 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/RPC.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs
index 6f7a53bf..6f7a53bf 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/HTTP.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs
index 31b6b870..31b6b870 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/RPC/UDP.hs
diff --git a/bittorrent/src/Network/BitTorrent/Tracker/Session.hs b/dht/bittorrent/src/Network/BitTorrent/Tracker/Session.hs
index db6ebaff..db6ebaff 100644
--- a/bittorrent/src/Network/BitTorrent/Tracker/Session.hs
+++ b/dht/bittorrent/src/Network/BitTorrent/Tracker/Session.hs
diff --git a/bittorrent/src/System/Torrent/FileMap.hs b/dht/bittorrent/src/System/Torrent/FileMap.hs
index 38c475e8..38c475e8 100644
--- a/bittorrent/src/System/Torrent/FileMap.hs
+++ b/dht/bittorrent/src/System/Torrent/FileMap.hs
diff --git a/bittorrent/src/System/Torrent/Storage.hs b/dht/bittorrent/src/System/Torrent/Storage.hs
index 1d77e55d..1d77e55d 100644
--- a/bittorrent/src/System/Torrent/Storage.hs
+++ b/dht/bittorrent/src/System/Torrent/Storage.hs
diff --git a/bittorrent/src/System/Torrent/Tree.hs b/dht/bittorrent/src/System/Torrent/Tree.hs
index 41cfb360..41cfb360 100644
--- a/bittorrent/src/System/Torrent/Tree.hs
+++ b/dht/bittorrent/src/System/Torrent/Tree.hs
diff --git a/bittorrent/tests/Config.hs b/dht/bittorrent/tests/Config.hs
index 55e30867..55e30867 100644
--- a/bittorrent/tests/Config.hs
+++ b/dht/bittorrent/tests/Config.hs
diff --git a/bittorrent/tests/Data/TorrentSpec.hs b/dht/bittorrent/tests/Data/TorrentSpec.hs
index b4a280e4..b4a280e4 100644
--- a/bittorrent/tests/Data/TorrentSpec.hs
+++ b/dht/bittorrent/tests/Data/TorrentSpec.hs
diff --git a/bittorrent/tests/Main.hs b/dht/bittorrent/tests/Main.hs
index 5ed953da..5ed953da 100644
--- a/bittorrent/tests/Main.hs
+++ b/dht/bittorrent/tests/Main.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs
index d51bab02..d51bab02 100644
--- a/bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Client/HandleSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/CoreSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/CoreSpec.hs
index e9b17a42..e9b17a42 100644
--- a/bittorrent/tests/Network/BitTorrent/CoreSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/CoreSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs
index 6f3c7489..6f3c7489 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/MessageSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs
index 93f78263..93f78263 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/QuerySpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs
index 07a906ba..07a906ba 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/RoutingSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs
index 32e4c158..32e4c158 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/SessionSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/TestData.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/TestData.hs
index e9473cbb..e9473cbb 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/TestData.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/TestData.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs
index a45d2212..a45d2212 100644
--- a/bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHT/TokenSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/DHTSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/DHTSpec.hs
index 77160eb5..77160eb5 100644
--- a/bittorrent/tests/Network/BitTorrent/DHTSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/DHTSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs
index 1ba772f6..1ba772f6 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/BitfieldSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs
index 2dc8e0b8..2dc8e0b8 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/BlockSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs
index d654cda1..d654cda1 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/ConnectionSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs
index d46f2034..d46f2034 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/DownloadSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs
index d615b1ff..d615b1ff 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/MessageSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs
index bf5b95a1..bf5b95a1 100644
--- a/bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Exchange/SessionSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs
index 337e7add..337e7add 100644
--- a/bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Internal/CacheSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs
index acbfd84c..acbfd84c 100644
--- a/bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Internal/ProgressSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs
index bba9d0e2..bba9d0e2 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/ListSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs
index 29854d58..29854d58 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/MessageSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs
index e928f917..e928f917 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/HTTPSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs
index 73acb3fa..73acb3fa 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPC/UDPSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs
index dfc13a1e..dfc13a1e 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/RPCSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs
index 72936ee7..72936ee7 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/SessionSpec.hs
diff --git a/bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs b/dht/bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs
index b95e2df4..b95e2df4 100644
--- a/bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs
+++ b/dht/bittorrent/tests/Network/BitTorrent/Tracker/TestData.hs
diff --git a/bittorrent/tests/Network/KRPC/MessageSpec.hs b/dht/bittorrent/tests/Network/KRPC/MessageSpec.hs
index 498ef679..498ef679 100644
--- a/bittorrent/tests/Network/KRPC/MessageSpec.hs
+++ b/dht/bittorrent/tests/Network/KRPC/MessageSpec.hs
diff --git a/bittorrent/tests/Network/KRPC/MethodSpec.hs b/dht/bittorrent/tests/Network/KRPC/MethodSpec.hs
index c1c58282..c1c58282 100644
--- a/bittorrent/tests/Network/KRPC/MethodSpec.hs
+++ b/dht/bittorrent/tests/Network/KRPC/MethodSpec.hs
diff --git a/bittorrent/tests/Network/KRPCSpec.hs b/dht/bittorrent/tests/Network/KRPCSpec.hs
index eabcc817..eabcc817 100644
--- a/bittorrent/tests/Network/KRPCSpec.hs
+++ b/dht/bittorrent/tests/Network/KRPCSpec.hs
diff --git a/bittorrent/tests/Readme.md b/dht/bittorrent/tests/Readme.md
index 7a9d8914..7a9d8914 100644
--- a/bittorrent/tests/Readme.md
+++ b/dht/bittorrent/tests/Readme.md
diff --git a/bittorrent/tests/Spec.hs b/dht/bittorrent/tests/Spec.hs
index b4e92e75..b4e92e75 100644
--- a/bittorrent/tests/Spec.hs
+++ b/dht/bittorrent/tests/Spec.hs
diff --git a/bittorrent/tests/System/Torrent/FileMapSpec.hs b/dht/bittorrent/tests/System/Torrent/FileMapSpec.hs
index 29252925..29252925 100644
--- a/bittorrent/tests/System/Torrent/FileMapSpec.hs
+++ b/dht/bittorrent/tests/System/Torrent/FileMapSpec.hs
diff --git a/bittorrent/tests/System/Torrent/StorageSpec.hs b/dht/bittorrent/tests/System/Torrent/StorageSpec.hs
index b5e49078..b5e49078 100644
--- a/bittorrent/tests/System/Torrent/StorageSpec.hs
+++ b/dht/bittorrent/tests/System/Torrent/StorageSpec.hs
diff --git a/bp b/dht/bp
index 8d3335d4..8d3335d4 100755
--- a/bp
+++ b/dht/bp
diff --git a/c b/dht/c
index ed905d3d..ed905d3d 100755
--- a/c
+++ b/dht/c
diff --git a/cbits/cryptonite_bitfn.h b/dht/cbits/cryptonite_bitfn.h
index 3a00dd8a..3a00dd8a 100644
--- a/cbits/cryptonite_bitfn.h
+++ b/dht/cbits/cryptonite_bitfn.h
diff --git a/cbits/cryptonite_salsa.c b/dht/cbits/cryptonite_salsa.c
index 0bd96607..0bd96607 100644
--- a/cbits/cryptonite_salsa.c
+++ b/dht/cbits/cryptonite_salsa.c
diff --git a/cbits/cryptonite_salsa.h b/dht/cbits/cryptonite_salsa.h
index 33e9cda9..33e9cda9 100644
--- a/cbits/cryptonite_salsa.h
+++ b/dht/cbits/cryptonite_salsa.h
diff --git a/cbits/cryptonite_xsalsa.c b/dht/cbits/cryptonite_xsalsa.c
index 6718cd7d..6718cd7d 100644
--- a/cbits/cryptonite_xsalsa.c
+++ b/dht/cbits/cryptonite_xsalsa.c
diff --git a/cbits/cryptonite_xsalsa.h b/dht/cbits/cryptonite_xsalsa.h
index 73233cee..73233cee 100644
--- a/cbits/cryptonite_xsalsa.h
+++ b/dht/cbits/cryptonite_xsalsa.h
diff --git a/ci b/dht/ci
index 52e7c6b7..52e7c6b7 100755
--- a/ci
+++ b/dht/ci
diff --git a/conn-notes.txt b/dht/conn-notes.txt
index 257987d1..257987d1 100644
--- a/conn-notes.txt
+++ b/dht/conn-notes.txt
diff --git a/cryptonite-backport/Crypto/Cipher/Salsa.hs b/dht/cryptonite-backport/Crypto/Cipher/Salsa.hs
index b6b188b1..b6b188b1 100644
--- a/cryptonite-backport/Crypto/Cipher/Salsa.hs
+++ b/dht/cryptonite-backport/Crypto/Cipher/Salsa.hs
diff --git a/cryptonite-backport/Crypto/Cipher/XSalsa.hs b/dht/cryptonite-backport/Crypto/Cipher/XSalsa.hs
index 494760e2..494760e2 100644
--- a/cryptonite-backport/Crypto/Cipher/XSalsa.hs
+++ b/dht/cryptonite-backport/Crypto/Cipher/XSalsa.hs
diff --git a/cryptonite-backport/Crypto/ECC/Class.hs b/dht/cryptonite-backport/Crypto/ECC/Class.hs
index 16b2cc15..16b2cc15 100644
--- a/cryptonite-backport/Crypto/ECC/Class.hs
+++ b/dht/cryptonite-backport/Crypto/ECC/Class.hs
diff --git a/cryptonite-backport/Crypto/ECC/Simple/Prim.hs b/dht/cryptonite-backport/Crypto/ECC/Simple/Prim.hs
index 117988f2..117988f2 100644
--- a/cryptonite-backport/Crypto/ECC/Simple/Prim.hs
+++ b/dht/cryptonite-backport/Crypto/ECC/Simple/Prim.hs
diff --git a/cryptonite-backport/Crypto/ECC/Simple/Types.hs b/dht/cryptonite-backport/Crypto/ECC/Simple/Types.hs
index c97daa29..c97daa29 100644
--- a/cryptonite-backport/Crypto/ECC/Simple/Types.hs
+++ b/dht/cryptonite-backport/Crypto/ECC/Simple/Types.hs
diff --git a/cryptonite-backport/Crypto/Error/Types.hs b/dht/cryptonite-backport/Crypto/Error/Types.hs
index 4aaf4e04..4aaf4e04 100644
--- a/cryptonite-backport/Crypto/Error/Types.hs
+++ b/dht/cryptonite-backport/Crypto/Error/Types.hs
diff --git a/cryptonite-backport/Crypto/Internal/ByteArray.hs b/dht/cryptonite-backport/Crypto/Internal/ByteArray.hs
index 3a23152d..3a23152d 100644
--- a/cryptonite-backport/Crypto/Internal/ByteArray.hs
+++ b/dht/cryptonite-backport/Crypto/Internal/ByteArray.hs
diff --git a/cryptonite-backport/Crypto/Internal/Compat.hs b/dht/cryptonite-backport/Crypto/Internal/Compat.hs
index a3712a7c..a3712a7c 100644
--- a/cryptonite-backport/Crypto/Internal/Compat.hs
+++ b/dht/cryptonite-backport/Crypto/Internal/Compat.hs
diff --git a/cryptonite-backport/Crypto/Internal/DeepSeq.hs b/dht/cryptonite-backport/Crypto/Internal/DeepSeq.hs
index 9da79881..9da79881 100644
--- a/cryptonite-backport/Crypto/Internal/DeepSeq.hs
+++ b/dht/cryptonite-backport/Crypto/Internal/DeepSeq.hs
diff --git a/cryptonite-backport/Crypto/Internal/Imports.hs b/dht/cryptonite-backport/Crypto/Internal/Imports.hs
index 4ed44e16..4ed44e16 100644
--- a/cryptonite-backport/Crypto/Internal/Imports.hs
+++ b/dht/cryptonite-backport/Crypto/Internal/Imports.hs
diff --git a/cryptonite-backport/Crypto/PubKey/Curve25519.hs b/dht/cryptonite-backport/Crypto/PubKey/Curve25519.hs
index 42878691..42878691 100644
--- a/cryptonite-backport/Crypto/PubKey/Curve25519.hs
+++ b/dht/cryptonite-backport/Crypto/PubKey/Curve25519.hs
diff --git a/dht-client.cabal b/dht/dht-client.cabal
index 415e9289..7355bae6 100644
--- a/dht-client.cabal
+++ b/dht/dht-client.cabal
@@ -76,29 +76,17 @@ library
76 Data.Digest.CRC32C 76 Data.Digest.CRC32C
77 Data.Bits.ByteString 77 Data.Bits.ByteString
78 Data.TableMethods 78 Data.TableMethods
79 Data.Wrapper.PSQ
80 Data.Wrapper.PSQInt
81 Data.MinMaxPSQ
82 Network.Address
83 Network.Kademlia.Bootstrap
84 Network.Kademlia.Routing
85 Data.Torrent 79 Data.Torrent
86 Network.BitTorrent.DHT.ContactInfo 80 Network.BitTorrent.DHT.ContactInfo
87 Network.BitTorrent.DHT.Token 81 Network.BitTorrent.DHT.Token
88 Network.Kademlia.Search
89 Network.QueryResponse 82 Network.QueryResponse
90 Network.StreamServer 83 Network.StreamServer
91 Data.BEncode.Pretty 84 Data.BEncode.Pretty
92 Control.Concurrent.Tasks
93 Network.Kademlia
94 Network.Kademlia.CommonAPI
95 Network.Kademlia.Persistence
96 Network.BitTorrent.MainlineDHT 85 Network.BitTorrent.MainlineDHT
97 Network.BitTorrent.MainlineDHT.Symbols 86 Network.BitTorrent.MainlineDHT.Symbols
98 System.Global6 87 System.Global6
99 Data.PacketQueue 88 Data.PacketQueue
100 Data.PacketBuffer 89 Data.PacketBuffer
101 Data.Word64Map
102 OnionRouter 90 OnionRouter
103 TCPProber 91 TCPProber
104 Data.Tox.Onion 92 Data.Tox.Onion
@@ -119,7 +107,6 @@ library
119 Data.Tox.Msg 107 Data.Tox.Msg
120 Data.Tox.Relay 108 Data.Tox.Relay
121 Control.TriadCommittee 109 Control.TriadCommittee
122 Crypto.Tox
123 Text.XXD 110 Text.XXD
124 Network.Tox.ContactInfo 111 Network.Tox.ContactInfo
125 Announcer 112 Announcer
@@ -227,6 +214,14 @@ library
227 , hinotify 214 , hinotify
228 , avahi >= 0.2.0 215 , avahi >= 0.2.0
229 , hslogger 216 , hslogger
217 , word64-map
218 , network-addr
219 , tox-crypto
220 , lifted-concurrent
221 , psq-wrap
222 , minmax-psq
223 , kad
224 , tasks
230 225
231 if impl(ghc < 8) 226 if impl(ghc < 8)
232 Build-depends: transformers 227 Build-depends: transformers
@@ -251,7 +246,7 @@ library
251 build-depends: aeson, aeson-pretty, unordered-containers, vector 246 build-depends: aeson, aeson-pretty, unordered-containers, vector
252 cpp-options: -DBENCODE_AESON -DRENDERFLUSH 247 cpp-options: -DBENCODE_AESON -DRENDERFLUSH
253 if flag(thread-debug) 248 if flag(thread-debug)
254 exposed-modules: Control.Concurrent.Lifted.Instrument 249 -- exposed-modules: Control.Concurrent.Lifted.Instrument
255 cpp-options: -DTHREAD_DEBUG 250 cpp-options: -DTHREAD_DEBUG
256 251
257 if flag(builder) 252 if flag(builder)
diff --git a/doc/rfc6120.html b/dht/doc/rfc6120.html
index fa7ef081..fa7ef081 100644
--- a/doc/rfc6120.html
+++ b/dht/doc/rfc6120.html
diff --git a/doc/rfc6121.html b/dht/doc/rfc6121.html
index bd00706c..bd00706c 100644
--- a/doc/rfc6121.html
+++ b/dht/doc/rfc6121.html
diff --git a/examples/AliceBob.hs b/dht/examples/AliceBob.hs
index 529b92d5..529b92d5 100644
--- a/examples/AliceBob.hs
+++ b/dht/examples/AliceBob.hs
diff --git a/examples/atox.hs b/dht/examples/atox.hs
index 3bae5203..3bae5203 100644
--- a/examples/atox.hs
+++ b/dht/examples/atox.hs
diff --git a/examples/avahi.hs b/dht/examples/avahi.hs
index e5567875..e5567875 100644
--- a/examples/avahi.hs
+++ b/dht/examples/avahi.hs
diff --git a/examples/consolation.hs b/dht/examples/consolation.hs
index 0c576dfc..0c576dfc 100644
--- a/examples/consolation.hs
+++ b/dht/examples/consolation.hs
diff --git a/examples/dht.hs b/dht/examples/dht.hs
index 3e1b1656..3e1b1656 100644
--- a/examples/dht.hs
+++ b/dht/examples/dht.hs
diff --git a/examples/dhtd.hs b/dht/examples/dhtd.hs
index 2772416b..2772416b 100644
--- a/examples/dhtd.hs
+++ b/dht/examples/dhtd.hs
diff --git a/examples/nalias.hs b/dht/examples/nalias.hs
index fa1b6f71..fa1b6f71 100644
--- a/examples/nalias.hs
+++ b/dht/examples/nalias.hs
diff --git a/examples/nalias2.hs b/dht/examples/nalias2.hs
index 609f2ec6..609f2ec6 100644
--- a/examples/nalias2.hs
+++ b/dht/examples/nalias2.hs
diff --git a/examples/pjson.hs b/dht/examples/pjson.hs
index a515febb..a515febb 100644
--- a/examples/pjson.hs
+++ b/dht/examples/pjson.hs
diff --git a/examples/pwrite.hs b/dht/examples/pwrite.hs
index bad6af06..bad6af06 100644
--- a/examples/pwrite.hs
+++ b/dht/examples/pwrite.hs
diff --git a/examples/test-xmpp.hs b/dht/examples/test-xmpp.hs
index a8e20c3c..a8e20c3c 100644
--- a/examples/test-xmpp.hs
+++ b/dht/examples/test-xmpp.hs
diff --git a/examples/testTox.hs b/dht/examples/testTox.hs
index 67c4daef..67c4daef 100644
--- a/examples/testTox.hs
+++ b/dht/examples/testTox.hs
diff --git a/examples/testcookie.hs b/dht/examples/testcookie.hs
index 4302ad35..4302ad35 100644
--- a/examples/testcookie.hs
+++ b/dht/examples/testcookie.hs
diff --git a/examples/toxrelay.hs b/dht/examples/toxrelay.hs
index af08e8d7..af08e8d7 100644
--- a/examples/toxrelay.hs
+++ b/dht/examples/toxrelay.hs
diff --git a/examples/whosocket.hs b/dht/examples/whosocket.hs
index f84e3178..f84e3178 100644
--- a/examples/whosocket.hs
+++ b/dht/examples/whosocket.hs
diff --git a/examples/xmppServer.hs b/dht/examples/xmppServer.hs
index b0a53e8b..b0a53e8b 100644
--- a/examples/xmppServer.hs
+++ b/dht/examples/xmppServer.hs
diff --git a/g b/dht/g
index 4ebe82ed..4ebe82ed 100755
--- a/g
+++ b/dht/g
diff --git a/gi b/dht/gi
index 833cac1b..833cac1b 100755
--- a/gi
+++ b/dht/gi
diff --git a/graphdeps b/dht/graphdeps
index 4ee6939a..4ee6939a 100755
--- a/graphdeps
+++ b/dht/graphdeps
diff --git a/modules.svg b/dht/modules.svg
index 32e85a40..32e85a40 100644
--- a/modules.svg
+++ b/dht/modules.svg
diff --git a/p b/dht/p
index 357606ad..357606ad 100755
--- a/p
+++ b/dht/p
diff --git a/presence.cabal.bak b/dht/presence.cabal.bak
index 81ca59b2..81ca59b2 100644
--- a/presence.cabal.bak
+++ b/dht/presence.cabal.bak
diff --git a/presence.service b/dht/presence.service
index 85f20cda..85f20cda 100644
--- a/presence.service
+++ b/dht/presence.service
diff --git a/readpackets.hs b/dht/readpackets.hs
index 690aa91e..690aa91e 100644
--- a/readpackets.hs
+++ b/dht/readpackets.hs
diff --git a/src/Control/TriadCommittee.hs b/dht/src/Control/TriadCommittee.hs
index 88e665b6..88e665b6 100644
--- a/src/Control/TriadCommittee.hs
+++ b/dht/src/Control/TriadCommittee.hs
diff --git a/src/Crypto/Nonce.hs b/dht/src/Crypto/Nonce.hs
index 263f9b0a..263f9b0a 100644
--- a/src/Crypto/Nonce.hs
+++ b/dht/src/Crypto/Nonce.hs
diff --git a/src/Crypto/XEd25519.hs b/dht/src/Crypto/XEd25519.hs
index 372f31a8..372f31a8 100644
--- a/src/Crypto/XEd25519.hs
+++ b/dht/src/Crypto/XEd25519.hs
diff --git a/src/Crypto/XEd25519/FieldElement.hs b/dht/src/Crypto/XEd25519/FieldElement.hs
index 7a916107..7a916107 100644
--- a/src/Crypto/XEd25519/FieldElement.hs
+++ b/dht/src/Crypto/XEd25519/FieldElement.hs
diff --git a/src/DPut.hs b/dht/src/DPut.hs
index 38e532d0..38e532d0 100644
--- a/src/DPut.hs
+++ b/dht/src/DPut.hs
diff --git a/src/Data/BEncode/Pretty.hs b/dht/src/Data/BEncode/Pretty.hs
index 8beb101b..8beb101b 100644
--- a/src/Data/BEncode/Pretty.hs
+++ b/dht/src/Data/BEncode/Pretty.hs
diff --git a/src/Data/Bits/ByteString.hs b/dht/src/Data/Bits/ByteString.hs
index bf0316fd..bf0316fd 100644
--- a/src/Data/Bits/ByteString.hs
+++ b/dht/src/Data/Bits/ByteString.hs
diff --git a/src/Data/Digest/CRC32C.hs b/dht/src/Data/Digest/CRC32C.hs
index 18c1314f..18c1314f 100644
--- a/src/Data/Digest/CRC32C.hs
+++ b/dht/src/Data/Digest/CRC32C.hs
diff --git a/src/Data/IntervalSet.hs b/dht/src/Data/IntervalSet.hs
index f1205274..f1205274 100644
--- a/src/Data/IntervalSet.hs
+++ b/dht/src/Data/IntervalSet.hs
diff --git a/src/Data/PacketBuffer.hs b/dht/src/Data/PacketBuffer.hs
index 17745664..17745664 100644
--- a/src/Data/PacketBuffer.hs
+++ b/dht/src/Data/PacketBuffer.hs
diff --git a/src/Data/PacketQueue.hs b/dht/src/Data/PacketQueue.hs
index 15a3b436..15a3b436 100644
--- a/src/Data/PacketQueue.hs
+++ b/dht/src/Data/PacketQueue.hs
diff --git a/src/Data/Sized.hs b/dht/src/Data/Sized.hs
index 0d3d5845..0d3d5845 100644
--- a/src/Data/Sized.hs
+++ b/dht/src/Data/Sized.hs
diff --git a/src/Data/TableMethods.hs b/dht/src/Data/TableMethods.hs
index e4208a69..e4208a69 100644
--- a/src/Data/TableMethods.hs
+++ b/dht/src/Data/TableMethods.hs
diff --git a/src/Data/Torrent.hs b/dht/src/Data/Torrent.hs
index 32c709be..32c709be 100644
--- a/src/Data/Torrent.hs
+++ b/dht/src/Data/Torrent.hs
diff --git a/src/Data/Tox/Message.hs b/dht/src/Data/Tox/Message.hs
index 9f1ce339..9f1ce339 100644
--- a/src/Data/Tox/Message.hs
+++ b/dht/src/Data/Tox/Message.hs
diff --git a/src/Data/Tox/Msg.hs b/dht/src/Data/Tox/Msg.hs
index 66ec6eb1..66ec6eb1 100644
--- a/src/Data/Tox/Msg.hs
+++ b/dht/src/Data/Tox/Msg.hs
diff --git a/src/Data/Tox/Onion.hs b/dht/src/Data/Tox/Onion.hs
index bd802c75..bd802c75 100644
--- a/src/Data/Tox/Onion.hs
+++ b/dht/src/Data/Tox/Onion.hs
diff --git a/src/Data/Tox/Relay.hs b/dht/src/Data/Tox/Relay.hs
index c563db8d..c563db8d 100644
--- a/src/Data/Tox/Relay.hs
+++ b/dht/src/Data/Tox/Relay.hs
diff --git a/src/DebugTag.hs b/dht/src/DebugTag.hs
index 9ac04bb0..9ac04bb0 100644
--- a/src/DebugTag.hs
+++ b/dht/src/DebugTag.hs
diff --git a/src/DebugUtil.hs b/dht/src/DebugUtil.hs
index e7a10397..e7a10397 100644
--- a/src/DebugUtil.hs
+++ b/dht/src/DebugUtil.hs
diff --git a/src/Hans/Checksum.hs b/dht/src/Hans/Checksum.hs
index 7afc93c7..7afc93c7 100644
--- a/src/Hans/Checksum.hs
+++ b/dht/src/Hans/Checksum.hs
diff --git a/src/Network/BitTorrent/DHT/ContactInfo.hs b/dht/src/Network/BitTorrent/DHT/ContactInfo.hs
index ec7e6658..ec7e6658 100644
--- a/src/Network/BitTorrent/DHT/ContactInfo.hs
+++ b/dht/src/Network/BitTorrent/DHT/ContactInfo.hs
diff --git a/src/Network/BitTorrent/DHT/Readme.md b/dht/src/Network/BitTorrent/DHT/Readme.md
index e2352f10..e2352f10 100644
--- a/src/Network/BitTorrent/DHT/Readme.md
+++ b/dht/src/Network/BitTorrent/DHT/Readme.md
diff --git a/src/Network/BitTorrent/DHT/Token.hs b/dht/src/Network/BitTorrent/DHT/Token.hs
index 171cc8be..171cc8be 100644
--- a/src/Network/BitTorrent/DHT/Token.hs
+++ b/dht/src/Network/BitTorrent/DHT/Token.hs
diff --git a/src/Network/BitTorrent/MainlineDHT.hs b/dht/src/Network/BitTorrent/MainlineDHT.hs
index 89851e88..89851e88 100644
--- a/src/Network/BitTorrent/MainlineDHT.hs
+++ b/dht/src/Network/BitTorrent/MainlineDHT.hs
diff --git a/src/Network/BitTorrent/MainlineDHT/Symbols.hs b/dht/src/Network/BitTorrent/MainlineDHT/Symbols.hs
index 05a64014..05a64014 100644
--- a/src/Network/BitTorrent/MainlineDHT/Symbols.hs
+++ b/dht/src/Network/BitTorrent/MainlineDHT/Symbols.hs
diff --git a/src/Network/Lossless.hs b/dht/src/Network/Lossless.hs
index 861792ab..861792ab 100644
--- a/src/Network/Lossless.hs
+++ b/dht/src/Network/Lossless.hs
diff --git a/src/Network/QueryResponse.hs b/dht/src/Network/QueryResponse.hs
index c4ff50e3..c4ff50e3 100644
--- a/src/Network/QueryResponse.hs
+++ b/dht/src/Network/QueryResponse.hs
diff --git a/src/Network/QueryResponse/TCP.hs b/dht/src/Network/QueryResponse/TCP.hs
index bad61727..bad61727 100644
--- a/src/Network/QueryResponse/TCP.hs
+++ b/dht/src/Network/QueryResponse/TCP.hs
diff --git a/src/Network/SessionTransports.hs b/dht/src/Network/SessionTransports.hs
index e9daf6c1..e9daf6c1 100644
--- a/src/Network/SessionTransports.hs
+++ b/dht/src/Network/SessionTransports.hs
diff --git a/src/Network/SocketLike.hs b/dht/src/Network/SocketLike.hs
index d533dd7f..d533dd7f 100644
--- a/src/Network/SocketLike.hs
+++ b/dht/src/Network/SocketLike.hs
diff --git a/src/Network/StreamServer.hs b/dht/src/Network/StreamServer.hs
index 80ed4ee2..80ed4ee2 100644
--- a/src/Network/StreamServer.hs
+++ b/dht/src/Network/StreamServer.hs
diff --git a/src/Network/Tox.hs b/dht/src/Network/Tox.hs
index 98c03b80..98c03b80 100644
--- a/src/Network/Tox.hs
+++ b/dht/src/Network/Tox.hs
diff --git a/src/Network/Tox/AggregateSession.hs b/dht/src/Network/Tox/AggregateSession.hs
index 8c728660..8c728660 100644
--- a/src/Network/Tox/AggregateSession.hs
+++ b/dht/src/Network/Tox/AggregateSession.hs
diff --git a/src/Network/Tox/Avahi.hs b/dht/src/Network/Tox/Avahi.hs
index 635ba656..635ba656 100644
--- a/src/Network/Tox/Avahi.hs
+++ b/dht/src/Network/Tox/Avahi.hs
diff --git a/src/Network/Tox/ContactInfo.hs b/dht/src/Network/Tox/ContactInfo.hs
index e7cb48c1..e7cb48c1 100644
--- a/src/Network/Tox/ContactInfo.hs
+++ b/dht/src/Network/Tox/ContactInfo.hs
diff --git a/src/Network/Tox/Crypto/Transport.hs b/dht/src/Network/Tox/Crypto/Transport.hs
index a18b550d..a18b550d 100644
--- a/src/Network/Tox/Crypto/Transport.hs
+++ b/dht/src/Network/Tox/Crypto/Transport.hs
diff --git a/src/Network/Tox/DHT/Handlers.hs b/dht/src/Network/Tox/DHT/Handlers.hs
index 1eec93b9..1eec93b9 100644
--- a/src/Network/Tox/DHT/Handlers.hs
+++ b/dht/src/Network/Tox/DHT/Handlers.hs
diff --git a/src/Network/Tox/DHT/Transport.hs b/dht/src/Network/Tox/DHT/Transport.hs
index b9b63165..b9b63165 100644
--- a/src/Network/Tox/DHT/Transport.hs
+++ b/dht/src/Network/Tox/DHT/Transport.hs
diff --git a/src/Network/Tox/Handshake.hs b/dht/src/Network/Tox/Handshake.hs
index c48b7415..c48b7415 100644
--- a/src/Network/Tox/Handshake.hs
+++ b/dht/src/Network/Tox/Handshake.hs
diff --git a/src/Network/Tox/NodeId.hs b/dht/src/Network/Tox/NodeId.hs
index 9a9c893a..9a9c893a 100644
--- a/src/Network/Tox/NodeId.hs
+++ b/dht/src/Network/Tox/NodeId.hs
diff --git a/src/Network/Tox/Onion/Handlers.hs b/dht/src/Network/Tox/Onion/Handlers.hs
index f44dd79c..f44dd79c 100644
--- a/src/Network/Tox/Onion/Handlers.hs
+++ b/dht/src/Network/Tox/Onion/Handlers.hs
diff --git a/src/Network/Tox/Onion/Transport.hs b/dht/src/Network/Tox/Onion/Transport.hs
index e746c414..e746c414 100644
--- a/src/Network/Tox/Onion/Transport.hs
+++ b/dht/src/Network/Tox/Onion/Transport.hs
diff --git a/src/Network/Tox/Relay.hs b/dht/src/Network/Tox/Relay.hs
index 2842fcc2..2842fcc2 100644
--- a/src/Network/Tox/Relay.hs
+++ b/dht/src/Network/Tox/Relay.hs
diff --git a/src/Network/Tox/Session.hs b/dht/src/Network/Tox/Session.hs
index 189967fa..189967fa 100644
--- a/src/Network/Tox/Session.hs
+++ b/dht/src/Network/Tox/Session.hs
diff --git a/src/Network/Tox/TCP.hs b/dht/src/Network/Tox/TCP.hs
index 13da804f..13da804f 100644
--- a/src/Network/Tox/TCP.hs
+++ b/dht/src/Network/Tox/TCP.hs
diff --git a/src/Network/Tox/Transport.hs b/dht/src/Network/Tox/Transport.hs
index 217d5b1d..217d5b1d 100644
--- a/src/Network/Tox/Transport.hs
+++ b/dht/src/Network/Tox/Transport.hs
diff --git a/src/Network/UPNP.hs b/dht/src/Network/UPNP.hs
index 01d222bf..01d222bf 100644
--- a/src/Network/UPNP.hs
+++ b/dht/src/Network/UPNP.hs
diff --git a/src/StaticAssert.hs b/dht/src/StaticAssert.hs
index d0784c97..d0784c97 100644
--- a/src/StaticAssert.hs
+++ b/dht/src/StaticAssert.hs
diff --git a/src/System/Global6.hs b/dht/src/System/Global6.hs
index 38a90a59..38a90a59 100644
--- a/src/System/Global6.hs
+++ b/dht/src/System/Global6.hs
diff --git a/src/Text/XXD.hs b/dht/src/Text/XXD.hs
index 77606bfa..77606bfa 100644
--- a/src/Text/XXD.hs
+++ b/dht/src/Text/XXD.hs
diff --git a/stack.yaml b/dht/stack.yaml
index 1927a573..1927a573 100644
--- a/stack.yaml
+++ b/dht/stack.yaml
diff --git a/t b/dht/t
index 22b21361..22b21361 100755
--- a/t
+++ b/dht/t
diff --git a/todo.txt b/dht/todo.txt
index 12227a71..12227a71 100644
--- a/todo.txt
+++ b/dht/todo.txt
diff --git a/vnet/build.sh b/dht/vnet/build.sh
index 5354969a..5354969a 100755
--- a/vnet/build.sh
+++ b/dht/vnet/build.sh
diff --git a/vnet/clean.sh b/dht/vnet/clean.sh
index 3e0af1bd..3e0af1bd 100755
--- a/vnet/clean.sh
+++ b/dht/vnet/clean.sh
diff --git a/vnet/everywhere.sh b/dht/vnet/everywhere.sh
index ebd4ca38..ebd4ca38 100755
--- a/vnet/everywhere.sh
+++ b/dht/vnet/everywhere.sh
diff --git a/vnet/mkroutes.sh b/dht/vnet/mkroutes.sh
index 8b13faaa..8b13faaa 100755
--- a/vnet/mkroutes.sh
+++ b/dht/vnet/mkroutes.sh
diff --git a/vnet/run.sh b/dht/vnet/run.sh
index 0189b6b7..0189b6b7 100755
--- a/vnet/run.sh
+++ b/dht/vnet/run.sh
diff --git a/vnet/screen-everywhere.sh b/dht/vnet/screen-everywhere.sh
index e4f75374..e4f75374 100755
--- a/vnet/screen-everywhere.sh
+++ b/dht/vnet/screen-everywhere.sh
diff --git a/vnet/screen-shell.sh b/dht/vnet/screen-shell.sh
index fa420b9d..fa420b9d 100755
--- a/vnet/screen-shell.sh
+++ b/dht/vnet/screen-shell.sh
diff --git a/vnet/show-links.sh b/dht/vnet/show-links.sh
index d7115a0b..d7115a0b 100755
--- a/vnet/show-links.sh
+++ b/dht/vnet/show-links.sh
diff --git a/dput-hslogger/CHANGELOG.md b/dput-hslogger/CHANGELOG.md
new file mode 100644
index 00000000..8626ce35
--- /dev/null
+++ b/dput-hslogger/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for dput-hslogger
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/dput-hslogger/LICENSE b/dput-hslogger/LICENSE
new file mode 100644
index 00000000..a97490ef
--- /dev/null
+++ b/dput-hslogger/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2018, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dput-hslogger/Setup.hs b/dput-hslogger/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/dput-hslogger/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/dput-hslogger/dput-hslogger.cabal b/dput-hslogger/dput-hslogger.cabal
new file mode 100644
index 00000000..0ddb75ba
--- /dev/null
+++ b/dput-hslogger/dput-hslogger.cabal
@@ -0,0 +1,24 @@
1-- Initial dput-hslogger.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: dput-hslogger
5version: 0.1.0.0
6synopsis: Quick and dirty debug prints indexed by user Enum type.
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13category: Development
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: DPut
20 -- other-modules:
21 other-extensions: ConstraintKinds, ScopedTypeVariables
22 build-depends: base -any, containers -any, bytestring -any, text -any, hslogger -any
23 hs-source-dirs: src
24 default-language: Haskell2010
diff --git a/dput-hslogger/src/DPut.hs b/dput-hslogger/src/DPut.hs
new file mode 100644
index 00000000..38e532d0
--- /dev/null
+++ b/dput-hslogger/src/DPut.hs
@@ -0,0 +1,75 @@
1{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE ScopedTypeVariables #-}
3module DPut where
4
5import Control.Monad.IO.Class
6import qualified Data.Map.Strict as Map
7import Data.Maybe
8import Data.IORef
9import System.IO.Unsafe (unsafePerformIO)
10import System.Log.Logger
11import qualified Data.ByteString.Char8 as B
12import qualified Data.Text as T
13import qualified Data.Text.Encoding as T
14import Debug.Trace
15import Data.Typeable
16import Data.Dynamic
17
18type IsDebugTag t = (Eq t, Ord t, Show t, Read t, Enum t, Bounded t,Typeable t)
19
20appName :: String
21appName = "toxmpp"
22
23(<.>) :: String -> String -> String
24a <.> b = a ++ "." ++ b
25
26dput :: (MonadIO m, IsDebugTag tag) => tag -> String -> m ()
27dput tag msg = liftIO $ debugM (appName <.> show tag) msg
28
29dputB :: (MonadIO m, IsDebugTag tag) => tag -> B.ByteString -> m ()
30dputB tag msg = liftIO $ debugM (appName <.> show tag) (T.unpack . T.decodeUtf8 $ msg)
31
32{-# NOINLINE verbosityMap #-}
33verbosityMap :: IORef (Map.Map TypeRep Dynamic)
34verbosityMap = unsafePerformIO $ newIORef (Map.empty)
35
36-- | Trace version of 'dput' works in arbitrary monad, using unsafePerformIO.
37tput :: (Applicative m, IsDebugTag tag) => tag -> String -> m ()
38tput tag msg =
39 let mp = unsafePerformIO $ readIORef verbosityMap
40 in if maybe True (fromMaybe True . Map.lookup tag . flip fromDyn Map.empty) (Map.lookup (typeOf tag) mp)
41 then trace msg (pure ())
42 else pure ()
43
44-- | like 'trace' but parameterized with 'DebugTag'
45dtrace :: forall a tag. IsDebugTag tag => tag -> String -> a -> a
46dtrace tag msg result = let mp = unsafePerformIO $ readIORef verbosityMap
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')
50 then trace msg result
51 else result
52
53setTagLevel :: forall tag. IsDebugTag tag => Priority -> tag -> IO ()
54setTagLevel level tag = do
55 updateGlobalLogger (appName <.> show tag) (setLevel level)
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
62
63setQuiet :: forall tag. IsDebugTag tag => tag -> IO ()
64setQuiet = setTagLevel WARNING
65
66setVerbose :: forall tag. IsDebugTag tag => tag -> IO ()
67setVerbose = setTagLevel DEBUG
68
69getVerbose :: forall tag. IsDebugTag tag => tag -> IO Bool
70getVerbose tag = do
71 logger <- getLogger (appName <.> show tag)
72 case getLevel logger of
73 Just p | p <= DEBUG -> return True
74 _ -> return False
75
diff --git a/kad/CHANGELOG.md b/kad/CHANGELOG.md
new file mode 100644
index 00000000..6255a362
--- /dev/null
+++ b/kad/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for kad
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/kad/LICENSE b/kad/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/kad/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/kad/Setup.hs b/kad/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/kad/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/kad/kad.cabal b/kad/kad.cabal
new file mode 100644
index 00000000..5babda13
--- /dev/null
+++ b/kad/kad.cabal
@@ -0,0 +1,76 @@
1-- Initial kad.cabal generated by cabal init. For further documentation,
2-- see http://haskell.org/cabal/users-guide/
3
4name: kad
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 cpp-options: -DTHREAD_DEBUG
20 exposed-modules:
21 Network.Kademlia
22 , Network.Kademlia.Bootstrap
23 , Network.Kademlia.Routing
24 , Network.Kademlia.CommonAPI
25 , Network.Kademlia.Persistence
26 , Network.Kademlia.Search
27 other-modules: DebugTag
28 other-extensions:
29 CPP
30 , ConstraintKinds
31 , DeriveFunctor
32 , DeriveTraversable
33 , FlexibleContexts
34 , GADTs
35 , KindSignatures
36 , LambdaCase
37 , NamedFieldPuns
38 , PartialTypeSignatures
39 , PatternSynonyms
40 , RankNTypes
41 , ScopedTypeVariables
42 , RecordWildCards
43 , BangPatterns
44 , ViewPatterns
45 , TypeOperators
46 , DeriveGeneric
47 , TupleSections
48 , StandaloneDeriving
49 , MultiParamTypeClasses
50 , FlexibleInstances
51 , ExistentialQuantification
52 build-depends:
53 base
54 , tox-crypto
55 , entropy
56 , lifted-base
57 , lifted-concurrent
58 , aeson
59 , vector
60 , containers
61 , unordered-containers
62 , dput-hslogger
63 , time
64 , stm
65 , pretty
66 , bytestring
67 , hashable
68 , contravariant
69 , reflection
70 , psq-wrap
71 , minmax-psq
72 , network-addr
73 , cereal
74 , tasks
75 hs-source-dirs: src
76 default-language: Haskell2010
diff --git a/kad/src/DebugTag.hs b/kad/src/DebugTag.hs
new file mode 100644
index 00000000..9ac04bb0
--- /dev/null
+++ b/kad/src/DebugTag.hs
@@ -0,0 +1,24 @@
1module DebugTag where
2
3import Data.Typeable
4
5-- | Debug Tags, add more as needed, but ensure XAnnounce is always first, XMisc last
6data DebugTag
7 = XAnnounce
8 | XBitTorrent
9 | XDHT
10 | XLan
11 | XMan
12 | XNetCrypto
13 | XNetCryptoOut
14 | XOnion
15 | XRoutes
16 | XPing
17 | XRefresh
18 | XJabber
19 | XTCP
20 | XMisc
21 | XNodeinfoSearch
22 | XUnexpected -- Used only for special anomalous errors that we didn't expect to happen.
23 | XUnused -- Never commit code that uses XUnused.
24 deriving (Eq, Ord, Show, Read, Enum, Bounded,Typeable)
diff --git a/src/Network/Kademlia.hs b/kad/src/Network/Kademlia.hs
index e61afe9b..e61afe9b 100644
--- a/src/Network/Kademlia.hs
+++ b/kad/src/Network/Kademlia.hs
diff --git a/src/Network/Kademlia/Bootstrap.hs b/kad/src/Network/Kademlia/Bootstrap.hs
index 1324ae77..08ba3318 100644
--- a/src/Network/Kademlia/Bootstrap.hs
+++ b/kad/src/Network/Kademlia/Bootstrap.hs
@@ -7,6 +7,8 @@
7{-# LANGUAGE KindSignatures #-} 7{-# LANGUAGE KindSignatures #-}
8{-# LANGUAGE LambdaCase #-} 8{-# LANGUAGE LambdaCase #-}
9{-# LANGUAGE NamedFieldPuns #-} 9{-# LANGUAGE NamedFieldPuns #-}
10{-# LANGUAGE RecordWildCards #-}
11{-# LANGUAGE NondecreasingIndentation #-}
10{-# LANGUAGE PartialTypeSignatures #-} 12{-# LANGUAGE PartialTypeSignatures #-}
11{-# LANGUAGE PatternSynonyms #-} 13{-# LANGUAGE PatternSynonyms #-}
12{-# LANGUAGE RankNTypes #-} 14{-# LANGUAGE RankNTypes #-}
diff --git a/src/Network/Kademlia/CommonAPI.hs b/kad/src/Network/Kademlia/CommonAPI.hs
index 601be5d8..601be5d8 100644
--- a/src/Network/Kademlia/CommonAPI.hs
+++ b/kad/src/Network/Kademlia/CommonAPI.hs
diff --git a/src/Network/Kademlia/Persistence.hs b/kad/src/Network/Kademlia/Persistence.hs
index d7431671..32ec169d 100644
--- a/src/Network/Kademlia/Persistence.hs
+++ b/kad/src/Network/Kademlia/Persistence.hs
@@ -1,4 +1,5 @@
1{-# LANGUAGE NamedFieldPuns #-} 1{-# LANGUAGE NamedFieldPuns #-}
2{-# LANGUAGE OverloadedStrings #-}
2module Network.Kademlia.Persistence where 3module Network.Kademlia.Persistence where
3 4
4import Network.Kademlia.CommonAPI 5import Network.Kademlia.CommonAPI
diff --git a/src/Network/Kademlia/Routing.hs b/kad/src/Network/Kademlia/Routing.hs
index a52cca73..c7fdf028 100644
--- a/src/Network/Kademlia/Routing.hs
+++ b/kad/src/Network/Kademlia/Routing.hs
@@ -25,6 +25,7 @@
25{-# LANGUAGE GADTs #-} 25{-# LANGUAGE GADTs #-}
26{-# LANGUAGE ScopedTypeVariables #-} 26{-# LANGUAGE ScopedTypeVariables #-}
27{-# LANGUAGE TupleSections #-} 27{-# LANGUAGE TupleSections #-}
28{-# LANGUAGE OverloadedStrings #-}
28{-# LANGUAGE StandaloneDeriving, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances #-} 29{-# LANGUAGE StandaloneDeriving, FlexibleContexts, MultiParamTypeClasses, FlexibleInstances #-}
29{-# OPTIONS_GHC -fno-warn-orphans #-} 30{-# OPTIONS_GHC -fno-warn-orphans #-}
30module Network.Kademlia.Routing 31module Network.Kademlia.Routing
diff --git a/src/Network/Kademlia/Search.hs b/kad/src/Network/Kademlia/Search.hs
index 1be1afc1..1be1afc1 100644
--- a/src/Network/Kademlia/Search.hs
+++ b/kad/src/Network/Kademlia/Search.hs
diff --git a/lifted-concurrent/CHANGELOG.md b/lifted-concurrent/CHANGELOG.md
new file mode 100644
index 00000000..3915e1ca
--- /dev/null
+++ b/lifted-concurrent/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for lifted-concurrent
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/lifted-concurrent/LICENSE b/lifted-concurrent/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/lifted-concurrent/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/lifted-concurrent/Setup.hs b/lifted-concurrent/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/lifted-concurrent/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/lifted-concurrent/lifted-concurrent.cabal b/lifted-concurrent/lifted-concurrent.cabal
new file mode 100644
index 00000000..3d8acba7
--- /dev/null
+++ b/lifted-concurrent/lifted-concurrent.cabal
@@ -0,0 +1,34 @@
1-- Initial lifted-concurrent.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: lifted-concurrent
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules:
20 Control.Concurrent.Lifted.Instrument
21 , Control.Concurrent.Async.Lifted.Instrument
22 other-modules: DebugTag
23 other-extensions: FlexibleContexts
24 build-depends:
25 base
26 , containers
27 , time
28 , lifted-async
29 , dput-hslogger
30 , lifted-base
31 , monad-control
32 , transformers-base
33 hs-source-dirs: src
34 default-language: Haskell2010
diff --git a/src/Control/Concurrent/Async/Lifted/Instrument.hs b/lifted-concurrent/src/Control/Concurrent/Async/Lifted/Instrument.hs
index eab0fadc..eab0fadc 100644
--- a/src/Control/Concurrent/Async/Lifted/Instrument.hs
+++ b/lifted-concurrent/src/Control/Concurrent/Async/Lifted/Instrument.hs
diff --git a/src/Control/Concurrent/Lifted/Instrument.hs b/lifted-concurrent/src/Control/Concurrent/Lifted/Instrument.hs
index fc3b6369..fc3b6369 100644
--- a/src/Control/Concurrent/Lifted/Instrument.hs
+++ b/lifted-concurrent/src/Control/Concurrent/Lifted/Instrument.hs
diff --git a/lifted-concurrent/src/DebugTag.hs b/lifted-concurrent/src/DebugTag.hs
new file mode 100644
index 00000000..9ac04bb0
--- /dev/null
+++ b/lifted-concurrent/src/DebugTag.hs
@@ -0,0 +1,24 @@
1module DebugTag where
2
3import Data.Typeable
4
5-- | Debug Tags, add more as needed, but ensure XAnnounce is always first, XMisc last
6data DebugTag
7 = XAnnounce
8 | XBitTorrent
9 | XDHT
10 | XLan
11 | XMan
12 | XNetCrypto
13 | XNetCryptoOut
14 | XOnion
15 | XRoutes
16 | XPing
17 | XRefresh
18 | XJabber
19 | XTCP
20 | XMisc
21 | XNodeinfoSearch
22 | XUnexpected -- Used only for special anomalous errors that we didn't expect to happen.
23 | XUnused -- Never commit code that uses XUnused.
24 deriving (Eq, Ord, Show, Read, Enum, Bounded,Typeable)
diff --git a/minmax-psq/CHANGELOG.md b/minmax-psq/CHANGELOG.md
new file mode 100644
index 00000000..ba7d08da
--- /dev/null
+++ b/minmax-psq/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for minmax-psq
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/minmax-psq/LICENSE b/minmax-psq/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/minmax-psq/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/minmax-psq/Setup.hs b/minmax-psq/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/minmax-psq/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/minmax-psq/minmax-psq.cabal b/minmax-psq/minmax-psq.cabal
new file mode 100644
index 00000000..ba04bd45
--- /dev/null
+++ b/minmax-psq/minmax-psq.cabal
@@ -0,0 +1,24 @@
1-- Initial minmax-psq.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: minmax-psq
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: Data.MinMaxPSQ
20 -- other-modules:
21 other-extensions: BangPatterns, PatternSynonyms
22 build-depends: base, psq-wrap
23 hs-source-dirs: src
24 default-language: Haskell2010
diff --git a/src/Data/MinMaxPSQ.hs b/minmax-psq/src/Data/MinMaxPSQ.hs
index e7d7c760..e7d7c760 100644
--- a/src/Data/MinMaxPSQ.hs
+++ b/minmax-psq/src/Data/MinMaxPSQ.hs
diff --git a/network-addr/CHANGELOG.md b/network-addr/CHANGELOG.md
new file mode 100644
index 00000000..4178ce9e
--- /dev/null
+++ b/network-addr/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for network-addr
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/network-addr/LICENSE b/network-addr/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/network-addr/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/network-addr/Setup.hs b/network-addr/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/network-addr/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/network-addr/network-addr.cabal b/network-addr/network-addr.cabal
new file mode 100644
index 00000000..59c91cea
--- /dev/null
+++ b/network-addr/network-addr.cabal
@@ -0,0 +1,52 @@
1-- Initial network-addr.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: network-addr
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: Network.Address
20 other-modules: DebugTag
21 other-extensions:
22 CPP
23 , FlexibleInstances
24 , FlexibleContexts
25 , RecordWildCards
26 , ScopedTypeVariables
27 , StandaloneDeriving
28 , ViewPatterns
29 , GeneralizedNewtypeDeriving
30 , MultiParamTypeClasses
31 , DeriveDataTypeable
32 , DeriveFunctor
33 , DeriveFoldable
34 , DeriveTraversable
35 , TemplateHaskell
36 , OverloadedStrings
37 build-depends:
38 base
39 , bytestring
40 , time
41 , pretty
42 , iproute
43 , network
44 , dput-hslogger
45 , hashable
46 , cereal
47 , data-default
48 , convertible
49 , entropy
50 , http-types
51 hs-source-dirs: src
52 default-language: Haskell2010
diff --git a/network-addr/src/DebugTag.hs b/network-addr/src/DebugTag.hs
new file mode 100644
index 00000000..9ac04bb0
--- /dev/null
+++ b/network-addr/src/DebugTag.hs
@@ -0,0 +1,24 @@
1module DebugTag where
2
3import Data.Typeable
4
5-- | Debug Tags, add more as needed, but ensure XAnnounce is always first, XMisc last
6data DebugTag
7 = XAnnounce
8 | XBitTorrent
9 | XDHT
10 | XLan
11 | XMan
12 | XNetCrypto
13 | XNetCryptoOut
14 | XOnion
15 | XRoutes
16 | XPing
17 | XRefresh
18 | XJabber
19 | XTCP
20 | XMisc
21 | XNodeinfoSearch
22 | XUnexpected -- Used only for special anomalous errors that we didn't expect to happen.
23 | XUnused -- Never commit code that uses XUnused.
24 deriving (Eq, Ord, Show, Read, Enum, Bounded,Typeable)
diff --git a/src/Network/Address.hs b/network-addr/src/Network/Address.hs
index e1cec34d..369ae864 100644
--- a/src/Network/Address.hs
+++ b/network-addr/src/Network/Address.hs
@@ -23,6 +23,7 @@
23{-# LANGUAGE DeriveFoldable #-} 23{-# LANGUAGE DeriveFoldable #-}
24{-# LANGUAGE DeriveTraversable #-} 24{-# LANGUAGE DeriveTraversable #-}
25{-# LANGUAGE TemplateHaskell #-} 25{-# LANGUAGE TemplateHaskell #-}
26{-# LANGUAGE OverloadedStrings #-}
26{-# OPTIONS -fno-warn-orphans #-} 27{-# OPTIONS -fno-warn-orphans #-}
27module Network.Address 28module Network.Address
28 ( -- * Address 29 ( -- * Address
@@ -1184,8 +1185,6 @@ fingerprint pid = either (const def) id $ runGet getCI (getPeerId pid)
1184 str <- BC.unpack <$> getByteString 5 1185 str <- BC.unpack <$> getByteString 5
1185 return $ Version (catMaybes $ L.map decodeShadowVerNr str) [] 1186 return $ Version (catMaybes $ L.map decodeShadowVerNr str) []
1186 1187
1187
1188
1189-- | Given a string specifying a port (numeric or service name) 1188-- | Given a string specifying a port (numeric or service name)
1190-- and a flag indicating whether you want to support IPv6, this 1189-- and a flag indicating whether you want to support IPv6, this
1191-- function will return a SockAddr to bind to. If the input 1190-- function will return a SockAddr to bind to. If the input
@@ -1208,8 +1207,8 @@ getBindAddress bindspec enabled6 = do
1208 case if enabled6 then x6s++x4s else x4s of 1207 case if enabled6 then x6s++x4s else x4s of
1209 AddrInfo { addrAddress = addr } : _ -> addr 1208 AddrInfo { addrAddress = addr } : _ -> addr
1210 _ -> if enabled6 1209 _ -> if enabled6
1211 then SockAddrInet6 (parsePort listenPortString) 0 iN6ADDR_ANY 0 1210 then SockAddrInet6 (parsePort listenPortString) 0 (0,0,0,0){-iN6ADDR_ANY-} 0
1212 else SockAddrInet (parsePort listenPortString) iNADDR_ANY 1211 else SockAddrInet (parsePort listenPortString) 0{-iNADDR_ANY-}
1213 where parsePort s = fromMaybe 0 $ readMaybe s 1212 where parsePort s = fromMaybe 0 $ readMaybe s
1214 dput XMisc $ "Listening on " ++ show listenAddr 1213 dput XMisc $ "Listening on " ++ show listenAddr
1215 return listenAddr 1214 return listenAddr
diff --git a/psq-wrap/CHANGELOG.md b/psq-wrap/CHANGELOG.md
new file mode 100644
index 00000000..a2e49e7a
--- /dev/null
+++ b/psq-wrap/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for psq-wrap
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/psq-wrap/LICENSE b/psq-wrap/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/psq-wrap/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/psq-wrap/Setup.hs b/psq-wrap/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/psq-wrap/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/psq-wrap/psq-wrap.cabal b/psq-wrap/psq-wrap.cabal
new file mode 100644
index 00000000..77a7901b
--- /dev/null
+++ b/psq-wrap/psq-wrap.cabal
@@ -0,0 +1,30 @@
1-- Initial psq-wrap.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: psq-wrap
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules:
20 Data.Wrapper.PSQInt
21 , Data.Wrapper.PSQ
22 -- other-modules:
23 other-extensions: PatternSynonyms, CPP, ConstraintKinds
24 build-depends:
25 base
26 , time
27 , hashable
28 , psqueues
29 hs-source-dirs: src
30 default-language: Haskell2010
diff --git a/src/Data/Wrapper/PSQ.hs b/psq-wrap/src/Data/Wrapper/PSQ.hs
index 4fdeec67..4fdeec67 100644
--- a/src/Data/Wrapper/PSQ.hs
+++ b/psq-wrap/src/Data/Wrapper/PSQ.hs
diff --git a/src/Data/Wrapper/PSQInt.hs b/psq-wrap/src/Data/Wrapper/PSQInt.hs
index 5badb8b2..5badb8b2 100644
--- a/src/Data/Wrapper/PSQInt.hs
+++ b/psq-wrap/src/Data/Wrapper/PSQInt.hs
diff --git a/sensible-directory/Setup.hs b/sensible-directory/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/sensible-directory/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/sensible-directory/sensible-directory.cabal b/sensible-directory/sensible-directory.cabal
new file mode 100644
index 00000000..13929c05
--- /dev/null
+++ b/sensible-directory/sensible-directory.cabal
@@ -0,0 +1,30 @@
1name: sensible-directory
2version: 0.1.0.0
3-- synopsis:
4description: Try to guess the appropriate cache directory.
5license: BSD3
6license-file: LICENSE
7author: James Crayne
8maintainer: jim.crayne@gmail.com
9-- copyright:
10-- category:
11build-type: Custom
12-- extra-source-files:
13cabal-version: >=1.10
14
15Flag dirxdg
16 description: compat layer for old directory package
17 default: False
18
19library
20 exposed-modules: SensibleDir
21 -- other-modules:
22 -- other-extensions:
23 build-depends: base, filepath
24 if flag(dirxdg) || impl(ghc < 8)
25 build-depends: directory >= 1.2.2, directory-xdg
26 else
27 build-depends: directory >= 1.2.3
28 hs-source-dirs: src
29 default-language: Haskell2010
30
diff --git a/sensible-directory/src/SensibleDir.hs b/sensible-directory/src/SensibleDir.hs
new file mode 100644
index 00000000..c5f9ae1f
--- /dev/null
+++ b/sensible-directory/src/SensibleDir.hs
@@ -0,0 +1,121 @@
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE TupleSections #-}
3module SensibleDir where
4
5import Paths_testcabaldir
6import System.Directory
7#ifdef VERSION_directory_xdg
8import System.DirectoryXdg
9#endif
10import System.FilePath
11import System.IO
12import System.Info
13import System.Environment
14import Control.Arrow
15import Control.Applicative
16import Data.List
17
18installScenario = NotInstalled
19doit = do
20 ddir <- getDataDir
21 ldir <- getLibDir
22 pname <- getProgName
23 ppath <- getExecutablePath
24 sysconfdir <- getSysconfDir
25 putStrLn ("ddir = " ++ ddir);
26 putStrLn ("ldir = " ++ ldir);
27 putStrLn ("sysconfdir = " ++ sysconfdir);
28 putStrLn ("pname = " ++ pname);
29 putStr "runningInBuildDir = "
30 print =<< runningInBuildDir
31 putStr "detectLikelyInstall = "
32 print =<< detectLikelyInstall
33 putStrLn "---------------------"
34 putStr "sensibleCacheDir = "
35 print =<< sensibleCacheDir pname
36 -- putStr "sensibleConfigDir = "
37 -- print =<< sensibleConfigDir pname
38
39runningInBuildDir :: IO Bool
40runningInBuildDir = any (=="build") . take 2 . reverse . splitDirectories . takeDirectory <$> getExecutablePath
41
42runningInCabalDir :: IO Bool
43runningInCabalDir = any (==".cabal") . take 2 . reverse . splitDirectories . takeDirectory <$> getExecutablePath
44
45runningInSysBin = do
46 exedir <- splitDirectories . takeDirectory <$> getExecutablePath
47 return $
48 case take 3 (drop 1 exedir) of
49 ["bin"] -> True
50 ["sbin"] -> True
51 ["usr","bin"] -> True
52 ["usr","sbin"] -> True
53 _ -> False
54
55runningInLocalBin = do
56 exedir <- splitDirectories . takeDirectory <$> getExecutablePath
57 putStr "exedir = "
58 print exedir
59 return $
60 case take 3 (drop 1 exedir) of
61 ["usr","local","bin"] -> True
62 ["usr","local","sbin"] -> True
63 _ -> False
64
65-- scenarios
66data InstallScenario = PrefixInstall
67 -- ^ installed in /opt or some other prefix, or running inside source folder
68 | SystemInstall
69 -- ^ installed system wide
70 | LocalInstall
71 -- ^ installed in /usr/local/
72 | UserInstall
73 -- ^ installed for a given user
74 | NotInstalled
75 -- ^ not installed, built by cabal or make, running from dist folder
76 deriving (Show,Enum,Eq)
77
78-- | careful, assumes unix-style FHS
79-- windows aware contributions welcome
80-- Detects the likely install scenario based on the path to the exectuable.
81detectLikelyInstall :: IO InstallScenario
82detectLikelyInstall = do
83 bBuildDir <- fmap (,NotInstalled) runningInBuildDir
84 bCabalDir <- fmap (,UserInstall) runningInCabalDir
85 bLocalDir <- fmap (,LocalInstall) runningInLocalBin
86 bSysDir <- fmap (,SystemInstall) runningInSysBin
87 case dropWhile (not . fst) [bBuildDir,bCabalDir,bLocalDir,bSysDir] of
88 (True,scenario):_ -> return scenario
89 _ -> return PrefixInstall
90
91isUnix os = not $ "mingw" `isPrefixOf` os
92
93-- | Try to get the cache directory appropriate to the install scenario.
94-- On windows it just calls getAppUserDataDirectory and appends "cache".
95-- (windows behavior subject to change, contributions welcome)
96sensibleCacheDir suffix = do
97 let ifunix x = if isUnix os then x
98 else PrefixInstall
99 install <- ifunix <$> detectLikelyInstall
100 case install of
101 PrefixInstall -> do
102 if isUnix os
103 then do
104 dir <- splitDirectories . takeDirectory <$> getExecutablePath
105 let rdir = reverse dir
106 case take 1 rdir of
107 ["bin"] -> return $ (foldl1 combine $ reverse (drop 1 rdir)) </> "cache" </> suffix
108 _ -> fmap ((</> suffix) . (</> "cache") . takeDirectory) getExecutablePath
109 else getAppUserDataDirectory ("cache" </> suffix)
110 SystemInstall -> return ("/var/cache" </> suffix)
111 LocalInstall -> return ("/var/local/cache" </> suffix)
112 UserInstall -> getXdgDirectory XdgCache suffix
113 NotInstalled -> do
114 dir <- splitDirectories . takeDirectory <$> getExecutablePath
115 let rdir = reverse dir
116 return . foldl1 combine $ reverse ("cache": drop 2 rdir)
117
118-- | like 'sensibleCacheDir', but creates it if needed
119sensibleCacheDirCreateIfMissing suffix = do
120 dir <- sensibleCacheDir suffix
121 createDirectoryIfMissing True dir
diff --git a/tasks/CHANGELOG.md b/tasks/CHANGELOG.md
new file mode 100644
index 00000000..1ae925ad
--- /dev/null
+++ b/tasks/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for tasks
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/tasks/LICENSE b/tasks/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/tasks/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tasks/Setup.hs b/tasks/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/tasks/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/src/Control/Concurrent/Tasks.hs b/tasks/src/Control/Concurrent/Tasks.hs
index da2e589e..da2e589e 100644
--- a/src/Control/Concurrent/Tasks.hs
+++ b/tasks/src/Control/Concurrent/Tasks.hs
diff --git a/tasks/tasks.cabal b/tasks/tasks.cabal
new file mode 100644
index 00000000..e7ec8d63
--- /dev/null
+++ b/tasks/tasks.cabal
@@ -0,0 +1,29 @@
1-- Initial tasks.cabal generated by cabal init. For further documentation,
2-- see http://haskell.org/cabal/users-guide/
3
4name: tasks
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: Control.Concurrent.Tasks
20 -- other-modules:
21 other-extensions: CPP
22 build-depends:
23 base
24 , stm
25 , lifted-concurrent
26 , lifted-base
27 cpp-options: -DTHREAD_DEBUG
28 hs-source-dirs: src
29 default-language: Haskell2010
diff --git a/tox-crypto/CHANGELOG.md b/tox-crypto/CHANGELOG.md
new file mode 100644
index 00000000..f7064c45
--- /dev/null
+++ b/tox-crypto/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for tox-crypto
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/tox-crypto/CHANGELOG.md.save0 b/tox-crypto/CHANGELOG.md.save0
new file mode 100644
index 00000000..f7064c45
--- /dev/null
+++ b/tox-crypto/CHANGELOG.md.save0
@@ -0,0 +1,5 @@
1# Revision history for tox-crypto
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/tox-crypto/LICENSE b/tox-crypto/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/tox-crypto/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tox-crypto/LICENSE.save0 b/tox-crypto/LICENSE.save0
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/tox-crypto/LICENSE.save0
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tox-crypto/Setup.hs b/tox-crypto/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/tox-crypto/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/tox-crypto/Setup.hs.save0 b/tox-crypto/Setup.hs.save0
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/tox-crypto/Setup.hs.save0
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/src/Crypto/Tox.hs b/tox-crypto/src/Crypto/Tox.hs
index 1b3d5e5c..ea276045 100644
--- a/src/Crypto/Tox.hs
+++ b/tox-crypto/src/Crypto/Tox.hs
@@ -14,6 +14,7 @@
14{-# LANGUAGE NamedFieldPuns #-} 14{-# LANGUAGE NamedFieldPuns #-}
15{-# LANGUAGE PatternSynonyms #-} 15{-# LANGUAGE PatternSynonyms #-}
16{-# LANGUAGE FlexibleContexts #-} 16{-# LANGUAGE FlexibleContexts #-}
17{-# LANGUAGE OverloadedStrings #-}
17module Crypto.Tox 18module Crypto.Tox
18 ( PublicKey 19 ( PublicKey
19 , publicKey 20 , publicKey
diff --git a/tox-crypto/src/DebugTag.hs b/tox-crypto/src/DebugTag.hs
new file mode 100644
index 00000000..9ac04bb0
--- /dev/null
+++ b/tox-crypto/src/DebugTag.hs
@@ -0,0 +1,24 @@
1module DebugTag where
2
3import Data.Typeable
4
5-- | Debug Tags, add more as needed, but ensure XAnnounce is always first, XMisc last
6data DebugTag
7 = XAnnounce
8 | XBitTorrent
9 | XDHT
10 | XLan
11 | XMan
12 | XNetCrypto
13 | XNetCryptoOut
14 | XOnion
15 | XRoutes
16 | XPing
17 | XRefresh
18 | XJabber
19 | XTCP
20 | XMisc
21 | XNodeinfoSearch
22 | XUnexpected -- Used only for special anomalous errors that we didn't expect to happen.
23 | XUnused -- Never commit code that uses XUnused.
24 deriving (Eq, Ord, Show, Read, Enum, Bounded,Typeable)
diff --git a/tox-crypto/tox-crypto.cabal b/tox-crypto/tox-crypto.cabal
new file mode 100644
index 00000000..9737e5d9
--- /dev/null
+++ b/tox-crypto/tox-crypto.cabal
@@ -0,0 +1,59 @@
1-- Initial tox-crypto.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: tox-crypto
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: Crypto.Tox
20 -- other-modules:
21 other-extensions: CPP
22 , GeneralizedNewtypeDeriving
23 , ScopedTypeVariables
24 , KindSignatures
25 , DeriveDataTypeable
26 , DeriveFunctor
27 , DeriveGeneric
28 , DeriveTraversable
29 , TypeOperators
30 , MagicHash
31 , UnboxedTuples
32 , BangPatterns
33 , MultiParamTypeClasses
34 , ConstraintKinds
35 , Rank2Types
36 , NamedFieldPuns
37 , PatternSynonyms
38 , FlexibleContexts
39 build-depends:
40 base
41 , cpu
42 , memory
43 , base64-bytestring
44 , base16-bytestring
45 , cereal
46 , word64-map
47 , contravariant
48 , rank2classes
49 , network
50 , bytestring
51 , stm
52 , ghc-prim
53 , time
54 , cryptonite
55 , dput-hslogger
56 , hashable
57 , minmax-psq
58 hs-source-dirs: src
59 default-language: Haskell2010
diff --git a/word64-map/CHANGELOG.md b/word64-map/CHANGELOG.md
new file mode 100644
index 00000000..d325ac08
--- /dev/null
+++ b/word64-map/CHANGELOG.md
@@ -0,0 +1,5 @@
1# Revision history for word64-map
2
3## 0.1.0.0 -- YYYY-mm-dd
4
5* First version. Released on an unsuspecting world.
diff --git a/word64-map/LICENSE b/word64-map/LICENSE
new file mode 100644
index 00000000..e8eaef49
--- /dev/null
+++ b/word64-map/LICENSE
@@ -0,0 +1,30 @@
1Copyright (c) 2019, James Crayne
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of James Crayne nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/word64-map/Setup.hs b/word64-map/Setup.hs
new file mode 100644
index 00000000..9a994af6
--- /dev/null
+++ b/word64-map/Setup.hs
@@ -0,0 +1,2 @@
1import Distribution.Simple
2main = defaultMain
diff --git a/src/Data/Word64Map.hs b/word64-map/src/Data/Word64Map.hs
index adc9c27e..adc9c27e 100644
--- a/src/Data/Word64Map.hs
+++ b/word64-map/src/Data/Word64Map.hs
diff --git a/word64-map/word64-map.cabal b/word64-map/word64-map.cabal
new file mode 100644
index 00000000..938d2e22
--- /dev/null
+++ b/word64-map/word64-map.cabal
@@ -0,0 +1,26 @@
1-- Initial word64-map.cabal generated by cabal init. For further
2-- documentation, see http://haskell.org/cabal/users-guide/
3
4name: word64-map
5version: 0.1.0.0
6-- synopsis:
7-- description:
8license: BSD3
9license-file: LICENSE
10author: James Crayne
11maintainer: jim.crayne@gmail.com
12-- copyright:
13-- category:
14build-type: Simple
15extra-source-files: CHANGELOG.md
16cabal-version: >=1.10
17
18library
19 exposed-modules: Data.Word64Map
20 -- other-modules:
21 other-extensions: RankNTypes, ScopedTypeVariables, UnboxedTuples
22 build-depends:
23 base
24 , containers
25 hs-source-dirs: src
26 default-language: Haskell2010