fix nested exception bug
Fix reversion introduced in version 6.20180316 that caused git-annex to stop processing files when unable to contact a ssh remote. The bug was not in any of the changed lines, but this one in inAnnex: P2PHelper.checkpresent (Ssh.runProto rmt connpool (cantCheck rmt) fallback) key cantCheck throws an exception, but that parameter to runProto expects a value, which it returns. So, inAnnex is returning a Bool containing an exception. This defeats the usual checks for checkPresent throwing an exception, crashing git-annex. Fixed by making runProto take an `Annex a` instead of an `a`, so passing cantCheck to it doesn't nest exceptions. This commit was sponsored by andrea rota.
This commit is contained in:
parent
edd257dcfb
commit
9f3a346f25
4 changed files with 19 additions and 6 deletions
|
@ -321,8 +321,8 @@ newStderrHandler errh = do
|
|||
|
||||
-- Runs a P2P Proto action on a remote when it supports that,
|
||||
-- otherwise the fallback action.
|
||||
runProto :: Remote -> P2PSshConnectionPool -> a -> Annex a -> P2P.Proto a -> Annex (Maybe a)
|
||||
runProto r connpool bad fallback proto = Just <$>
|
||||
runProto :: Remote -> P2PSshConnectionPool -> Annex a -> Annex a -> P2P.Proto a -> Annex (Maybe a)
|
||||
runProto r connpool badproto fallback proto = Just <$>
|
||||
(getP2PSshConnection r connpool >>= maybe fallback go)
|
||||
where
|
||||
go c = do
|
||||
|
@ -333,7 +333,7 @@ runProto r connpool bad fallback proto = Just <$>
|
|||
return res
|
||||
-- Running the proto failed, either due to a protocol
|
||||
-- error or a network error.
|
||||
Nothing -> return bad
|
||||
Nothing -> badproto
|
||||
|
||||
runProtoConn :: P2P.Proto a -> P2PSshConnection -> Annex (P2PSshConnection, Maybe a)
|
||||
runProtoConn _ P2P.ClosedConnection = return (P2P.ClosedConnection, Nothing)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue