From 2da338bb8d39b8c4a1c90ff346edd46bb2ca412e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 21 Nov 2016 21:45:56 -0400 Subject: [PATCH] detect EOF on socket and cleanly shutdown the service process --- Remote/Helper/P2P/IO.hs | 4 ++-- RemoteDaemon/Transport/Tor.hs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Remote/Helper/P2P/IO.hs b/Remote/Helper/P2P/IO.hs index 9cd2face33..76d07a11cf 100644 --- a/Remote/Helper/P2P/IO.hs +++ b/Remote/Helper/P2P/IO.hs @@ -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 diff --git a/RemoteDaemon/Transport/Tor.hs b/RemoteDaemon/Transport/Tor.hs index 8e27bc7dd3..f28a2c6fdc 100644 --- a/RemoteDaemon/Transport/Tor.hs +++ b/RemoteDaemon/Transport/Tor.hs @@ -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"