detect EOF on socket and cleanly shutdown the service process
authorJoey Hess <joeyh@joeyh.name>
Tue, 22 Nov 2016 01:45:56 +0000 (21:45 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 22 Nov 2016 01:45:56 +0000 (21:45 -0400)
Remote/Helper/P2P/IO.hs
RemoteDaemon/Transport/Tor.hs

index 9cd2face3394e5a463192c93e887962fd49c6adb..76d07a11cf4063d0e7ab52ab0c0a1dfdaeb3f465 100644 (file)
@@ -168,14 +168,14 @@ relayHelper runner v hin = loop
                                return (Just exitcode)
 
 -- Takes input from the peer, and puts it into the MVar for processing.
--- Repeats until the peer tells it it's done.
+-- Repeats until the peer tells it it's done or hangs up.
 relayFeeder :: RunProto -> MVar RelayData -> IO ()
 relayFeeder runner v = loop
   where
        loop = do
                mrd <- runner $ net relayFromPeer
                case mrd of
-                       Nothing -> return ()
+                       Nothing -> putMVar v (RelayDone (ExitFailure 1))
                        Just rd -> do
                                putMVar v rd
                                case rd of
index 8e27bc7dd31cc9eb0180c0d2d111ef55eef43332..f28a2c6fdc4c12af75def1e45ae839581ee5fe47 100644 (file)
@@ -47,3 +47,4 @@ server th@(TransportHandle (LocalRepo r) _) = do
                        h <- torHandle conn
                        _ <- runNetProtoHandle h h r (serve u)
                        hClose h
+                       debugM "remotedaemon" "done handling a connection"