aboutsummaryrefslogtreecommitdiff
path: root/Remote/External.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Remote/External.hs')
-rw-r--r--Remote/External.hs15
1 files changed, 14 insertions, 1 deletions
diff --git a/Remote/External.hs b/Remote/External.hs
index 5a1e7f210..bff74c3b1 100644
--- a/Remote/External.hs
+++ b/Remote/External.hs
@@ -505,7 +505,8 @@ withExternalState external = bracket alloc dealloc
dealloc st = liftIO $ atomically $ modifyTVar' v (st:)
-{- Starts an external remote process running, and checks VERSION. -}
+{- Starts an external remote process running, and checks VERSION and
+ - exchanges EXTENSIONS. -}
startExternal :: External -> Annex ExternalState
startExternal external = do
errrelayer <- mkStderrRelayer
@@ -514,6 +515,18 @@ startExternal external = do
(const Nothing)
(checkVersion st external)
(const Nothing)
+ sendMessage st external (EXTENSIONS supportedExtensionList)
+ -- It responds with a EXTENSIONS_RESPONSE; that extensions list
+ -- is reserved for future expansion. UNSUPPORTED_REQUEST is also
+ -- accepted.
+ receiveMessage st external
+ (\resp -> case resp of
+ EXTENSIONS_RESPONSE _ -> Just (return ())
+ UNSUPPORTED_REQUEST -> Just (return ())
+ _ -> Nothing
+ )
+ (const Nothing)
+ (const Nothing)
return st
where
start errrelayer g = liftIO $ do