aboutsummaryrefslogtreecommitdiff
path: root/RemoteDaemon
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-12-24 12:07:15 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-12-24 12:07:15 -0400
commiteb32db78ac832f38ba6d2bc1a8b1ddb6d038ab13 (patch)
tree1718cf2d32406547d3e56d96713a954d45fe14dd /RemoteDaemon
parent6c089cff615bc44ca94cc4ca77dc69f281dd2ab8 (diff)
Revert "close"
This reverts commit 6c089cff615bc44ca94cc4ca77dc69f281dd2ab8. Commit contained incomplete work.
Diffstat (limited to 'RemoteDaemon')
-rw-r--r--RemoteDaemon/Transport/Tor.hs16
1 files changed, 15 insertions, 1 deletions
diff --git a/RemoteDaemon/Transport/Tor.hs b/RemoteDaemon/Transport/Tor.hs
index 43ff3a2c1..0fbe9a720 100644
--- a/RemoteDaemon/Transport/Tor.hs
+++ b/RemoteDaemon/Transport/Tor.hs
@@ -48,8 +48,22 @@ 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"
- serveUnixSocket sock $ \conn -> do
+ forever $ do
+ (conn, _) <- S.accept soc
+ h <- setupHandle conn
ok <- atomically $ ifM (isFullTBMQueue q)
( return False
, do