diff options
author | Joey Hess <joey@kitenet.net> | 2013-12-27 02:49:10 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-12-27 02:49:10 -0400 |
commit | 8ad91f287cf87b3a5a849d997de35210a0e9f2b7 (patch) | |
tree | 0850980711d834864512c2ef04ea0adf7bed0703 /Remote/External | |
parent | d0d51528d0d90c218173593db17de1a480e0b15e (diff) |
don't send PREPARE before INITREMOTE
That complicated special remote programs, because they had to avoid making
PREPARE fail if some configuration is missing, because the remote might not
be initialized yet. Instead, complicate git-annex slightly by only sending
PREPARE immediately before some other request other than INITREMOTE (or
PREPARE of course).
Diffstat (limited to 'Remote/External')
-rw-r--r-- | Remote/External/Types.hs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Remote/External/Types.hs b/Remote/External/Types.hs index 873c5c438..4000f3f49 100644 --- a/Remote/External/Types.hs +++ b/Remote/External/Types.hs @@ -18,6 +18,7 @@ module Remote.External.Types ( Sendable(..), Receivable(..), Request(..), + needsPREPARE, Response(..), RemoteRequest(..), RemoteResponse(..), @@ -60,6 +61,7 @@ data ExternalState = ExternalState { externalSend :: Handle , externalReceive :: Handle , externalPid :: ProcessHandle + , externalPrepared :: Bool } -- Constructor is not exported, and only created by newExternal. @@ -98,6 +100,12 @@ data Request | REMOVE Key deriving (Show) +-- Does PREPARE need to have been sent before this request? +needsPREPARE :: Request -> Bool +needsPREPARE PREPARE = False +needsPREPARE INITREMOTE = False +needsPREPARE _ = True + instance Sendable Request where formatMessage PREPARE = ["PREPARE"] formatMessage INITREMOTE = ["INITREMOTE"] |