summaryrefslogtreecommitdiff
path: root/RemoteDaemon
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-12-24 12:12:58 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-12-24 12:14:14 -0400
commit856fa66695468e890749279e0b8ddfe60283f112 (patch)
treecbd92ef3e0b2ed36053cdde73f8a076ce801f7f8 /RemoteDaemon
parentbb54ad98f274b180d2496069fffd3f83941875ca (diff)
refactor
Diffstat (limited to 'RemoteDaemon')
-rw-r--r--RemoteDaemon/Transport/Tor.hs22
1 files changed, 3 insertions, 19 deletions
diff --git a/RemoteDaemon/Transport/Tor.hs b/RemoteDaemon/Transport/Tor.hs
index 0fbe9a720..e7d3794d6 100644
--- a/RemoteDaemon/Transport/Tor.hs
+++ b/RemoteDaemon/Transport/Tor.hs
@@ -14,7 +14,6 @@ import Annex.ChangedRefs
import RemoteDaemon.Types
import RemoteDaemon.Common
import Utility.Tor
-import Utility.FileMode
import Utility.AuthToken
import P2P.Protocol as P2P
import P2P.IO
@@ -33,7 +32,6 @@ import System.Log.Logger (debugM)
import Control.Concurrent.STM
import Control.Concurrent.STM.TBMQueue
import Control.Concurrent.Async
-import qualified Network.Socket as S
-- Run tor hidden service.
server :: TransportHandle -> IO ()
@@ -48,30 +46,16 @@ server th@(TransportHandle (LocalRepo r) _) = do
replicateM_ maxConnections $
forkIO $ forever $ serveClient th u r q
- nukeFile sock
- soc <- S.socket S.AF_UNIX S.Stream S.defaultProtocol
- S.bind soc (S.SockAddrUnix sock)
- -- Allow everyone to read and write to the socket; tor
- -- is probably running as a different user.
- -- Connections have to authenticate to do anything,
- -- so it's fine that other local users can connect to the
- -- socket.
- modifyFileMode sock $ addModes
- [groupReadMode, groupWriteMode, otherReadMode, otherWriteMode]
-
- S.listen soc 2
debugM "remotedaemon" "Tor hidden service running"
- forever $ do
- (conn, _) <- S.accept soc
- h <- setupHandle conn
+ serveUnixSocket sock $ \conn -> do
ok <- atomically $ ifM (isFullTBMQueue q)
( return False
, do
- writeTBMQueue q h
+ writeTBMQueue q conn
return True
)
unless ok $ do
- hClose h
+ hClose conn
warningIO "dropped Tor connection, too busy"
go _ Nothing = debugM "remotedaemon" "Tor hidden service not enabled"